Ignore:
Timestamp:
10/02/06 08:38:25 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r1522 r1548  
    16631663        mBvhStats.Reset(); 
    16641664        mBvhStats.Start(); 
    1665  
    16661665        mBvhStats.nodes = 1; 
    16671666                 
     
    16691668        BvhSubdivisionCandidate::sBvHierarchy = this; 
    16701669         
     1670        // create new root 
     1671        CreateRoot(objects); 
     1672 
    16711673        // compute bounding box from objects 
    1672         // note: we assume that root was already created 
    16731674        mBoundingBox = mRoot->GetBoundingBox(); 
    1674         BvhLeaf *bvhleaf = dynamic_cast<BvhLeaf *>(mRoot); 
     1675        BvhLeaf *bvhLeaf = dynamic_cast<BvhLeaf *>(mRoot); 
    16751676 
    16761677        // multiply termination criterium for comparison, 
     
    16931694 
    16941695        // create bvh traversal data 
    1695         BvhTraversalData oData(bvhleaf, 0, prop, nRays); 
     1696        BvhTraversalData oData(bvhLeaf, 0, prop, nRays); 
    16961697 
    16971698        // create sorted object lists for the first data 
     
    17091710 
    17101711        EvalSubdivisionCandidate(*oSubdivisionCandidate); 
    1711         bvhleaf->SetSubdivisionCandidate(oSubdivisionCandidate); 
     1712        bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate); 
    17121713 
    17131714        const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume(); 
     
    17841785 
    17851786 
     1787SubdivisionCandidate *BvHierarchy::Reset(const VssRayContainer &sampleRays,  
     1788                                                                                 const ObjectContainer &objects) 
     1789{ 
     1790        // reset stats 
     1791        mBvhStats.Reset(); 
     1792        mBvhStats.Start(); 
     1793        mBvhStats.nodes = 1; 
     1794 
     1795        // reset root 
     1796        DEL_PTR(mRoot); 
     1797        CreateRoot(objects); 
     1798         
     1799#if PROBABILIY_IS_BV_VOLUME 
     1800        mTermMinProbability *= mBoundingBox.GetVolume(); 
     1801        // probability that bounding volume is seen 
     1802        const float prop = GetBoundingBox().GetVolume(); 
     1803#else 
     1804        mTermMinProbability *= mVspTree->GetBoundingBox().GetVolume(); 
     1805        // probability that volume is "seen" from the view cells 
     1806        const float prop = EvalViewCellsVolume(objects); 
     1807#endif 
     1808 
     1809        const int nRays = CountRays(objects); 
     1810        BvhLeaf *bvhLeaf = dynamic_cast<BvhLeaf *>(mRoot); 
     1811 
     1812        // create bvh traversal data 
     1813        BvhTraversalData oData(bvhLeaf, 0, prop, nRays); 
     1814 
     1815        /////////////////// 
     1816        //-- add first candidate for object space partition      
     1817 
     1818        BvhSubdivisionCandidate *oSubdivisionCandidate =  
     1819                new BvhSubdivisionCandidate(oData); 
     1820 
     1821        EvalSubdivisionCandidate(*oSubdivisionCandidate); 
     1822        bvhLeaf->SetSubdivisionCandidate(oSubdivisionCandidate); 
     1823 
     1824        const float viewSpaceVol = mHierarchyManager->GetViewSpaceBox().GetVolume(); 
     1825        mTotalCost = (float)objects.size() * prop / viewSpaceVol; 
     1826 
     1827        PrintSubdivisionStats(*oSubdivisionCandidate); 
     1828 
     1829        return oSubdivisionCandidate; 
     1830} 
     1831 
     1832 
    17861833void BvhStatistics::Print(ostream &app) const 
    17871834{ 
Note: See TracChangeset for help on using the changeset viewer.