Ignore:
Timestamp:
10/27/06 03:05:49 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r1684 r1686  
    131131} 
    132132 
     133 
    133134void BvhLeaf::CollectObjects(ObjectContainer &objects) 
    134135{ 
    135         ObjectContainer::const_iterator oit, oit_end = objects.end(); 
    136         for (oit = objects.begin(); oit != oit_end; ++ oit) 
     136        ObjectContainer::const_iterator oit, oit_end = mObjects.end(); 
     137        for (oit = mObjects.begin(); oit != oit_end; ++ oit) 
    137138        { 
    138139                objects.push_back(*oit); 
     
    330331        return nRays; 
    331332} 
    332  
    333  
    334 void BvHierarchy::UpdateNode(const BvhSubdivisionCandidate &sc) 
    335 { 
    336         BvhInterior *node = NULL;//sc->mParentData.mNode; 
    337         //AssociateObjectsWithLeaf(node->GetBack()); 
    338         //AssociateObjectsWithLeaf(node->GetFront()); 
    339     
    340         node->mRenderCostDecr = sc.GetRenderCostDecrease(); 
    341         node->mPvsEntriesIncr = sc.GetPvsEntriesIncr(); 
    342 } 
    343333                                                                         
    344334 
     
    906896                else 
    907897                { 
    908                         // just add up areas of the object bbs 
     898                        // just add up areas of the objects itself 
    909899                        // (as we are not sampling volumetric visibility, 
    910900                        // this should provide better heuristics 
    911                         const float area = obox.SurfaceArea(); 
     901                        const float area = //obox.SurfaceArea(); 
    912902 
    913903                        al += area; 
     
    19051895        //-- add first candidate for object space partition      
    19061896 
    1907         BvhSubdivisionCandidate *oSubdivisionCandidate =  
    1908                 new BvhSubdivisionCandidate(oData); 
    1909  
     1897        BvhSubdivisionCandidate *oSubdivisionCandidate = new BvhSubdivisionCandidate(oData); 
     1898 
     1899        // evaluate priority 
    19101900        EvalSubdivisionCandidate(*oSubdivisionCandidate); 
    19111901        bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate); 
     
    21152105float BvHierarchy::GetMemUsage() const 
    21162106{ 
    2117         return (float) 
    2118                  (sizeof(BvHierarchy) 
    2119                   + mBvhStats.Leaves() * sizeof(BvhLeaf)  
    2120                   + mBvhStats.Interior() * sizeof(BvhInterior) 
    2121                   ) / (1024.0f * 1024.0f); 
    2122 } 
    2123  
    2124  
    2125 SubdivisionCandidate *BvHierarchy::CreateSubdivisionCandidate(BvhInterior *oldNode) 
    2126 { 
    2127         return new BvhSubdivisionCandidate(BvhTraversalData()); 
    2128 } 
    2129  
    2130  
    2131 BvhNode *BvHierarchy::SubdivideAndCopy(SplitQueue &tQueue, 
    2132                                                                            SubdivisionCandidate *splitCandidate, 
    2133                                                                            const bool globalCriteriaMet, 
    2134                                                                            BvhNode *originalNode) 
    2135 { 
    2136         BvhSubdivisionCandidate *sc = dynamic_cast<BvhSubdivisionCandidate *>(splitCandidate); 
     2107        return (float)(sizeof(BvHierarchy) 
     2108                                   + mBvhStats.Leaves() * sizeof(BvhLeaf)  
     2109                                   + mBvhStats.Interior() * sizeof(BvhInterior) 
     2110                                   ) / float(1024 * 1024); 
     2111} 
     2112 
     2113 
     2114BvhNode *BvHierarchy::SubdivideAndCopy(SplitQueue &tQueue,  
     2115                                                                           SubdivisionCandidate *splitCandidate) 
     2116{ 
     2117        BvhSubdivisionCandidate *sc =  
     2118                dynamic_cast<BvhSubdivisionCandidate *>(splitCandidate); 
    21372119        BvhTraversalData &tData = sc->mParentData; 
    21382120 
     
    21492131                         
    21502132                BvhInterior *oldInterior = dynamic_cast<BvhInterior *>(oldNode); 
    2151                 //sc->SetSplitPlane(oldInterior->mSplitPlane); 
    2152  
     2133                 
    21532134                oldInterior->GetFront()->CollectObjects(sc->mFrontObjects); 
    21542135                oldInterior->GetBack()->CollectObjects(sc->mBackObjects); 
    2155                 EvalSubdivisionCandidate(*sc); 
     2136                 
     2137                // evaluate the changes in render cost and pvs entries 
     2138                EvalSubdivisionCandidate(*sc, false); 
    21562139 
    21572140                // create new interior node and two leaf node 
    21582141                currentNode = SubdivideNode(*sc, tFrontData, tBackData); 
    21592142         
    2160                 // evaluate the changes in render cost and pvs entries 
    2161                 EvalSubdivisionCandidate(*sc, false); 
    2162  
    21632143                currentNode->mRenderCostDecr = oldNode->mRenderCostDecr + sc->GetRenderCostDecrease(); 
    21642144                currentNode->mPvsEntriesIncr = oldNode->mPvsEntriesIncr + sc->GetPvsEntriesIncr(); 
Note: See TracChangeset for help on using the changeset viewer.