Ignore:
Timestamp:
02/27/06 18:39:47 (19 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r663 r664  
    3737int VspBspTree::sFrontAndBackId = 0; 
    3838 
    39 bool VspBspTraversalData::sBreathFirstSplits = false; 
    4039 
    4140 
     
    130129        environment->GetBoolValue("VspBspTree.useSplitCostQueue", mUseSplitCostQueue); 
    131130        environment->GetBoolValue("VspBspTree.simulateOctree", mSimulateOctree); 
    132         environment->GetBoolValue("VspBspTree.breathFirstSplits", VspBspTraversalData::sBreathFirstSplits); 
     131        environment->GetBoolValue("VspBspTree.useRandomAxis", mUseRandomAxis); 
     132        environment->GetBoolValue("VspBspTree.breathFirstSplits", mBreathFirstSplits); 
    133133 
    134134        char subdivisionStatsLog[100]; 
     
    162162        Debug << "use split cost queue: " << mUseSplitCostQueue << endl; 
    163163        Debug << "subdivision stats log: " << subdivisionStatsLog << endl; 
    164          
     164        Debug << "use random axis: " << mUseRandomAxis << endl; 
     165        Debug << "breath first splits: " << mBreathFirstSplits << endl; 
     166 
    165167 
    166168        Debug << "Split plane strategy: "; 
     
    463465                                                          geom); 
    464466 
    465         tData.mPriority = mBreathFirstSplits ?  
    466                 (float)-frontData.mDepth : tData.mPvs * tData.mProbability; 
     467        EvalPriority(tData); 
     468         
    467469 
    468470        if (mSimulateOctree) 
     
    494496 
    495497        long startTime = GetTime();      
    496         int nLeaves = 0; 
    497         int nViewCells = 0; 
     498        int nLeaves = 500; 
     499        int nViewCells = 500; 
    498500 
    499501        // used for intermediate time measurements and progress 
     
    538540                } 
    539541 
    540                 if (mCreatedViewCells == nViewCells) 
     542                if (mCreatedViewCells >= nViewCells) 
    541543                { 
    542544                        nViewCells += 500; 
     
    575577                                                          geom); 
    576578 
    577         tData.mPriority = mBreathFirstSplits ?  
    578                 (float)-tData.mDepth : tData.mPvs * tData.mProbability; 
     579         
    579580 
    580581        // compute first split candidate 
     
    744745                        tBackData.mMaxCostMisses = maxCostMisses; 
    745746 
    746                         ComputePriority(tFrontData); 
    747                         ComputePriority(tBackData); 
     747                        EvalPriority(tFrontData); 
     748                        EvalPriority(tBackData); 
    748749 
    749750                        if (1) 
     
    864865                tFrontData.mMaxCostMisses = maxCostMisses; 
    865866                tBackData.mMaxCostMisses = maxCostMisses; 
    866                  
    867                 ComputePriority(tFrontData); 
    868                 ComputePriority(tBackData); 
    869  
    870                 frontData.mPriority = mBreathFirstSplits ?  
    871                 (float)-frontData.mDepth : frontData.mPvs * frontData.mProbability; 
    872         backData.mPriority = mBreathFirstSplits ?  
    873                 (float)-backData.mDepth : backData.mPvs * backData.mProbability; 
     867                         
    874868                if (1) 
    875869                { 
     
    951945 
    952946        return newNode; 
     947} 
     948 
     949 
     950void VspBspTree::EvalPriority(VspBspTraversalData &tData) const 
     951{ 
     952    tData.mPriority = mBreathFirstSplits ?  
     953                (float)-tData.mDepth : tData.mPvs * tData.mProbability; 
    953954} 
    954955 
     
    13561357        int sAxis = 0; 
    13571358 
    1358         bool useSpecialAxis = false; 
    1359  
    1360         if (mSimulateOctree) 
    1361         { 
     1359        bool useSpecialAxis = mOnlyDrivingAxis || mUseRandomAxis || mSimulateOctree; 
     1360 
     1361        // use some kind of specialised fixed axis 
     1362        if (mOnlyDrivingAxis) 
     1363                sAxis = box.Size().DrivingAxis(); 
     1364        else if (mUseRandomAxis) 
     1365                sAxis = Random(3); 
     1366        else if (mSimulateOctree) 
    13621367                sAxis = tData.mAxis; 
    1363                 useSpecialAxis = true; 
    1364         } 
    1365         else if (mUseRandomAxis) 
    1366         { 
    1367                 sAxis = Random(3); 
    1368                 useSpecialAxis = true; 
    1369         } 
    1370         else if (mOnlyDrivingAxis) 
    1371         { 
    1372                 sAxis = box.Size().DrivingAxis(); 
    1373                 useSpecialAxis = true; 
    1374         } 
     1368                 
    13751369 
    13761370        for (axis = 0; axis < 3; ++ axis) 
Note: See TracChangeset for help on using the changeset viewer.