Changeset 1635


Ignore:
Timestamp:
10/18/06 02:32:32 (18 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/Preprocessing/src
Files:
3 edited

Legend:

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

    r1634 r1635  
    520520        // otherwise danger of being stuck in a local minimum!! 
    521521        const float factor = mRenderCostDecreaseWeight; 
    522         const float priority = factor * renderCostDecr + (1.0f - factor) * oldRenderCost; 
     522        float priority; 
     523         
     524        if (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
     525                HierarchyManager::NO_VIEWSPACE_SUBDIV) 
     526        { 
     527                //////////////// 
     528                //-- surface area heuristics 
     529 
     530        //      if (objects.empty()) 
     531        //              return 0.0f; 
     532 
     533                const AxisAlignedBox3 box = EvalBoundingBox(leaf->mObjects); 
     534                const float area = box.SurfaceArea(); 
     535                const float viewSpaceArea = mViewCellsManager->GetViewSpaceBox().SurfaceArea(); 
     536 
     537                priority = (float)leaf->mObjects.size() * area / viewSpaceArea; 
     538        } 
     539        else 
     540        { 
     541                priority = factor * renderCostDecr + (1.0f - factor) * oldRenderCost; 
     542        } 
     543 
    523544#else 
    524545        const float priority = (float)-splitCandidate.mParentData.mDepth; 
     
    13601381float BvHierarchy::EvalRenderCost(const ObjectContainer &objects) const 
    13611382{        
    1362         if (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
    1363                 HierarchyManager::NO_VIEWSPACE_SUBDIV) 
     1383        if (0 &&  
     1384                (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
     1385                HierarchyManager::NO_VIEWSPACE_SUBDIV)) 
    13641386        { 
    13651387                //////////////// 
     
    14501472{ 
    14511473        // no view cells yet 
    1452         if (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
     1474        if (0 && mHierarchyManager->GetViewSpaceSubdivisionType() ==  
    14531475                HierarchyManager::NO_VIEWSPACE_SUBDIV) 
    14541476                return; 
     
    15431565{ 
    15441566        // no view cells yet 
    1545         if (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
     1567        if (0 && mHierarchyManager->GetViewSpaceSubdivisionType() ==  
    15461568                HierarchyManager::NO_VIEWSPACE_SUBDIV) 
    15471569                return 1; 
  • GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp

    r1634 r1635  
    464464        mViewSpaceSubdivisionType = NO_VIEWSPACE_SUBDIV; 
    465465 
     466        // create just one view cell 
     467        SubdivisionCandidate *vspSc =  
     468                PrepareViewSpaceSubdivision(sampleRays, objects); 
     469 
    466470        // start view space subdivison immediately? 
    467471        if (StartViewSpaceSubdivision()) 
     
    469473                // prepare vsp tree for traversal 
    470474                mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 
    471                 SubdivisionCandidate *vspSc =  
    472                         PrepareViewSpaceSubdivision(sampleRays, objects); 
    473475                mTQueue.Push(vspSc); 
    474476        } 
     
    487489                                        sampleRays,  
    488490                                        objects,  
    489                                         forcedViewSpace//,  
    490                                         /*vspSc*/); 
     491                                        forcedViewSpace,//  
     492                                        vspSc); 
    491493         
    492494        cout << "\nfinished in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
     
    699701                                                                           const VssRayContainer &sampleRays, 
    700702                                                                           const ObjectContainer &objects, 
    701                                                                            AxisAlignedBox3 *forcedViewSpace) 
     703                                                                           AxisAlignedBox3 *forcedViewSpace, 
     704                                                                           SubdivisionCandidate *firstVsp) 
    702705{ 
    703706        while (!FinishedConstruction()) 
     
    736739                                 << mMinDepthForViewSpaceSubdivion << ") " << endl; 
    737740 
    738                         SubdivisionCandidate *vspSc = PrepareViewSpaceSubdivision(sampleRays, objects); 
    739                         mTQueue.Push(vspSc); 
     741                        //SubdivisionCandidate *vspSc = PrepareViewSpaceSubdivision(sampleRays, objects); 
     742                        mTQueue.Push(firstVsp); 
    740743 
    741744                        cout << "reseting queue ... "; 
     
    889892        mSavedViewSpaceSubdivisionType = mViewSpaceSubdivisionType; 
    890893        mViewSpaceSubdivisionType = NO_VIEWSPACE_SUBDIV; 
     894         
     895        // first view cell 
     896        SubdivisionCandidate *vspVc = PrepareViewSpaceSubdivision(sampleRays, objects); 
    891897 
    892898        mSavedObjectSpaceSubdivisionType = mObjectSpaceSubdivisionType; 
     
    908914 
    909915                // subdivide object space first 
    910  
    911916                ResetObjectSpaceSubdivision(sampleRays, objects); 
    912917 
     
    920925 
    921926                mSubdivisionStats.close(); 
     927 
    922928                if ((i ++) >= limit) 
    923929                        break; 
     
    980986bool HierarchyManager::ViewSpaceSubdivisionConstructed() const 
    981987{ 
    982         return mVspTree && mVspTree->GetRoot(); 
     988        return mViewSpaceSubdivisionType != NO_VIEWSPACE_SUBDIV; 
     989        //return mVspTree && mVspTree->GetRoot(); 
    983990} 
    984991 
  • GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.h

    r1634 r1635  
    255255                                                 const VssRayContainer &sampleRays, 
    256256                                                 const ObjectContainer &objects, 
    257                                                  AxisAlignedBox3 *forcedViewSpace); 
     257                                                 AxisAlignedBox3 *forcedViewSpace, 
     258                                                 SubdivisionCandidate *firstVsp); 
    258259         
    259260        /** This is for interleaved construction using some objects  
Note: See TracChangeset for help on using the changeset viewer.