Ignore:
Timestamp:
01/01/06 06:25:55 (19 years ago)
Author:
mattausch
Message:

fixed bug in raycasting
added valid view point regions, get view point only from valid regions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/ViewCellsManager.cpp

    r486 r487  
    2121mTotalArea(0.0f) 
    2222{ 
     23        mSceneBox.Initialize(); 
    2324        ParseEnvironment(); 
    2425} 
     
    3031mVisualizationSamples(0) 
    3132{ 
     33        mSceneBox.Initialize(); 
    3234        ParseEnvironment(); 
    3335} 
     
    8183 
    8284 
     85bool ViewCellsManager::GetViewPoint(Vector3 &viewPoint) const 
     86{ 
     87        viewPoint = mSceneBox.GetRandomPoint(); 
     88 
     89        return true; 
     90} 
     91 
     92 
    8393void ViewCellsManager::ComputeSampleContributions(const VssRayContainer &rays) 
    8494{ 
     
    8898   
    8999        VssRayContainer::const_iterator it, it_end = rays.end(); 
    90         int i = 0;       
     100 
    91101        for (it = rays.begin(); it != it_end; ++ it)  
    92         {       Debug << "here " << i ++ << endl; 
     102        {        
    93103                ComputeSampleContributions(*(*it)); 
    94                 Debug << "**" << endl; 
    95104        } 
    96105} 
     
    104113 
    105114        for (it = mViewCells.begin(); it != it_end; ++ it) 
     115        { 
    106116                (*it)->UpdateViewCellsStats(mViewCellsStats); 
     117        } 
    107118} 
    108119 
     
    295306 
    296307 
     308void ViewCellsManager::SetViewSpaceBox(const AxisAlignedBox3 &box) 
     309{ 
     310        mSceneBox = box; 
     311} 
     312 
     313 
    297314void ViewCellsManager::ResetViewCells() 
    298315{ 
     
    432449 
    433450int BspViewCellsManager::Construct(const ObjectContainer &objects,  
    434                                                                    const VssRayContainer &rays, 
    435                                                                    AxisAlignedBox3 *sceneBbox) 
     451                                                                   const VssRayContainer &rays) 
    436452{ 
    437453        // if view cells were already constructed 
     
    10241040 
    10251041int KdViewCellsManager::Construct(const ObjectContainer &objects,  
    1026                                                                   const VssRayContainer &rays, 
    1027                                                                   AxisAlignedBox3 *sceneBbox) 
     1042                                                                  const VssRayContainer &rays) 
    10281043{ 
    10291044        // if view cells already constructed 
     
    13091324 
    13101325int VspKdViewCellsManager::Construct(const ObjectContainer &objects,  
    1311                                                                          const VssRayContainer &rays, 
    1312                                                                          AxisAlignedBox3 *sceneBbox) 
     1326                                                                         const VssRayContainer &rays) 
    13131327{ 
    13141328        // if view cells already constructed 
     
    13271341                  << (int)constructionRays.size() << " samples" << endl; 
    13281342 
    1329         mVspKdTree->Construct(constructionRays, sceneBbox); 
     1343        mVspKdTree->Construct(constructionRays, &mSceneBox); 
    13301344        Debug << mVspKdTree->GetStatistics() << endl; 
    13311345 
     
    16841698 
    16851699int VspBspViewCellsManager::Construct(const ObjectContainer &objects,  
    1686                                                                           const VssRayContainer &rays, 
    1687                                                                           AxisAlignedBox3 *sceneBbox) 
     1700                                                                          const VssRayContainer &rays) 
    16881701{ 
    16891702        // if view cells were already constructed 
     
    16971710 
    16981711        GetRaySets(rays, mConstructionSamples, constructionRays, &savedRays); 
    1699          
     1712 
    17001713        Debug << "construction rays: " << (int)savedRays.size() << endl; 
    17011714        Debug << "saved rays: " << (int)constructionRays.size() << endl; 
    17021715 
    1703         mVspBspTree->Construct(constructionRays, sceneBbox); 
     1716        mVspBspTree->Construct(constructionRays, &mSceneBox); 
     1717 
    17041718        Debug << mVspBspTree->GetStatistics() << endl; 
    1705  
    17061719        ResetViewCells(); 
    17071720 
     
    19321945         
    19331946 
     1947bool VspBspViewCellsManager::GetViewPoint(Vector3 &viewPoint) const 
     1948{ 
     1949        if (!ViewCellsConstructed()) 
     1950                return ViewCellsManager::GetViewPoint(viewPoint); 
     1951 
     1952        const int limit = 10; 
     1953 
     1954        for (int i = 0; i < limit; ++ i) 
     1955        { 
     1956                viewPoint = mSceneBox.GetRandomPoint(); 
     1957                if (mVspBspTree->ViewPointValid(viewPoint)) 
     1958                        return true; 
     1959        } 
     1960 
     1961        return false; 
     1962} 
     1963 
    19341964void VspBspViewCellsManager::ExportSplits(const ObjectContainer &objects, 
    19351965                                                                                  const VssRayContainer &rays) 
Note: See TracChangeset for help on using the changeset viewer.