Ignore:
Timestamp:
04/23/07 16:19:30 (17 years ago)
Author:
mattausch
Message:

implemented part of rendering estimation of wimmer et al. for view space / object space subdivision.
warning: not working with undersampling estimation + local visibility based subdivision.

File:
1 edited

Legend:

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

    r2176 r2332  
    1515// $$JB HACK 
    1616#define KD_PVS_AREA (1e-5f) 
     17 
     18#define TYPE_INTERIOR -2 
     19#define TYPE_LEAF -3 
     20 
    1721 
    1822namespace GtpVisibilityPreprocessor { 
     
    10981102} 
    10991103 
    1100 int 
    1101 KdTree::CollectLeafPvs() 
    1102 { 
    1103  
    1104         // matt: no more kd pvs 
    1105     int totalPvsSize = 0; 
    1106         /* 
    1107   stack<KdNode *> nodeStack; 
    1108    
    1109   nodeStack.push(mRoot); 
    1110    
    1111   while (!nodeStack.empty()) { 
    1112     KdNode *node = nodeStack.top(); 
    1113     nodeStack.pop(); 
    1114     if (node->IsLeaf()) { 
    1115       KdLeaf *leaf = (KdLeaf *)node; 
    1116       for (int j=0; j < leaf->mObjects.size(); j++) { 
    1117         Intersectable *object = leaf->mObjects[j]; 
    1118         if (!object->Mailed()) { 
    1119           object->Mail(); 
    1120           // add this node to pvs of all nodes it can see 
    1121           KdPvsMap::iterator ni = object->mKdPvs.mEntries.begin(); 
    1122           for (; ni != object->mKdPvs.mEntries.end(); ni++) { 
    1123             KdNode *node = (*ni).first; 
    1124             // $$ JB TEMPORARY solution -> should add object PVS or explictly computed 
    1125             // kd tree PVS 
    1126                 float contribution; 
    1127                 if (leaf->mKdPvs.AddSample(node, 1.0f, contribution)) 
    1128               totalPvsSize++; 
    1129           } 
    1130         } 
    1131       } 
    1132     } else { 
    1133       KdInterior *interior = (KdInterior *)node; 
    1134       nodeStack.push(interior->mFront); 
    1135       nodeStack.push(interior->mBack); 
    1136     } 
    1137   } 
    1138 */ 
    1139   return totalPvsSize; 
    1140 } 
    1141  
    11421104 
    11431105KdNode * 
     
    12231185 
    12241186 
    1225 #define TYPE_INTERIOR -2 
    1226 #define TYPE_LEAF -3 
    1227  
    1228  
    12291187void KdTree::ExportBinLeaf(OUT_STREAM &stream, KdLeaf *leaf) 
    12301188{ 
     
    13191277        OUT_STREAM stream(filename.c_str(), OUT_BIN_MODE); 
    13201278         
    1321         //if (!stream.is_open()) return false; 
     1279        if (!stream.is_open()) return false; 
    13221280 
    13231281        // export binary version of mesh 
     
    14001358        DEL_PTR(mRoot); 
    14011359   
    1402         KdNode *node = LoadNextNode(stream, NULL, objects); 
    1403         mRoot = node; 
    1404  
    1405         tStack.push(TraversalData(node, mBox, 0)); 
     1360        mRoot = LoadNextNode(stream, NULL, objects); 
     1361 
     1362        tStack.push(TraversalData(mRoot, mBox, 0)); 
    14061363        mStat.Reset(); 
    14071364        mStat.nodes = 1; 
Note: See TracChangeset for help on using the changeset viewer.