Ignore:
Timestamp:
08/03/06 17:25:01 (18 years ago)
Author:
szydlowski
Message:

all functions for CHC implemented in KdTreeSceneManager?, however CHC not working yet, many issues to resolve

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTree.cpp

    r1177 r1182  
    332332        { 
    333333#ifdef KDTREE_DEBUG 
    334                 try 
     334                MaterialPtr mp = MaterialManager::getSingleton().getByName("aabbHiLite"); 
     335                if (mp.isNull()) 
    335336                { 
    336337                        ColourValue cv(0.0, 1.0, 0.0); 
     
    339340                        mp->setDiffuse(cv); 
    340341                } 
    341                 catch (Ogre::Exception&) 
    342                 { 
    343                         // SO FUCKING DON'T CARE !!! 
    344                 } 
     342                //try 
     343                //{ 
     344                //      ColourValue cv(0.0, 1.0, 0.0); 
     345                //      MaterialPtr mp = MaterialManager::getSingleton().create("aabbHiLite","General"); 
     346                //      mp->setSelfIllumination(cv); 
     347                //      mp->setDiffuse(cv); 
     348                //} 
     349                //catch (Ogre::Exception&) 
     350                //{ 
     351                //      // SO FUCKING DON'T CARE !!! 
     352                //} 
    345353#endif 
    346354                try 
     
    645653                unsigned long t1, t2, t3, t4; 
    646654                //AxisAlignedBox aabb; 
     655 
     656                mStats.clear(); 
    647657                 
    648658                // data we want to collect 
     
    657667                t3 = timer->getMicroseconds(); // DEBUG 
    658668 
     669                mStats.mNumSceneNodes = nObjects; 
    659670                // <DEBUG> 
    660671                //lm->logMessage("# of perfect splits " + StringConverter::toString(events.size())); 
     
    685696                t4 = timer->getMicroseconds(); // DEBUG 
    686697 
     698                String method = "Invalid"; 
     699                if (mBuildMethod == KDBM_RECURSIVE) 
     700                        method = "Recursive"; 
     701                else if (mBuildMethod == KDBM_PRIORITYQUEUE) 
     702                        method = "Priority Queue"; 
     703 
    687704                mBuildLog->logMessage("######## SAH Statistics ########"); 
     705                mBuildLog->logMessage("Build Method: " + method); 
    688706                mBuildLog->logMessage("Time for events build: " + StringConverter::toString(t2 - t1) + "µs"); 
    689707                mBuildLog->logMessage("Time for events sort: " + StringConverter::toString(t3 - t2) + "µs"); 
    690708                mBuildLog->logMessage("Time for tree build: " + StringConverter::toString(t4 - t3) + "µs"); 
    691709                mBuildLog->logMessage("Total time: " + StringConverter::toString(t4 - t1) + "µs"); 
    692                 mBuildLog->logMessage("######## SAH Statistics ########"); 
    693                 calcCost(); 
     710                mBuildLog->logMessage("Number of Objects: " + StringConverter::toString(mStats.mNumSceneNodes)); 
     711                mBuildLog->logMessage("Number of Leaves: " + StringConverter::toString(mStats.mNumLeaves)); 
     712                mBuildLog->logMessage("Number of Nodes: " + StringConverter::toString(mStats.mNumNodes)); 
     713                mBuildLog->logMessage("Total cost: " + StringConverter::toString(calcCost())); 
     714                mBuildLog->logMessage("################################"); 
    694715        } 
    695716 
     
    847868                                it++; 
    848869                        } 
     870                        // update stats 
     871                        ++ mStats.mNumNodes; 
     872                        ++ mStats.mNumLeaves; 
    849873                        return leaf; 
    850874                } 
     
    930954                                branch->mRight = recBuild(eventsRight, nBothS + nRightS, best.bright, branch); 
    931955                        } 
     956 
     957                        // update stats 
     958                        ++ mStats.mNumNodes; 
    932959 
    933960                        //assert(branch->mRight || branch->mLeft); 
     
    10081035                                if (!topNode) 
    10091036                                        topNode = leaf; 
     1037                                // update stats 
     1038                                ++ mStats.mNumNodes; 
     1039                                ++ mStats.mNumLeaves; 
    10101040                        } 
    10111041 
     
    11721202#endif 
    11731203                                } 
     1204                                // cleanup 
     1205                                else 
     1206                                { 
     1207                                        delete eventsLeft; 
     1208                                } 
    11741209                                if (eventsRight->size() > 0) 
    11751210                                { 
     
    11931228#endif 
    11941229                                } 
     1230                                // cleanup 
     1231                                else 
     1232                                { 
     1233                                        delete eventsRight; 
     1234                                } 
    11951235 
    11961236                                newNode = branch; 
    11971237                                if (!topNode) 
    11981238                                        topNode = branch; 
     1239 
     1240 
     1241                                // update stats 
     1242                                ++ mStats.mNumNodes; 
    11991243                        } 
    12001244 
     
    13851429        } 
    13861430 
    1387         void KdTree::calcCost() 
    1388         { 
    1389                 Real cost = 0; 
     1431        Real KdTree::calcCost() 
     1432        { 
    13901433                if (mKdRoot) 
    1391                         cost = calcCost(mKdRoot, PlaneEvent::surfaceArea(mKdRoot->mAABB)); 
    1392  
    1393                 //LogManager::getSingleton().logMessage("#@#@#@ One KdTree: €" + StringConverter::toString(cost)); 
    1394                 mBuildLog->logMessage("#@#@#@ One KdTree: €" + StringConverter::toString(cost)); 
     1434                        return calcCost(mKdRoot, PlaneEvent::surfaceArea(mKdRoot->mAABB)); 
     1435                else 
     1436                        return 0; 
    13951437        } 
    13961438 
Note: See TracChangeset for help on using the changeset viewer.