Changeset 1784 for GTP/trunk/Lib/Vis


Ignore:
Timestamp:
11/23/06 12:25:16 (18 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/Preprocessing/src
Files:
5 edited

Legend:

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

    r1779 r1784  
    297297        Environment::GetSingleton()->GetBoolValue("BvHierarchy.Construction.useInitialSubdivision", mApplyInitialPartition); 
    298298         
    299         mApplyInitialPartition = true; 
     299        mInitialObjectsSize = 50; 
     300 
    300301        //mMemoryConst = (float)(sizeof(VspLeaf) + sizeof(VspViewCell)); 
    301302        //mMemoryConst = (float)sizeof(BvhLeaf); 
     
    574575        { 
    575576                const bool sufficientSamples =  
    576                         splitCandidate.mParentData.mNumRays > mMinRaysForVisibility; 
     577                                splitCandidate.mParentData.mNumRays > mMinRaysForVisibility; 
    577578 
    578579                const bool useVisibiliyBasedHeuristics =  
    579                         !mUseSah && 
    580                         (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
    581                         HierarchyManager::KD_BASED_VIEWSPACE_SUBDIV) && 
    582                         sufficientSamples; 
     580                                        mUseSah && 
     581                                        (mHierarchyManager->GetViewSpaceSubdivisionType() ==  
     582                                        HierarchyManager::KD_BASED_VIEWSPACE_SUBDIV) && 
     583                                        sufficientSamples; 
    583584 
    584585                // compute best object partition 
     
    13691370 
    13701371        const int numRays = CollectViewCells(tData.mNode->mObjects, viewCells, true, true); 
    1371         //cout << "here4 " << numRays << endl; 
     1372        //cout << "number of rays: " << numRays << endl; 
    13721373 
    13731374        ViewCellContainer::const_iterator vit, vit_end = viewCells.end(); 
     
    14561457        if (mIsInitialSubdivision) 
    14571458        { 
    1458                 ApplyInititialSplit(tData,  
    1459                                                         frontObjects,  
    1460                                                         backObjects); 
    1461  
     1459                ApplyInitialSplit(tData, frontObjects, backObjects); 
    14621460                return 0; 
    14631461        } 
    1464          
    14651462 
    14661463        ObjectContainer nFrontObjects[3]; 
     
    21202117        // only rays intersecting objects in node are interesting 
    21212118        const int nRays = AssociateObjectsWithRays(sampleRays); 
    2122         //Debug << "using " << nRays << " of " << (int)sampleRays.size() << " rays" << endl; 
     2119        //cout << "using " << nRays << " of " << (int)sampleRays.size() << " rays" << endl; 
    21232120 
    21242121        // create bvh traversal data 
     
    21492146        if (mApplyInitialPartition) 
    21502147        { 
     2148                cout << "§§§§§§§§here41 "<<oSubdivisionCandidate->mParentData.mSortedObjects[3]->size()<<endl; 
    21512149                ApplyInitialSubdivision(oSubdivisionCandidate, tQueue);          
    21522150        } 
     
    21912189 
    21922190        *(tData.mSortedObjects[3]) = objects; 
    2193  
    21942191        stable_sort(tData.mSortedObjects[3]->begin(), tData.mSortedObjects[3]->end(), smallerSize); 
    21952192} 
     
    22112208        } 
    22122209 
    2213         for (int i = 0; i < 3; ++ i) 
     2210        for (int i = 0; i < 4; ++ i) 
    22142211        { 
    22152212                frontData.mSortedObjects[i] = new ObjectContainer(); 
     
    25042501 
    25052502        SplitQueue tempQueue; 
    2506  
     2503        tempQueue.Push(firstCandidate); 
    25072504        while (!tempQueue.Empty()) 
    2508         { 
    2509                 SubdivisionCandidate *candidate = tQueue.Top(); 
     2505        {cout << "here2"<<endl; 
     2506                SubdivisionCandidate *candidate = tempQueue.Top(); 
    25102507                tQueue.Pop(); 
    25112508 
    25122509                BvhSubdivisionCandidate *bsc =  
    25132510                        dynamic_cast<BvhSubdivisionCandidate *>(candidate); 
    2514  
     2511                cout << "§§§§§§§§here49 "<< bsc->mParentData.mSortedObjects[3]->size()<<endl; 
     2512cout << "here87 "<<((BvhSubdivisionCandidate *)firstCandidate)->mParentData.mNode->mObjects.size()<<endl; 
    25152513                const bool globalCriteriaMet =  
    25162514                        GlobalTerminationCriteriaMet(bsc->mParentData); 
    2517  
     2515cout << "here5"<<endl; 
    25182516                if (!InitialTerminationCriteriaMet(bsc->mParentData)) 
    2519                 { 
     2517                {cout << "here9"<<bsc->mParentData.mNode->mObjects.size()<<endl; 
    25202518                        BvhNode *node = Subdivide(tempQueue, bsc, globalCriteriaMet); 
    2521  
     2519cout << "here12"<<endl; 
    25222520                        // not needed anymore 
    25232521                        delete bsc; 
    25242522                } 
    25252523                else // initial preprocessing  finished for this candidate 
    2526                 { 
     2524                {cout << "here15"<<endl; 
    25272525                        tQueue.Push(bsc); 
    25282526                } 
     
    25332531 
    25342532 
    2535 void BvHierarchy::ApplyInititialSplit(const BvhTraversalData &tData, 
    2536                                                                           ObjectContainer &frontObjects, 
    2537                                       ObjectContainer &backObjects) 
    2538 { 
     2533void BvHierarchy::ApplyInitialSplit(const BvhTraversalData &tData, 
     2534                                                                        ObjectContainer &frontObjects, 
     2535                                                                        ObjectContainer &backObjects) 
     2536{ 
     2537        cout << "*******here54 "<<tData.mSortedObjects[3]->size()<<endl; 
    25392538        ObjectContainer *objects = tData.mSortedObjects[3]; 
    25402539 
    25412540        ObjectContainer::const_iterator oit, oit_end = objects->end(); 
    2542      
     2541    cout<<"$$$$$$$$$$$$$$$$$$$"<<endl; 
     2542        for (oit = objects->begin(); oit != objects->end(); ++ oit) 
     2543        { 
     2544                //cout << (*oit)->GetBox().SurfaceArea() << " "; 
     2545        } 
     2546cout<<"$$$$$$$$$$$$$$$$$$$"<<endl; 
    25432547        float maxAreaDiff = 0.0f; 
    25442548 
     
    25772581{ 
    25782582        return (0 
    2579                     || ((int)tData.mNode->mObjects.size() < mInititialObjectsSize) 
     2583                    || ((int)tData.mNode->mObjects.size() < mInitialObjectsSize) 
    25802584                        || (tData.mNode->mObjects.back()->GetBox().SurfaceArea() < mMinInitialSurfaceArea) 
    25812585                        ); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.h

    r1779 r1784  
    903903                                                                 SplitQueue &tQueue); 
    904904 
    905         void ApplyInititialSplit(const BvhTraversalData &tData, 
    906                                                         ObjectContainer &frontObjects, 
    907                                                         ObjectContainer &backObjects); 
     905        void ApplyInitialSplit(const BvhTraversalData &tData, 
     906                                                  ObjectContainer &frontObjects, 
     907                                                  ObjectContainer &backObjects); 
    908908 
    909909        bool InitialTerminationCriteriaMet(const BvhTraversalData &tData) const; 
    910910 
    911911        float mMinInitialSurfaceArea; 
    912         int mInititialObjectsSize; 
     912        int mInitialObjectsSize; 
    913913 
    914914protected: 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Environment.cpp

    r1779 r1784  
    24892489                                        "true"); 
    24902490         
    2491         RegisterOption("BvHierarchy.Construction.useInitialSubdivisio", 
     2491        RegisterOption("BvHierarchy.Construction.useInitialSubdivision", 
    24922492                                        optBool, 
    24932493                                        "bvh_construction_use_initial_subdivision=", 
  • GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp

    r1779 r1784  
    474474        { 
    475475                // decide upon next split type 
    476                 const float vspPriority = viewSpaceQueue.Top() ? viewSpaceQueue.Top()->GetPriority() : -1e20f; 
    477                 const float ospPriority = objectSpaceQueue.Top() ? objectSpaceQueue.Top()->GetPriority() : -1e20f; 
     476                const float vspPriority =  
     477                        viewSpaceQueue.Top() ? viewSpaceQueue.Top()->GetPriority() : -1e20f; 
     478                const float ospPriority =  
     479                        objectSpaceQueue.Top() ? objectSpaceQueue.Top()->GetPriority() : -1e20f; 
    478480                 
    479481                cout << "new decicion, vsp: " << vspPriority << ", osp: " << ospPriority << endl; 
     
    505507                        const int repaired = RepairQueue(dirtyVspList, viewSpaceQueue, true); 
    506508             
    507                         cout << "\nrepaired " << repaired << " candidates from " << (int)dirtyVspList.size() << " dirtied candidates" << endl; 
     509                        cout << "\nrepaired " << repaired << " candidates from "  
     510                                 << (int)dirtyVspList.size() << " dirtied candidates" << endl; 
    508511                } 
    509512                else 
     
    535538                        const int repaired = RepairQueue(dirtyOspList, objectSpaceQueue, true); 
    536539 
    537                         cout << "\nrepaired " << repaired << " candidates from " << (int)dirtyOspList.size() << " dirtied candidates" << endl; 
     540                        cout << "\nrepaired " << repaired << " candidates from "  
     541                                 << (int)dirtyOspList.size() << " dirtied candidates" << endl; 
    538542                } 
    539543        } 
     
    586590                // prepare vsp tree for traversal 
    587591        mViewSpaceSubdivisionType = mSavedViewSpaceSubdivisionType; 
    588                  
    589592                PrepareViewSpaceSubdivision(mTQueue, sampleRays, objects); 
    590593        } 
     
    596599                PrepareObjectSpaceSubdivision(mTQueue, sampleRays, objects); 
    597600        } 
    598  
     601         
    599602        // begin subdivision 
    600603        RunConstruction(mRepairQueue, sampleRays, objects, forcedViewSpace); 
     
    20472050         
    20482051        SubdivisionCandidate *firstVsp = mVspTree->PrepareConstruction(sampleRays, *viewSpaceRays); 
     2052        tQueue.Push(firstVsp); 
     2053 
    20492054        mBvHierarchy->PrepareConstruction(tQueue, sampleRays, objects); 
    20502055 
     
    20542059        firstVsp->SetPriority((float)-oldVspRoot->mTimeStamp); 
    20552060        firstBvh->SetPriority((float)-oldBvhRoot->GetTimeStamp()); 
    2056  
    2057         tQueue.Push(firstVsp); 
    20582061         
    20592062        ExportStats(stats, tQueue, objects); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp

    r1778 r1784  
    330330                                                                          ) const 
    331331{ 
     332        long startTime = GetTime(); 
     333 
    332334        SimpleRayContainer simpleRays; 
    333         long startTime = GetTime(); 
     335         
     336        simpleRays.reserve(samplesPerPass); 
     337        passSamples.reserve(samplesPerPass * 2); // always creates double rays 
    334338 
    335339        // create one third of each type 
     
    349353        } 
    350354 
    351         cout << "generated " << samplesPerPass << " samples in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
     355        cout << "generated " << samplesPerPass << " samples in "  
     356                 << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
    352357 
    353358        startTime = GetTime(); 
     359 
    354360        // shoot simple ray and add it to importance samples 
    355361        mPreprocessor->CastRays(simpleRays, passSamples, true); 
    356         cout << "cast " <<  samplesPerPass << " samples in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
     362        cout << "cast " <<  samplesPerPass << " samples in "  
     363                 << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
    357364 
    358365        return (int)passSamples.size(); 
Note: See TracChangeset for help on using the changeset viewer.