Ignore:
Timestamp:
11/25/06 00:19:18 (18 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r1787 r1789  
    19561956} 
    19571957 
    1958  
     1958/* 
    19591959void 
    19601960ViewCellsManager::AddSampleContributions(const VssRayContainer &rays) 
     
    19641964 
    19651965  VssRayContainer::const_iterator it, it_end = rays.end(); 
    1966  
     1966cout <<"here60"<<endl; 
    19671967  for (it = rays.begin(); it != it_end; ++ it) { 
    19681968        AddSampleContributions(*(*it)); 
    19691969  } 
    19701970} 
    1971  
     1971*/ 
    19721972 
    19731973int ViewCellsManager::GetMinPvsSize() const 
     
    19831983} 
    19841984 
    1985  
     1985/* 
    19861986void 
    19871987ViewCellsManager::AddSampleContributions(VssRay &ray) 
    1988 { 
     1988{cout << "here12" << endl; 
    19891989        // assumes viewcells have been stored... 
    19901990        ViewCellContainer *viewcells = &ray.mViewCells; 
     
    20082008        } 
    20092009} 
    2010  
     2010*/ 
    20112011 
    20122012float ViewCellsManager::ComputeSampleContribution(VssRay &ray, 
    20132013                                                                                                  const bool addRays, 
    20142014                                                                                                  const bool storeViewCells) 
    2015 { 
     2015{cout << "$$$$$$$$$$$$$4here10" << endl; 
    20162016        ViewCellContainer viewcells; 
    20172017 
     
    34703470        if (sortViewCells) 
    34713471        {       // sort view cells to visualize the largest view cells 
    3472                 stable_sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
     3472                sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
    34733473        } 
    34743474 
     
    48244824        { 
    48254825                // sort view cells to visualize the largest view cells 
    4826                 stable_sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
     4826                sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
    48274827        } 
    48284828 
     
    52785278 
    52795279 
    5280 VspOspViewCellsManager::VspOspViewCellsManager(ViewCellsTree *vcTree, const string &hierarchyType) 
     5280VspOspViewCellsManager::VspOspViewCellsManager(ViewCellsTree *vcTree,  
     5281                                                                                           const string &hierarchyType) 
    52815282: ViewCellsManager(vcTree) 
    52825283{ 
     
    52975298        mHierarchyManager->SetViewCellsTree(mViewCellsTree); 
    52985299} 
     5300 
    52995301 
    53005302Intersectable * 
     
    53075309#endif 
    53085310} 
     5311 
    53095312 
    53105313HierarchyManager *VspOspViewCellsManager::CreateHierarchyManager(const string &hierarchyType) 
     
    56755678        Exporter *exporter = Exporter::GetExporter("final_view_cells.wrl"); 
    56765679 
    5677         Vector3 scale(0.9f, 0.9f, 0.9f); 
     5680        //Vector3 scale(0.9f, 0.9f, 0.9f); 
     5681        Vector3 scale(1.0f, 1.0f, 1.0f); 
     5682 
    56785683        if (exporter) 
    56795684        { 
     
    57735778        { 
    57745779                // sort view cells to visualize the view cells with highest render cost 
    5775                 stable_sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
     5780                sort(mViewCells.begin(), mViewCells.end(), ViewCell::LargerRenderCost); 
    57765781        } 
    57775782 
     
    60556060        float tmin = 0, tmax = 1.0; 
    60566061 
    6057          
    60586062        if (!GetViewSpaceBox().GetRaySegment(hray, tmin, tmax) || (tmin > tmax)) 
    60596063                return 0; 
     
    60696073        if (storeViewCells) 
    60706074        {        
    6071           // copy viewcells memory efficiently 
    6072           ray.mViewCells.reserve(viewcells.size()); 
    6073           ray.mViewCells = viewcells; 
     6075                // copy viewcells memory efficiently 
     6076                ray.mViewCells.reserve(viewcells.size()); 
     6077                ray.mViewCells = viewcells; 
    60746078        } 
    60756079 
     
    60786082        Intersectable *terminationObj = GetIntersectable(ray, true); 
    60796083        Intersectable *originObj = GetIntersectable(ray, false); 
    6080            
    6081         for (; it != viewcells.end(); ++ it) { 
    6082           ViewCell *viewcell = *it; 
    6083            
    6084           if (viewcell->GetValid()) 
     6084 
     6085        for (; it != viewcells.end(); ++ it)  
     6086        { 
     6087                ViewCell *viewcell = *it; 
     6088 
     6089                if (viewcell->GetValid()) 
    60856090                {       // if ray not outside of view space 
    6086                   float contribution; 
    6087                    
    6088                   if (terminationObj)  
     6091                        float contribution; 
     6092 
     6093                        if (terminationObj)  
    60896094                        { 
    6090                           // todo: maybe not correct for kd node pvs 
    6091                           if (viewcell->GetPvs().GetSampleContribution( 
    6092                                                                                                                    terminationObj, ray.mPdf, contribution)) 
     6095                                // todo: maybe not correct for kd node pvs 
     6096                        /*      if (viewcell->GetPvs().GetSampleContribution( 
     6097                                        terminationObj, ray.mPdf, contribution)) 
    60936098                                { 
    6094                                   ++ ray.mPvsContribution; 
     6099                                        ++ ray.mPvsContribution; 
    60956100                                } 
    6096                            
    6097                           ray.mRelativePvsContribution += contribution; 
     6101                                ray.mRelativePvsContribution += contribution;*/ 
    60986102                        } 
    6099                          
    6100                   //////////////// 
    6101                   //-- for directional sampling it is important to count  
    6102                   //-- only contributions made in one direction! 
    6103                   //-- the other contributions of this sample will be counted for the opposite ray! 
    6104                    
     6103 
     6104                        //////////////// 
     6105                        //-- for directional sampling it is important to count  
     6106                        //-- only contributions made in one direction! 
     6107                        //-- the other contributions of this sample will be counted for the opposite ray! 
     6108 
    61056109#if SAMPLE_ORIGIN_OBJECTS 
    6106                    
    6107                   if (originObj &&  
    6108                           viewcell->GetPvs().GetSampleContribution(originObj, 
    6109                                                                                                           ray.mPdf, 
    6110                                                                                                           contribution)) 
     6110 
     6111                /*      if (originObj &&  
     6112                                viewcell->GetPvs().GetSampleContribution(originObj, 
     6113                                                                                                                ray.mPdf, 
     6114                                                                                                                contribution)) 
    61116115                        { 
    6112                           ++ ray.mPvsContribution; 
    6113                           ray.mRelativePvsContribution += contribution; 
    6114                         } 
     6116                                ++ ray.mPvsContribution; 
     6117                                ray.mRelativePvsContribution += contribution; 
     6118                        }*/ 
    61156119#endif 
    61166120                } 
    61176121        } 
    6118          
     6122 
    61196123        if (!addRays) 
    61206124        { 
     
    61316135 
    61326136                //$$JB hack 
    6133                 viewCell->GetPvs().AddSample(terminationObj, ray.mPdf); 
    6134                  
     6137                float contrib; 
     6138                //viewCell->GetPvs().AddSampleDirtyCheck(terminationObj, ray.mPdf, contrib); 
     6139                viewCell->GetPvs().AddSample(terminationObj, ray.mPdf);//, contrib); 
     6140 
     6141                if (viewCell->GetPvs().GetSize() == 50) 
     6142                //if (viewCell->GetPvs().RequiresResort()) 
     6143                {Intersectable::NewMail(); 
     6144                cout << "\nbefore sort: " << viewCell->GetPvs().GetLastSorted() << " \n"; 
     6145                        ObjectPvsIterator pit = viewCell->GetPvs().GetIterator(); int i = 0; 
     6146                        while (pit.HasMoreEntries()) 
     6147                        {                
     6148                                ObjectPvsEntry entry = pit.Next(); 
     6149                Intersectable *object = entry.mObject; 
     6150 
     6151                                if ((i ++) == viewCell->GetPvs().GetLastSorted()) 
     6152                                        cout << "| "; 
     6153                                 
     6154                                //if (object->Mailed()) cout << "error!!"<<endl; 
     6155                                object->Mail(); 
     6156                                cout << (int)object << " "; 
     6157                        } 
     6158 
     6159                        //viewCell->GetPvs().Sort(); 
     6160                         
     6161                        /*cout << "\nafter sort\n"; 
     6162                        pit = viewCell->GetPvs().GetIterator(); i = 0; 
     6163                        while (pit.HasMoreEntries()) 
     6164                        {                
     6165                                ObjectPvsEntry entry = pit.Next(); 
     6166                Intersectable *object = entry.mObject; 
     6167 
     6168                                if ((i ++) == viewCell->GetPvs().GetLastSorted()) 
     6169                                        cout << "| ";    
     6170                                cout << (int)object << " "; 
     6171                        }*/ 
     6172                } 
     6173                //else cout << "b"; 
    61356174#if SAMPLE_ORIGIN_OBJECTS 
    6136                 viewCell->GetPvs().AddSample(originObj, ray.mPdf); 
    6137 #endif                   
    6138         } 
    6139          
     6175                //viewCell->GetPvs().AddSample(originObj, ray.mPdf); 
     6176#endif 
     6177        } 
     6178 
    61406179        return ABS_CONTRIBUTION_WEIGHT*ray.mPvsContribution + 
    6141           (1.0f - ABS_CONTRIBUTION_WEIGHT)*ray.mRelativePvsContribution; 
     6180                (1.0f - ABS_CONTRIBUTION_WEIGHT)*ray.mRelativePvsContribution; 
    61426181} 
    61436182 
Note: See TracChangeset for help on using the changeset viewer.