Changeset 1564 for GTP/trunk/Lib/Vis
- Timestamp:
- 10/03/06 22:34:29 (18 years ago)
- Location:
- GTP/trunk/Lib/Vis/Preprocessing/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
r1563 r1564 107 107 108 108 Environment::GetSingleton()->GetBoolValue( 109 "Hierarchy.Construction.useMultiLevel Construction", mUseMultiLevelConstruction);109 "Hierarchy.Construction.useMultiLevel", mUseMultiLevelConstruction); 110 110 111 111 mUseMultiLevelConstruction; -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp
r1563 r1564 489 489 mViewCellsManager->SetRenderer(mRenderSimulator); 490 490 491 492 491 if (mUseGlRenderer || mUseGlDebugger) 493 492 { … … 922 921 rayBundle.push_back(mainRay); 923 922 924 const float pertubOrigin = 10.0f;925 const float pertubDir = 0. 0f;923 const float pertubOrigin = 0.0f; 924 const float pertubDir = 0.2f; 926 925 927 926 for (int i = 0; i < number - 1; ++ i) -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h
r1563 r1564 47 47 friend class IntelRayCaster; 48 48 friend class InternalRayCaster; 49 49 50 50 public: 51 51 /** Default constructor initialising e.g., KD tree and BSP tree. … … 55 55 virtual ~Preprocessor(); 56 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 57 /** Load the input scene. 58 @param filename file to load 59 @return true on success 60 */ 61 virtual bool LoadScene(const string filename); 62 63 /** Export all preprocessed data in a XML format understandable by the 64 PreprocessingInterface of the GtpVisibilityPreprocessor Module. 65 The file can be compressed depending on the environement settings. 66 @return true on successful export 67 */ 68 virtual bool ExportPreprocessedData(const string filename); 69 70 /** Build the KdTree of currently loaded occluders/occludees/viewcells. The construction 71 is driven by the environment settings, which also sais which of the three types of 72 entities should be used to drive the heuristical construction (only occluders by default) 73 */ 74 virtual bool BuildKdTree(); 75 76 /** Compute visibility method. This method has to be reimplemented by the actual 77 Preprocessor implementation (e.g. SamplingPreprocessor, ExactPreprocessor, 78 GlobalSamplingpreprocessor) 79 */ 80 virtual bool ComputeVisibility() = 0; 81 82 /** Post Process the computed visibility. By default applys the visibility filter 83 (if specified in the environment and export the preprocessed data */ 84 virtual bool PostProcessVisibility(); 85 86 /** View cells are either loaded or prepared for generation, according to the chosen environment 87 object. Important evironment options are, e.g, the view cell type. 88 Should be done after scene loading (i.e., some options are based on scene type). 89 */ 90 bool PrepareViewCells(); 91 92 /** Construct viewcells from the scratch 93 */ 94 bool ConstructViewCells(); 95 96 /** Returns the specified sample strategy, NULL if no valid strategy. 97 */ 98 SamplingStrategy *GenerateSamplingStrategy(const int strategyId) const; 99 100 /** Export preprocessor data. 101 */ 102 bool Export( 103 103 const string filename, 104 104 const bool scene, 105 105 const bool kdtree); 106 107 virtual void KdTreeStatistics(ostream &s); 108 virtual void BspTreeStatistics(ostream &s); 109 110 /** Loads samples from file. 111 @param samples returns the stored sample rays 112 @param objects needed to associate the objects ids 113 @returns true if samples were loaded successfully 114 */ 115 bool LoadSamples(VssRayContainer &samples, 116 ObjectContainer &objects) const; 117 118 /** Exports samples to file. 119 @returns true if samples were written successfully 120 */ 121 bool ExportSamples(const VssRayContainer &samples) const; 122 123 bool LoadKdTree(const string filename); 124 bool ExportKdTree(const string filename); 125 126 virtual bool 127 GenerateRays( 128 const int number, 129 const int raysType, 130 SimpleRayContainer &rays 131 ); 132 133 bool GenerateRayBundle( 134 SimpleRayContainer &rayBundle, 135 const SimpleRay &mainRay, 136 const int number, 137 const int shuffleType) const; 138 139 virtual void CastRays(SimpleRayContainer &rays, 140 VssRayContainer &vssRays, 141 const bool castDoubleRays, 142 const bool pruneInvalidRays = true); 143 144 /** Returns a view cells manager of the given name. 145 */ 146 ViewCellsManager *CreateViewCellsManager(const char *name); 147 /** Returns a hierarchy manager of the given name. 148 */ 149 HierarchyManager *CreateHierarchyManager(const char *name); 150 151 GlRendererBuffer *GetRenderer(); 152 153 bool InitRayCast(const string externKdTree, const string internKdTree); 154 155 156 //////////////////////////////////////////////// 157 158 /// scene graph loaded from file 159 SceneGraph *mSceneGraph; 160 161 /// raw array of objects 162 ObjectContainer mObjects; 163 164 /// kD-tree organizing the scene graph (occluders + occludees) + viewcells 165 KdTree *mKdTree; 166 /// View space partition bsp tree 167 VspBspTree *mVspBspTree; 168 /// Hierarchy manager handling view space and object space partition 169 HierarchyManager *mHierarchyManager; 170 /// BSP tree representing the viewcells 171 BspTree *mBspTree; 172 173 /// list of all loaded occluders 174 ObjectContainer mOccluders; 175 /// list of all loaded occludees 176 ObjectContainer mOccludees; 177 178 179 ViewCellsManager *mViewCellsManager; 180 181 /// greedy optimized hierarchy for both objects and view cells 182 VspOspTree *mVspOspTree; 183 184 bool mUseGlRenderer; 185 bool mUseGlDebugger; 186 187 bool mLoadViewCells; 188 189 bool mDetectEmptyViewSpace; 190 191 bool mQuitOnFinish; 192 bool mLoadMeshes; 193 bool mComputeVisibility; 194 195 bool mExportVisibility; 196 string mVisibilityFileName; 197 198 bool mApplyVisibilityFilter; 199 bool mApplyVisibilitySpatialFilter; 200 201 float mVisibilityFilterWidth; 202 203 //int GetRayCastMethod() { return mRayCastMethod; } 204 //void SetRayCastMethod(int rayCastMethod) { mRayCastMethod = rayCastMethod; } 205 206 int mPass; 106 107 virtual void KdTreeStatistics(ostream &s); 108 virtual void BspTreeStatistics(ostream &s); 109 110 /** Loads samples from file. 111 @param samples returns the stored sample rays 112 @param objects needed to associate the objects ids 113 @returns true if samples were loaded successfully 114 */ 115 bool LoadSamples(VssRayContainer &samples, 116 ObjectContainer &objects) const; 117 118 /** Exports samples to file. 119 @returns true if samples were written successfully 120 */ 121 bool ExportSamples(const VssRayContainer &samples) const; 122 123 bool LoadKdTree(const string filename); 124 bool ExportKdTree(const string filename); 125 126 virtual bool 127 GenerateRays( 128 const int number, 129 const int raysType, 130 SimpleRayContainer &rays 131 ); 132 133 bool GenerateRayBundle( 134 SimpleRayContainer &rayBundle, 135 const SimpleRay &mainRay, 136 const int number, 137 const int shuffleType) const; 138 139 virtual void CastRays(SimpleRayContainer &rays, 140 VssRayContainer &vssRays, 141 const bool castDoubleRays, 142 const bool pruneInvalidRays = true); 143 144 /** Returns a view cells manager of the given name. 145 */ 146 ViewCellsManager *CreateViewCellsManager(const char *name); 147 /** Returns a hierarchy manager of the given name. 148 */ 149 HierarchyManager *CreateHierarchyManager(const char *name); 150 151 GlRendererBuffer *GetRenderer(); 152 153 bool InitRayCast(const string externKdTree, const string internKdTree); 154 155 156 //////////////////////////////////////////////// 157 158 /// scene graph loaded from file 159 SceneGraph *mSceneGraph; 160 161 /// raw array of objects 162 ObjectContainer mObjects; 163 164 /// kD-tree organizing the scene graph (occluders + occludees) + viewcells 165 KdTree *mKdTree; 166 /// View space partition bsp tree 167 VspBspTree *mVspBspTree; 168 /// Hierarchy manager handling view space and object space partition 169 HierarchyManager *mHierarchyManager; 170 /// BSP tree representing the viewcells 171 BspTree *mBspTree; 172 173 /// list of all loaded occluders 174 ObjectContainer mOccluders; 175 /// list of all loaded occludees 176 ObjectContainer mOccludees; 177 178 179 ViewCellsManager *mViewCellsManager; 180 181 /// greedy optimized hierarchy for both objects and view cells 182 VspOspTree *mVspOspTree; 183 184 bool mUseGlRenderer; 185 bool mUseGlDebugger; 186 187 bool mLoadViewCells; 188 189 bool mDetectEmptyViewSpace; 190 191 bool mQuitOnFinish; 192 bool mLoadMeshes; 193 bool mComputeVisibility; 194 195 bool mExportVisibility; 196 string mVisibilityFileName; 197 198 bool mApplyVisibilityFilter; 199 bool mApplyVisibilitySpatialFilter; 200 201 float mVisibilityFilterWidth; 202 203 int mPass; 207 204 208 205 protected: … … 215 212 ///////////////////////// 216 213 217 218 219 220 221 222 223 224 225 226 227 228 229 230 214 RayCaster *mRayCaster; 215 /// samples used for construction of the BSP view cells tree. 216 int mBspConstructionSamples; 217 /// samples used for construction of the VSP OSP tree. 218 int mVspOspConstructionSamples; 219 /** Simulates rendering of the scene. 220 */ 221 RenderSimulator *mRenderSimulator; 222 223 vector<FaceParentInfo> mFaceParents; 224 225 GlRendererBuffer *renderer; 226 227 231 228 }; 232 229 -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellBsp.cpp
r1563 r1564 702 702 703 703 mStat.nodes = 1; 704 mBbox.Initialize(); 704 mBbox.Initialize(); // initialise bsp tree bounding box 705 705 706 706 PolygonContainer *polys = new PolygonContainer(); … … 843 843 } 844 844 } 845 845 // clear helper structure 846 // note: memory will not be released using clear! 846 847 facePolyMap.clear(); 847 848 -
GTP/trunk/Lib/Vis/Preprocessing/src/VspBspTree.cpp
r1563 r1564 374 374 RayInfoContainer *rays = new RayInfoContainer(); 375 375 376 //-- extract polygons from rays if there are polygon candidates 376 //////////// 377 //-- extract polygons from rays if polygon candidate planes are required 378 377 379 if (mMaxPolyCandidates) 378 380 { 379 381 int numObj = 0; 380 381 382 Intersectable::NewMail(); 382 383 … … 398 399 obj->Mail(); 399 400 400 // transformed mesh instance and mesh instance handle mesh differently401 if (obj->Type() == Intersectable::TRANSFORMED_MESH_INSTANCE)401 // handle intersectable 402 switch (obj->Type()) 402 403 { 403 Mesh mesh; 404 case Intersectable::TRANSFORMED_MESH_INSTANCE: 405 { 406 Mesh mesh; 404 407 405 TransformedMeshInstance *tmobj =406 dynamic_cast<TransformedMeshInstance *>(obj);408 TransformedMeshInstance *tmobj = 409 dynamic_cast<TransformedMeshInstance *>(obj); 407 410 408 tmobj->GetTransformedMesh(mesh); 409 AddMeshToPolygons(&mesh, polys, tmobj); 410 } 411 else // MeshInstance 412 { 413 MeshInstance *mobj = dynamic_cast<MeshInstance *>(obj); 414 AddMeshToPolygons(mobj->GetMesh(), polys, mobj); 411 tmobj->GetTransformedMesh(mesh); 412 AddMeshToPolygons(&mesh, polys, tmobj); 413 } 414 break; 415 case Intersectable::MESH_INSTANCE: 416 { 417 MeshInstance *mobj = dynamic_cast<MeshInstance *>(obj); 418 AddMeshToPolygons(mobj->GetMesh(), polys, mobj); 419 } 420 break; 421 case Intersectable::TRIANGLE_INTERSECTABLE: 422 { 423 // TODO 424 cout << "here5" << endl; 425 } 426 default: 427 break; 415 428 } 416 429
Note: See TracChangeset
for help on using the changeset viewer.