Ignore:
Timestamp:
10/10/06 00:59:59 (18 years ago)
Author:
bittner
Message:

support for kd tree based pvs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/GlRenderer.cpp

    r1589 r1594  
    1313#include "IntersectableWrapper.h" 
    1414#include "BvHierarchy.h" 
     15#include "KdTree.h" 
    1516 
    1617//#include <Cg/cg.h> 
     
    7879  mSnapPrefix = "snap/"; 
    7980  mUseForcedColors = false; 
    80  
     81  mRenderBoxes = false; 
    8182  mUseGlLists = true; 
    8283  //mUseGlLists = false; 
     
    108109GlRenderer::RenderIntersectable(Intersectable *object) 
    109110{ 
    110  
     111  if (object->Mailed()) 
     112        return; 
     113  object->Mail(); 
     114   
    111115  glPushAttrib(GL_CURRENT_BIT); 
    112116  if (mUseFalseColors) 
     
    129133  case Intersectable::BVH_INTERSECTABLE: { 
    130134 
     135         
    131136        BvhNode *node = (dynamic_cast<BvhIntersectable *>(object))->GetItem(); 
    132         //      RenderBvhNode(node); 
    133         RenderBox(node->GetBoundingBox()); 
     137 
     138        if (mRenderBoxes) 
     139          RenderBox(node->GetBoundingBox()); 
     140        else 
     141          RenderBvhNode(node); 
     142        break; 
     143  } 
     144  case Intersectable::KD_INTERSECTABLE: { 
     145        KdNode *node = (dynamic_cast<KdIntersectable *>(object))->GetItem(); 
     146 
     147        if (mRenderBoxes) 
     148          RenderBox(mKdTree->GetBox(node)); 
     149        else 
     150          RenderKdNode(node); 
    134151        break; 
    135152  } 
     
    628645        BvhLeaf *leaf = (BvhLeaf *) node; 
    629646        for (int i=0; i < leaf->mObjects.size(); i++) 
    630                 cout << "leaf obj " << i << endl; 
    631           //RenderIntersectable(mObjects[i]); 
     647          RenderIntersectable(leaf->mObjects[i]); 
    632648  } else { 
    633649        BvhInterior *in = (BvhInterior *)node; 
     
    635651        RenderBvhNode(in->GetFront()); 
    636652  } 
    637    
    638 } 
    639  
    640 } 
     653 
     654  //cout << "leaf obj " << i << endl; 
     655 
     656} 
     657 
     658void 
     659GlRenderer::RenderKdNode(KdNode *node) 
     660{ 
     661  if (node->IsLeaf()) { 
     662        KdLeaf *leaf = (KdLeaf *) node; 
     663        for (int i=0; i < leaf->mObjects.size(); i++) { 
     664          RenderIntersectable(leaf->mObjects[i]); 
     665        } 
     666  } else { 
     667        KdInterior *in = (KdInterior *)node; 
     668        RenderKdNode(in->mBack); 
     669        RenderKdNode(in->mFront); 
     670  } 
     671   
     672} 
     673 
     674} 
Note: See TracChangeset for help on using the changeset viewer.