Ignore:
Timestamp:
10/27/06 10:39:58 (18 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/Preprocessing/src
Files:
4 edited

Legend:

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

    r1686 r1687  
    415415        backData.mMaxCostMisses = sc.GetMaxCostMisses(); 
    416416         
    417         //node->mRenderCostDecr = sc.GetRenderCostDecrease(); 
    418         //node->mPvsEntriesIncr = sc.GetPvsEntriesIncr(); 
    419  
     417        // set the time stamp so the order of traversal can be reconstructed 
     418        node->mTimeStamp = mHierarchyManager->mTimeStamp ++; 
     419                 
    420420        // assign the objects in sorted order 
    421421        if (mUseGlobalSorting) 
     
    449449                currentNode = SubdivideNode(*sc, tFrontData, tBackData); 
    450450         
    451                 // set the time stamp so the order of traversal can be reconstructed 
    452                 currentNode->mTimeStamp = mHierarchyManager->mTimeStamp ++; 
    453                 //currentNode->mRenderCostDecr = sc.GetRenderCostDecrease(); 
    454                 //currentNode->mPvsEntriesIncr = sc.GetPvsEntriesIncr(); 
    455  
    456451                // decrease the weighted average cost of the subdivisoin 
    457452                mTotalCost -= sc->GetRenderCostDecrease(); 
     
    899894                        // (as we are not sampling volumetric visibility, 
    900895                        // this should provide better heuristics 
    901                         const float area = //obox.SurfaceArea(); 
     896                        const float area = obj->GetArea();//obox.SurfaceArea(); 
    902897 
    903898                        al += area; 
     
    21412136                currentNode = SubdivideNode(*sc, tFrontData, tBackData); 
    21422137         
    2143                 currentNode->mRenderCostDecr = oldNode->mRenderCostDecr + sc->GetRenderCostDecrease(); 
    2144                 currentNode->mPvsEntriesIncr = oldNode->mPvsEntriesIncr + sc->GetPvsEntriesIncr(); 
    2145  
     2138                oldNode->mRenderCostDecr += sc->GetRenderCostDecrease(); 
     2139                oldNode->mPvsEntriesIncr += sc->GetPvsEntriesIncr(); 
     2140cout << "here5" << endl; 
    21462141                /////////////////////////// 
    21472142                //-- push the new split candidates on the queue 
     
    21512146 
    21522147                frontCandidate->SetPriority((float)-oldInterior->GetFront()->mTimeStamp); 
    2153                 backCandidate->SetPriority((float)-oldInterior->GetFront()->mTimeStamp); 
     2148                backCandidate->SetPriority((float)-oldInterior->GetBack()->mTimeStamp); 
    21542149 
    21552150                frontCandidate->mEvaluationHack = oldInterior->GetFront(); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp

    r1686 r1687  
    16671667        firstBvh->mEvaluationHack = oldBvhRoot; 
    16681668 
     1669        firstVsp->SetPriority((float)-oldVspRoot->mTimeStamp); 
     1670        firstBvh->SetPriority((float)-oldBvhRoot->mTimeStamp); 
     1671 
    16691672        tQueue.Push(firstVsp); 
    16701673        tQueue.Push(firstBvh); 
     
    17261729                cout << "next candidate: " << nextCandidate->GetPriority() << endl; 
    17271730 
    1728                 if (nextCandidate->Type() == SubdivisionCandidate::VIEW_SPACE) 
     1731        if (nextCandidate->Type() == SubdivisionCandidate::VIEW_SPACE) 
     1732                { 
     1733                        cout << "here8" << endl; 
    17291734                        mVspTree->SubdivideAndCopy(tQueue, nextCandidate); 
     1735 
     1736                        VspNode *oldNode = (VspNode *)nextCandidate->mEvaluationHack; 
     1737                         
     1738                        totalRenderCost -= oldNode->mRenderCostDecr; 
     1739                        entriesInPvs += oldNode->mPvsEntriesIncr; 
     1740                } 
    17301741                else 
     1742                {cout << "here9" << endl; 
    17311743                        mBvHierarchy->SubdivideAndCopy(tQueue, nextCandidate); 
    1732  
    1733                 totalRenderCost -= nextCandidate->GetRenderCostDecrease(); 
    1734                 entriesInPvs += nextCandidate->GetPvsEntriesIncr(); 
     1744                         
     1745                        BvhNode *oldNode = (BvhNode *)nextCandidate->mEvaluationHack; 
     1746                         
     1747                        totalRenderCost -= oldNode->mRenderCostDecr; 
     1748                        entriesInPvs += oldNode->mPvsEntriesIncr; 
     1749                }                
    17351750 
    17361751                ++ steps; 
    1737                  
     1752                cout << "rc: " << nextCandidate->GetRenderCostDecrease() << endl; 
     1753                cout << "pvs: " << nextCandidate->GetPvsEntriesIncr() << endl; 
     1754 
    17381755                const float memoryCost = (float)entriesInPvs * (float)ObjectPvs::GetEntrySize(); 
    17391756                UpdateStats(stats, steps, totalRenderCost, entriesInPvs, memoryCost, false); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Intersectable.h

    r1686 r1687  
    112112  virtual float GetArea() const {return 0; } 
    113113  virtual int GetRandomSurfacePoint(Vector3 &point, Vector3 &normal) = 0; 
    114    
    115         virtual int GetRandomVisibleSurfacePoint(Vector3 &point, 
    116                                                                                          Vector3 &normal, 
    117                                                                                          const Vector3 &viewpoint, 
    118                                                                                          const int maxTries) = 0; 
    119    
    120         virtual ostream &Describe(ostream &s) = 0; 
    121          
    122         virtual int GenerateSilhouetteRays(const int nrays, 
    123                                                                            const AxisAlignedBox3 &originBox, 
    124                                                                            const AxisAlignedBox3 &directionBox, VssRayContainer &rays)  
    125         { 
    126                 return 0; 
    127         } 
    128114 
    129         static bool GreaterCounter(const Intersectable *a, 
    130                                                          const Intersectable *b)  
    131         { 
    132                 return a->mCounter > b->mCounter; 
    133         } 
     115  virtual int GetRandomVisibleSurfacePoint(Vector3 &point, 
     116          Vector3 &normal, 
     117          const Vector3 &viewpoint, 
     118          const int maxTries) = 0; 
    134119 
    135         static string GetTypeName(Intersectable *obj) 
    136         { 
    137                 switch(obj->Type()) 
    138                 { 
    139                 case MESH_INSTANCE: 
    140                         return "mesh_instance\n"; 
    141                  
    142                 case TRANSFORMED_MESH_INSTANCE: 
    143                         return "transformed_mesh_instance\n"; 
    144                          
    145                 case SPHERE: 
    146                         return "sphere\n"; 
     120  virtual ostream &Describe(ostream &s) = 0; 
    147121 
    148                 case VIEW_CELL: 
    149                         return "view cell\n"; 
    150                  
    151                 case OGRE_MESH_INSTANCE: 
    152                         return "ogre_mesh_instance\n"; 
     122  virtual int GenerateSilhouetteRays(const int nrays, 
     123          const AxisAlignedBox3 &originBox, 
     124          const AxisAlignedBox3 &directionBox, VssRayContainer &rays)  
     125  { 
     126          return 0; 
     127  } 
    153128 
    154                 case KD_INTERSECTABLE: 
    155                         return "kd_intersectable\n"; 
     129  static bool GreaterCounter(const Intersectable *a, 
     130          const Intersectable *b)  
     131  { 
     132          return a->mCounter > b->mCounter; 
     133  } 
    156134 
    157                 default: 
    158                         return "unknown\n"; 
    159                 } 
    160         } 
     135  static string GetTypeName(Intersectable *obj) 
     136  { 
     137          switch(obj->Type()) 
     138          { 
     139          case MESH_INSTANCE: 
     140                  return "mesh_instance\n"; 
    161141 
    162         /** returns normal from the face with the specified index. 
    163                 PROBLEM: Does not fit to all intersectable types (e.g., spheres) 
    164         */ 
    165         virtual Vector3 GetNormal(const int idx) const { return Vector3(0, 0, 0); } 
     142          case TRANSFORMED_MESH_INSTANCE: 
     143                  return "transformed_mesh_instance\n"; 
     144 
     145          case SPHERE: 
     146                  return "sphere\n"; 
     147 
     148          case VIEW_CELL: 
     149                  return "view cell\n"; 
     150 
     151          case OGRE_MESH_INSTANCE: 
     152                  return "ogre_mesh_instance\n"; 
     153 
     154          case KD_INTERSECTABLE: 
     155                  return "kd_intersectable\n"; 
     156 
     157          default: 
     158                  return "unknown\n"; 
     159          } 
     160  } 
     161 
     162  /** returns normal from the face with the specified index. 
     163  PROBLEM: Does not fit to all intersectable types (e.g., spheres) 
     164  */ 
     165  virtual Vector3 GetNormal(const int idx) const { return Vector3(0, 0, 0); } 
    166166}; 
    167167 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VspTree.cpp

    r1686 r1687  
    721721                tBackData.mMaxCostMisses = maxCostMisses; 
    722722                         
    723                 //newNode->mRenderCostDecr = sc->GetRenderCostDecrease(); 
    724                 //newNode->mPvsEntriesIncr = sc->GetPvsEntriesIncr(); 
    725  
    726                 // set the time stamp so the order of traversal can be reconstructed 
    727                 newNode->mTimeStamp = mHierarchyManager->mTimeStamp ++; 
    728          
    729723                mTotalCost -= sc->GetRenderCostDecrease(); 
    730724                mTotalPvsSize += tFrontData.mPvs + tBackData.mPvs - tData.mPvs; 
     
    970964        CreateViewCell(frontData, false); 
    971965        CreateViewCell(backData, false); 
     966 
     967        // set the time stamp so the order of traversal can be reconstructed 
     968        interior->mTimeStamp = mHierarchyManager->mTimeStamp ++; 
    972969 
    973970#if WORK_WITH_VIEWCELL_PVS 
     
    33063303                // create new interior node and two leaf node 
    33073304                const AxisAlignedPlane splitPlane = oldInterior->GetPlane(); 
    3308                 const int maxCostMisses = sc->GetMaxCostMisses(); 
     3305                 
     3306                // evaluate the changes in render cost and pvs entries 
     3307                EvalSubdivisionCandidate(*sc, false); 
    33093308 
    33103309                newNode = SubdivideNode(splitPlane, tData, tFrontData, tBackData); 
    33113310         
    3312                 // how often was max cost ratio missed in this branch? 
    3313                 tFrontData.mMaxCostMisses = maxCostMisses; 
    3314                 tBackData.mMaxCostMisses = maxCostMisses; 
    3315                          
    3316                 newNode->mRenderCostDecr = oldNode->mRenderCostDecr + sc->GetRenderCostDecrease(); 
    3317                 newNode->mPvsEntriesIncr = oldNode->mPvsEntriesIncr + sc->GetPvsEntriesIncr(); 
    3318  
     3311                oldNode->mRenderCostDecr += sc->GetRenderCostDecrease(); 
     3312                oldNode->mPvsEntriesIncr += sc->GetPvsEntriesIncr(); 
     3313cout << "here4" << endl; 
     3314                 
    33193315                ///////////// 
    33203316                //-- evaluate new split candidates for global greedy cost heuristics 
     
    33243320 
    33253321                frontCandidate->SetPriority((float)-oldInterior->GetFront()->mTimeStamp); 
    3326                 backCandidate->SetPriority((float)-oldInterior->GetFront()->mTimeStamp); 
     3322                backCandidate->SetPriority((float)-oldInterior->GetBack()->mTimeStamp); 
    33273323 
    33283324                frontCandidate->mEvaluationHack = oldInterior->GetFront(); 
Note: See TracChangeset for help on using the changeset viewer.