Ignore:
Timestamp:
01/11/06 15:50:37 (19 years ago)
Author:
bittner
Message:

per object rss tree support - changes in glrenderer.cpp so tha it compiles; unix2dos on glrenderer.*

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/RssTree.h

    r512 r516  
    300300  // 
    301301  ///////////////////////////////// 
     302 
     303 
     304  // the bbox of the node 
     305  AxisAlignedBox3 bbox; 
     306   
     307  // the bbox of the node 
     308  AxisAlignedBox3 dirBBox; 
     309 
    302310   
    303311  inline RssTreeNode(RssTreeInterior *p); 
     
    333341  RssTreeNode *back, *front; 
    334342 
    335   // the bbox of the node 
    336   AxisAlignedBox3 bbox; 
    337    
    338   // the bbox of the node 
    339   AxisAlignedBox3 dirBBox; 
    340343 
    341344  // data for caching 
     
    611614  ///////////////////////////// 
    612615  // The core pointer 
    613   RssTreeNode *root; 
     616  vector<RssTreeNode *> mRoots; 
     617   
     618   
    614619   
    615620  ///////////////////////////// 
     
    618623  // total number of nodes of the tree 
    619624  int nodes; 
     625 
    620626  // axis aligned bounding box of the scene 
    621627  AxisAlignedBox3 bbox; 
     
    625631 
    626632  // forced bounding box for from viewcell visibility 
    627   AxisAlignedBox3 *mForcedBoundingBox; 
     633  //  AxisAlignedBox3 *mForcedBoundingBox; 
    628634 
    629635  ///////////////////////////// 
     
    652658  float termMaxRayContribution; 
    653659 
    654          
    655660  // randomized construction 
    656661  bool randomize; 
     662 
     663  // use a root per object in the tree 
     664  bool mPerObjectTree; 
    657665   
    658666  // type of the splitting to use fo rthe tree construction 
     
    711719  virtual void 
    712720  Construct( 
    713                         VssRayContainer &rays, 
    714                         AxisAlignedBox3 *forcedBoundingBox = NULL 
     721                        ObjectContainer &objects, 
     722                        VssRayContainer &rays 
     723                        //                      AxisAlignedBox3 *forcedBoundingBox = NULL 
    715724                        ); 
    716725         
     
    849858   
    850859  AxisAlignedBox3 GetBBox(const RssTreeNode *node) const { 
    851     if (node->parent == NULL) 
    852       return bbox; 
    853  
    854     if (!node->IsLeaf()) 
    855       return ((RssTreeInterior *)node)->bbox; 
    856  
    857     if (node->parent->axis >= 3) 
    858       return node->parent->bbox; 
     860        return node->bbox; 
     861 
     862//     if (node->parent == NULL) 
     863//       return bbox; 
     864 
     865//     if (!node->IsLeaf()) 
     866//       return ((RssTreeInterior *)node)->bbox; 
     867 
     868//     if (node->parent->axis >= 3) 
     869//       return node->parent->bbox; 
    859870       
    860     AxisAlignedBox3 box(node->parent->bbox); 
    861     if (node->parent->front == node) 
    862       box.SetMin(node->parent->axis, node->parent->position); 
    863     else 
    864       box.SetMax(node->parent->axis, node->parent->position); 
    865     return box; 
     871//     AxisAlignedBox3 box(node->parent->bbox); 
     872//     if (node->parent->front == node) 
     873//       box.SetMin(node->parent->axis, node->parent->position); 
     874//     else 
     875//       box.SetMax(node->parent->axis, node->parent->position); 
     876//     return box; 
    866877  } 
    867878 
     
    869880 
    870881  AxisAlignedBox3 GetDirBBox(const RssTreeNode *node) const { 
    871  
    872     if (node->parent == NULL) 
    873       return dirBBox; 
     882        return node->dirBBox; 
     883//     if (node->parent == NULL) 
     884//       return dirBBox; 
    874885     
    875     if (!node->IsLeaf() ) 
    876       return ((RssTreeInterior *)node)->dirBBox; 
    877  
    878     if (node->parent->axis < 3) 
    879       return node->parent->dirBBox; 
     886//     if (!node->IsLeaf() ) 
     887//       return ((RssTreeInterior *)node)->dirBBox; 
     888 
     889//     if (node->parent->axis < 3) 
     890//       return node->parent->dirBBox; 
    880891     
    881     AxisAlignedBox3 dBBox(node->parent->dirBBox); 
    882  
    883     if (node->parent->front == node) 
    884       dBBox.SetMin(node->parent->axis - 3, node->parent->position); 
    885     else 
    886       dBBox.SetMax(node->parent->axis - 3, node->parent->position); 
    887     return dBBox; 
     892//     AxisAlignedBox3 dBBox(node->parent->dirBBox); 
     893 
     894//     if (node->parent->front == node) 
     895//       dBBox.SetMin(node->parent->axis - 3, node->parent->position); 
     896//     else 
     897//       dBBox.SetMax(node->parent->axis - 3, node->parent->position); 
     898//     return dBBox; 
    888899  } 
    889900   
     
    978989                  ); 
    979990 
    980   RssTreeNode *GetRoot() const { return root; } 
     991  RssTreeNode *GetRoot(Intersectable *object = NULL) const; 
    981992 
    982993  bool 
     
    10531064                                         vector<RssTreeLeaf::SilhouetteRays> &rays 
    10541065                                         ); 
    1055    
     1066 
     1067  void 
     1068  PushRoots(priority_queue<TraversalData> &stack) const; 
     1069 
     1070  void 
     1071  PushRoots(stack<RssTreeNode *> &st) const; 
     1072 
     1073  void 
     1074  PushRoots(stack<RayTraversalData> &st, RssTreeNode::RayInfo &info) const; 
     1075 
     1076 
    10561077}; 
    10571078 
Note: See TracChangeset for help on using the changeset viewer.