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

Legend:

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

    r1548 r1557  
    608608                                                                                                   const ObjectContainer &objects) 
    609609{ 
    610         switch (mObjectSpaceSubdivisionType) 
    611         { 
    612         case BV_BASED_OBJ_SUBDIV: 
    613         Debug << "old bv hierarchy:\n " << mBvHierarchy->mBvhStats << endl; 
    614                 cout << "\nresetting bv hierarchy" << endl; 
    615                 mHierarchyStats.nodes -= mBvHierarchy->mBvhStats.nodes; 
    616610#if 0    
    617611                DEL_PTR(mBvHierarchy); 
     
    620614 
    621615                PrepareObjectSpaceSubdivision(sampleRays, objects); 
    622 #else 
    623                 mBvHierarchy->Reset(sampleRays, objects); 
     616                return; 
    624617#endif 
    625                 break; 
     618 
     619        if (!ObjectSpaceSubdivisionConstructed()) 
     620        { 
     621                return PrepareObjectSpaceSubdivision(sampleRays, objects); 
     622        } 
     623 
     624        switch (mObjectSpaceSubdivisionType) 
     625        { 
     626        case BV_BASED_OBJ_SUBDIV: 
     627                cout << "\nreseting bv hierarchy" << endl; 
     628        Debug << "old bv hierarchy:\n " << mBvHierarchy->mBvhStats << endl; 
     629         
     630                mHierarchyStats.nodes -= mBvHierarchy->mBvhStats.nodes; 
     631                mTQueue.Push(mBvHierarchy->Reset(sampleRays, objects)); 
     632                mTotalCost = mBvHierarchy->mTotalCost; 
     633                break; 
     634 
    626635        case KD_BASED_OBJ_SUBDIV: 
    627636                // TODO 
     
    630639                break; 
    631640        } 
     641} 
     642 
     643 
     644void HierarchyManager::ResetViewSpaceSubdivision(const VssRayContainer &sampleRays,  
     645                                                                                                 const ObjectContainer &objects) 
     646{ 
     647        DEL_PTR(mBvHierarchy); 
     648        mBvHierarchy = new BvHierarchy(); 
     649        mBvHierarchy->mHierarchyManager = this; 
     650 
     651        PrepareViewSpaceSubdivision(sampleRays, objects); 
     652        return; 
    632653} 
    633654 
     
    639660        mHierarchyStats.Reset(); 
    640661        mHierarchyStats.Start(); 
    641  
    642662        mHierarchyStats.nodes = 2; 
    643663         
    644  
    645664        mTotalCost = (float)objects.size(); 
    646665        Debug << "setting total cost to " << mTotalCost << endl; 
     
    655674        mSavedViewSpaceSubdivisionType = mViewSpaceSubdivisionType; 
    656675        mViewSpaceSubdivisionType = NO_VIEWSPACE_SUBDIV; 
    657  
    658         // start with object space subdivision 
    659         PrepareObjectSpaceSubdivision(sampleRays, objects); 
    660          
    661         // process object space candidates 
    662         RunConstruction(false); 
    663  
    664         mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 
    665  
    666         const int limit = 2; 
    667         for (int i = 0; i < limit; ++ i) 
    668         { 
    669         // again run object space subdivision on the view cells 
     676         
     677        const int limit = 4; 
     678        int i = 0; 
     679 
     680        // render cost optimization 
     681        // start with object space partiton 
     682        // then optimizate view space partition for the current osp 
     683        // and vice versa until iteration depth is reached. 
     684        while (1) 
     685        { 
     686        // first run object space subdivision 
    670687                ResetObjectSpaceSubdivision(sampleRays, objects); 
    671          
     688 
    672689                // process object space candidates 
    673690                RunConstruction(false); 
    674691 
    675                  ///////////////// 
    676                 // now do view space subdivison using the current object space partition 
    677 //              ResetViewSpaceSubdivision(sampleRays, objects); 
    678          
     692                if ((++ i) >= limit) 
     693                        break; 
     694 
     695                ///////////////// 
     696                // do view space subdivison with respect to the object space partition 
     697                ResetViewSpaceSubdivision(sampleRays, objects); 
     698 
    679699                // process view space candidates 
    680700                RunConstruction(false); 
    681          
    682                 cout << "íteration " << i << " of " << limit << " finished" << endl; 
     701                mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 
     702                 
     703                if ((++ i) >= limit) 
     704                        break; 
     705 
     706                cout << "iteration " << i << " of " << limit << " finished" << endl; 
    683707        } 
    684708         
Note: See TracChangeset for help on using the changeset viewer.