Changeset 1264 for GTP/trunk/Lib/Vis
- Timestamp:
- 08/23/06 19:19:26 (18 years ago)
- Location:
- GTP/trunk/Lib/Vis
- Files:
-
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/GtpVisibility.sln
r1251 r1264 10 10 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IVReader", "OnlineCullingCHC\IVReader\src\IVReader.vcproj", "{7319E499-473D-4CE5-9983-725D6E68A55D}" 11 11 ProjectSection(ProjectDependencies) = postProject 12 {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} 12 13 EndProjectSection 13 14 EndProject 14 15 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_VisibilitySceneManager", "OnlineCullingCHC\OGRE\src\Plugin_VisibilitySceneManager.vcproj", "{80DECC17-BDDD-4412-8CF8-F7C1C17A7436}" 15 16 ProjectSection(ProjectDependencies) = postProject 17 {101A7691-74F3-48B4-96A3-CF35578F5900} = {101A7691-74F3-48B4-96A3-CF35578F5900} 16 18 {EABCE292-D598-4600-A1C9-2591E7D62FDA} = {EABCE292-D598-4600-A1C9-2591E7D62FDA} 17 {101A7691-74F3-48B4-96A3-CF35578F5900} = {101A7691-74F3-48B4-96A3-CF35578F5900}18 19 EndProjectSection 19 20 EndProject … … 30 31 ProjectSection(ProjectDependencies) = postProject 31 32 {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} 32 { 7319E499-473D-4CE5-9983-725D6E68A55D} = {7319E499-473D-4CE5-9983-725D6E68A55D}33 {101A7691-74F3-48B4-96A3-CF35578F5900} = {101A7691-74F3-48B4-96A3-CF35578F5900} 33 34 EndProjectSection 34 35 EndProject … … 36 37 ProjectSection(ProjectDependencies) = postProject 37 38 {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} = {80DECC17-BDDD-4412-8CF8-F7C1C17A7436} 38 {7319E499-473D-4CE5-9983-725D6E68A55D} = {7319E499-473D-4CE5-9983-725D6E68A55D}39 39 EndProjectSection 40 40 EndProject -
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreKdTreeSceneManager.cpp
r1258 r1264 685 685 else //-- the hierarchical culling algorithm 686 686 { 687 // this is also called in TerrainSceneManager: really 688 // necessary? 687 // this is also called in TerrainSceneManager: really necessary? 689 688 //mDestRenderSystem -> setLightingEnabled(false); 690 689 … … 697 696 698 697 //-- hierarchical culling 698 699 699 // the objects of different layers (e.g., background, scene, 700 700 // overlay) must be identified and rendered one after another … … 781 781 } 782 782 783 //void KdTreeSceneManager::_renderNodes(const KdRenderableList& nodelist, Camera * cam, 784 // bool onlyShadowCasters, int leavePassesInQueue) 783 785 784 void KdTreeSceneManager::_renderNode(KdTree::NodePtr node, Camera * cam, 786 785 bool onlyShadowCasters, int leavePassesInQueue) -
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp
r1251 r1264 40 40 mIsDepthPassPhase(false), 41 41 mUseItemBuffer(false), 42 //mUseItemBuffer(true),43 42 mIsItemBufferPhase(false), 44 43 mCurrentEntityId(1), … … 46 45 mSkipTransparents(false), 47 46 mRenderTransparentsForItemBuffer(true), 48 //mExecuteVertexProgramForAllPasses(true),49 47 mExecuteVertexProgramForAllPasses(false), 50 48 mIsHierarchicalCulling(false), … … 56 54 mDeleteQueueAfterRendering(true) 57 55 { 56 Ogre::LogManager::getSingleton().logMessage("creating occlusion culling scene manager"); 57 58 58 mHierarchyInterface = new OctreeHierarchyInterface(this, mDestRenderSystem); 59 59 … … 321 321 322 322 323 // -- delete lists stored for visualization323 // lists only used for visualization 324 324 mVisible.clear(); 325 325 mBoxes.clear(); … … 331 331 { 332 332 OctreeSceneManager::_renderVisibleObjects(); 333 334 333 return; 335 334 } … … 457 456 OGRE_DELETE(mRenderQueue); // HACK: should rather only be cleared ... 458 457 459 if ( 0) WriteLog(); // write out stats458 if (1) WriteLog(); // write out stats 460 459 } 461 460 -
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreSceneContentGenerator.cpp
r897 r1264 65 65 createChildSceneNode(String(name) + "Node", position); 66 66 67 //std::stringstream d; d << "new node: " << name << "Node";68 //Ogre::LogManager::getSingleton().logMessage(d.str());69 70 67 //ent->setCastShadows(false); 71 68 node->attachObject(ent); -
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreVisibilitySceneManagerDll.cpp
r1165 r1264 24 24 */ 25 25 26 //#include <OgreVisibilityTerrainSceneManager.h>27 26 #include <OgreOcclusionCullingSceneManager.h> 28 27 #include <OgreKdTreeSceneManager.h> 29 30 //#include <OgreHeightmapTerrainPageSource.h>31 28 #include <OgreRoot.h> 32 29 #include <OgreLogManager.h> … … 40 37 namespace Ogre { 41 38 42 //VisibilityTerrainSceneManagerFactory *visibilityTerrainPlugin; 39 43 40 OcclusionCullingSceneManagerFactory *occlusionCullingPlugin; 44 41 KdTreeSceneManagerFactory *kdTreeFactory; … … 52 49 53 50 // Create new scene manager 54 //visibilityTerrainPlugin = new VisibilityTerrainSceneManagerFactory(visManager);55 51 occlusionCullingPlugin = new OcclusionCullingSceneManagerFactory(visManager); 56 52 kdTreeFactory = new KdTreeSceneManagerFactory(visManager); 53 57 54 // Construct listener manager singleton 58 55 new TerrainPageSourceListenerManager(); 59 56 60 57 // Register 61 //Root::getSingleton().addSceneManagerFactory(visibilityTerrainPlugin);62 58 Root::getSingleton().addSceneManagerFactory(occlusionCullingPlugin); 63 59 Root::getSingleton().addSceneManagerFactory(kdTreeFactory); … … 66 62 extern "C" void __declspec(dllexport) dllShutdownPlugin() 67 63 { 68 //Root::getSingleton().removeSceneManagerFactory(visibilityTerrainPlugin);69 64 Root::getSingleton().removeSceneManagerFactory(occlusionCullingPlugin); 70 65 Root::getSingleton().removeSceneManagerFactory(kdTreeFactory); 66 71 67 // destroy listener manager 72 68 delete TerrainPageSourceListenerManager::getSingletonPtr(); … … 77 73 //delete heightmapTerrainPageSource; 78 74 // BUG: crashes on delete!!!! FIX this 79 80 //delete visibilityTerrainPlugin;81 75 delete occlusionCullingPlugin; 82 76 delete kdTreeFactory; -
GTP/trunk/Lib/Vis/OnlineCullingCHC/scripts/terrainCulling.cfg
r1261 r1264 1 ###################################################################### 2 3 # 4 # Settings for vienna scene 5 # 6 7 # 8 # The scene geometry 9 # 10 11 1 12 #Scene=../../../../../resources/media/house_test1.iv 2 #Scene=../../../../../resources/media/city1500_flat_1.iv;../../../../../resources/media/roofs_1500.iv;../../../../../resources/media/CityRoads60.iv3 Scene=terrain 13 Scene=../../../../../resources/media/city1500_flat_1.iv;../../../../../resources/media/roofs_1500.iv;../../../../../resources/media/CityRoads60.iv 14 #Scene=../../../../../resources/media/city1.iv;../../../../../resources/media/roofs_1500.iv;../../../../../resources/media/CityRoads60.iv 4 15 5 16 # current view point 6 #ViewX=8307 #ViewY=3008 #ViewZ=-54017 ViewX=830 18 ViewY=300 19 ViewZ=-540 9 20 10 ViewX=707 11 ViewY=5000 12 ViewZ=528 21 # 22 # The visibility environment: load the view cells from there 23 # 13 24 14 #VisibilityEnvironment=D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/scripts/generate_viewcells.env25 VisibilityEnvironment=D:/svn/gametools/GTP/trunk/Lib/Vis/Preprocessing/scripts/generate_viewcells.env 15 26 #VisibilityEnvironment=../../../../../../../GTP/trunk/Lib/Vis/Preprocessing/scripts/generate_viewcells.env 27 28 29 30 ###################################################################### 31 32 # 33 # Settings for terrain scene 34 # 35 36 #Scene=terrain 37 38 # 39 # current view point 40 # 41 42 #ViewX=707 43 #ViewY=5000 44 #ViewZ=528 -
GTP/trunk/Lib/Vis/Preprocessing/src/GzBinFileInputStream.cpp
r1001 r1264 80 80 { 81 81 // Try to open the file 82 //fSource = XMLPlatformUtils::openFile(fileName, manager);83 // todo: delete xmlstring84 82 char *myFileName = XMLString::transcode(fileName); 85 //mStream.open(myFileName, ios::binary); 83 //fSource = XMLPlatformUtils::openFile(fileName, manager); 84 86 85 mStream.open(myFileName); 87 86 … … 95 94 { 96 95 // Try to open the file 97 //mStream.open(fileName, ios::binary);98 96 mStream.open(fileName); 99 97 } … … 143 141 //unsigned int result = XMLPlatformUtils::readFileBuffer(fSource, maxToRead, toFill, fMemoryManager); 144 142 mStream.read((char *)toFill, maxToRead); 145 143 //cout << "\n\n tofill: " << toFill << endl << endl; 144 146 145 unsigned int result = mStream.gcount(); 147 146 mCurrentPos = mStream.tellg(); 148 //GtpVisibilityPreprocessor::Debug << "stream: " << maxToRead << " " << toFill << " " << result << endl;149 147 150 148 return result; -
GTP/trunk/Lib/Vis/Preprocessing/src/GzBinFileInputStream.h
r975 r1264 106 106 107 107 unsigned int mCurrentPos; 108 108 109 private : 109 110 // ----------------------------------------------------------------------- … … 130 131 inline bool GzBinFileInputStream::getIsOpen() const 131 132 { 132 return(fSource != 0);133 return (mStream.is_open());//(fSource != 0); 133 134 } 134 135 -
GTP/trunk/Lib/Vis/Preprocessing/src/HierarchyManager.cpp
r1259 r1264 270 270 mOspTree->mOspStats.Stop(); 271 271 272 float rc = mOspTree->EvalRenderCost(sampleRays); 273 274 Debug << "here47 My render cost evalulation: " << rc << endl; 272 ////////////////////////// 273 // matt: only for debugging purpose 274 275 const float rc = mOspTree->EvalRenderCost(sampleRays); 276 277 Debug << "My render cost evalulation: " << rc << endl; 275 278 276 279 #if 0 -
GTP/trunk/Lib/Vis/Preprocessing/src/OspTree.cpp
r1259 r1264 1080 1080 float nPosition[3]; 1081 1081 float nCostRatio[3]; 1082 float nProbFront[3];1083 float nProbBack[3];1084 1082 1085 1083 // create bounding box of node geometry … … 2533 2531 ObjectContainer::const_iterator oit, oit_end = leaf->mObjects.end(); 2534 2532 2535 //Debug << "here53 " << touchedViewCells.size() << endl;2536 2533 for (oit = leaf->mObjects.begin(); oit != oit_end; ++ oit) 2537 2534 { -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp
r1251 r1264 16 16 #include "OspTree.h" 17 17 #include "ObjParser.h" 18 #include "BvHierarchy.h" 19 18 20 #ifdef GTP_INTERNAL 19 21 #include "ArchModeler2MLRT.hxx" … … 122 124 mBspTree(NULL), 123 125 mVspBspTree(NULL), 126 mVspTree(NULL), 127 mOspTree(NULL), 128 mBvHierarchy(NULL), 124 129 mViewCellsManager(NULL), 125 130 mRenderSimulator(NULL), … … 394 399 { 395 400 Environment::GetSingleton()->GetStringValue("ViewCells.filename", buf); 401 cout << "loading view cells from " << buf << endl; 396 402 mViewCellsManager = ViewCellsManager::LoadViewCells(buf, &mObjects, true); 397 403 } … … 399 405 { 400 406 //-- parse type of view cell container 407 401 408 Environment::GetSingleton()->GetStringValue("ViewCells.type", buf); 402 409 mViewCellsManager = CreateViewCellsManager(buf); … … 437 444 ViewCellsManager *Preprocessor::CreateViewCellsManager(const char *name) 438 445 { 446 ViewCellsTree *vcTree = new ViewCellsTree; 447 439 448 if (strcmp(name, "kdTree") == 0) 440 449 { 441 mViewCellsManager = new KdViewCellsManager( mKdTree);450 mViewCellsManager = new KdViewCellsManager(vcTree, mKdTree); 442 451 } 443 452 else if (strcmp(name, "bspTree") == 0) … … 446 455 447 456 mBspTree = new BspTree(); 448 mViewCellsManager = new BspViewCellsManager( mBspTree);457 mViewCellsManager = new BspViewCellsManager(vcTree, mBspTree); 449 458 } 450 459 else if (strcmp(name, "vspBspTree") == 0) … … 453 462 454 463 mVspBspTree = new VspBspTree(); 455 mViewCellsManager = new VspBspViewCellsManager( mVspBspTree);464 mViewCellsManager = new VspBspViewCellsManager(vcTree, mVspBspTree); 456 465 } 457 466 else if (strcmp(name, "vspOspTree") == 0) 458 467 { 459 468 mVspTree = new VspTree(); 460 mOspTree = new OspTree();469 //mOspTree = new OspTree(); 461 470 462 471 // HACK for testing if per kd evaluation works!! 463 472 mOspTree = new OspTree(*mKdTree); 464 473 465 mViewCellsManager = new VspOspViewCellsManager( mVspTree, mOspTree);474 mViewCellsManager = new VspOspViewCellsManager(vcTree, mVspTree, mOspTree); 466 475 } 467 476 else if (strcmp(name, "sceneDependent") == 0) … … 471 480 //TODO 472 481 mBspTree = new BspTree(); 473 mViewCellsManager = new BspViewCellsManager( mBspTree);482 mViewCellsManager = new BspViewCellsManager(vcTree, mBspTree); 474 483 } 475 484 else … … 479 488 } 480 489 490 //vcTree->SetViewCellsManager(mViewCellsManager); 481 491 return mViewCellsManager; 482 492 } … … 841 851 float pforg[3]; 842 852 float pfdir[3]; 843 double pfnorm[3];853 //double pfnorm[3]; 844 854 845 855 pforg[0] = viewPoint[0]; pforg[1] = viewPoint[1]; pforg[2] = viewPoint[2]; -
GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.h
r1251 r1264 26 26 class VspTree; 27 27 class OspTree; 28 class BvHierarchy; 28 29 class Intersectable; 29 30 … … 182 183 BspTree *mBspTree; 183 184 184 185 BvHierarchy *mBvHierarchy; 186 185 187 /// list of all loaded occluders 186 188 ObjectContainer mOccluders; -
GTP/trunk/Lib/Vis/Preprocessing/src/QtGlRenderer/QtGlRenderer.vcproj
r1252 r1264 20 20 Name="VCCLCompilerTool" 21 21 Optimization="0" 22 AdditionalIncludeDirectories=""$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtGui";"$(QTDIR)\include";"$(QTDIR)\include\QtOpenGl";..\ src;..\..\..\..\..\..\NonGTP\Zlib\include;"$(CG_INC_PATH)""22 AdditionalIncludeDirectories=""$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtGui";"$(QTDIR)\include";"$(QTDIR)\include\QtOpenGl";..\..\src;"$(CG_INC_PATH)";..\..\..\..\..\..\..\NonGTP\Zlib\include" 23 23 PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;QTGLRENDERER_EXPORTS" 24 24 MinimalRebuild="TRUE" -
GTP/trunk/Lib/Vis/Preprocessing/src/SamplingStrategy.cpp
r1201 r1264 51 51 Vector3 origin, direction; 52 52 53 const int i = (int)RandomValue(0, ( int)mPreprocessor.mObjects.size() - 1);53 const int i = (int)RandomValue(0, (Real)((int)mPreprocessor.mObjects.size() - 1)); 54 54 55 55 Intersectable *object = mPreprocessor.mObjects[i]; -
GTP/trunk/Lib/Vis/Preprocessing/src/TestPreprocessor.vcproj
r1261 r1264 36 36 OutputFile="$(OutDir)/Preprocessor.exe" 37 37 LinkIncremental="2" 38 AdditionalLibraryDirectories="..\ src\GL;..\lib\debug;..\..\..\..\..\..\NonGTP\Boost\lib;..\..\..\..\..\..\NonGTP\Xerces\xercesc\lib;..\..\..\..\..\..\NonGTP\Zlib\lib;..\..\..\..\..\..\NonGTP\Devil\lib"38 AdditionalLibraryDirectories="..\include;..\src\GL;"..\lib\$(ConfigurationName)";..\..\..\..\..\..\NonGTP\Boost\lib;..\..\..\..\..\..\NonGTP\Xerces\xercesc\lib;..\..\..\..\..\..\NonGTP\Zlib\lib;..\..\..\..\..\..\NonGTP\Devil\lib" 39 39 GenerateDebugInformation="TRUE" 40 40 ProgramDatabaseFile="$(OutDir)/TestPreprocessor.pdb" -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.cpp
r1233 r1264 361 361 #endif 362 362 { 363 ReadEnvironment(); 364 MergeCandidate::sRenderCostWeight = mRenderCostWeight; 365 } 366 367 368 ViewCellsTree::ViewCellsTree(): 369 mRoot(NULL), 370 mUseAreaForPvs(false), 371 mViewCellsManager(NULL), 372 #if 0 373 mViewCellsStorage(PVS_IN_INTERIORS) 374 #else 375 mViewCellsStorage(PVS_IN_LEAVES) 376 #endif 377 { 378 ReadEnvironment(); 379 MergeCandidate::sRenderCostWeight = mRenderCostWeight; 380 } 381 382 383 void ViewCellsTree::ReadEnvironment() 384 { 363 385 Environment::GetSingleton()->GetBoolValue("ViewCells.Visualization.exportMergedViewCells", mExportMergedViewCells); 364 386 Environment::GetSingleton()->GetFloatValue("ViewCells.maxStaticMemory", mMaxMemory); … … 379 401 Debug << "refining view cells: " << mRefineViewCells << endl; 380 402 Debug << "=========== end view cell tree options ===============\n"; 381 382 MergeCandidate::sRenderCostWeight = mRenderCostWeight;383 403 } 384 404 -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCell.h
r1263 r1264 23 23 class ViewCellsManager; 24 24 class ViewCellLeaf; 25 //class Environment; 25 26 26 27 27 … … 391 391 392 392 public: 393 ViewCellsTree(); 393 394 /** View cells tree constructor taking a view cell mnanager as parameter 394 395 */ … … 511 512 int CountKdPvs(const ViewCellLeaf *vc) const; 512 513 514 void SetViewCellsManager(ViewCellsManager *vcm) 515 { 516 mViewCellsManager = vcm; 517 } 518 513 519 protected: 514 520 521 void ReadEnvironment(); 515 522 516 523 ///////////////////////////////////////////////////////////////// -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp
r1263 r1264 45 45 46 46 47 ViewCellsManager::ViewCellsManager( ):47 ViewCellsManager::ViewCellsManager(ViewCellsTree *viewCellsTree): 48 48 mRenderer(NULL), 49 49 mInitialSamples(0), … … 58 58 mMaxPvsRatio(1.0), 59 59 mViewCellPvsIsUpdated(false), 60 mPreprocessor(NULL) 60 mPreprocessor(NULL), 61 mViewCellsTree(viewCellsTree) 61 62 { 62 63 mViewSpaceBox.Initialize(); 63 64 ParseEnvironment(); 64 65 65 mViewCellsTree = new ViewCellsTree(this); 66 mViewCellsTree->SetViewCellsManager(this); 67 //mViewCellsTree = new ViewCellsTree(this); 66 68 } 67 69 … … 226 228 { 227 229 // HACK: if view cells tree does not 228 // take care of view cells, we have to do it230 // handle view cells, we have to do it here 229 231 // question: rather create view cells resource manager? 230 232 if (!ViewCellsTreeConstructed()) … … 232 234 CLEAR_CONTAINER(mViewCells); 233 235 } 234 235 DEL_PTR(mViewCellsTree); 236 //DEL_PTR(mViewCellsTree); 236 237 } 237 238 … … 412 413 cout << "finished in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 413 414 414 415 415 416 // construct view cells 416 417 ConstructSubdivision(preprocessor->mObjects, initialSamples); … … 526 527 cout << "starting post processing and visualization" << endl; 527 528 528 529 529 // store view cells for postprocessing 530 530 const bool storeViewCells = true; 531 532 531 533 532 if (SAMPLE_AFTER_SUBDIVISION) … … 713 712 714 713 cout << "exporting view cells to xml ... "; 715 714 716 715 OUT_STREAM stream(filename.c_str()); 717 716 … … 722 721 stream << "<VisibilitySolution>" << endl; 723 722 724 //-- the view space bounding box725 //stream << "<ViewSpaceBox"726 // << " min=\"" << mViewSpaceBox.Min().x << " " << mViewSpaceBox.Min().y << " " << mViewSpaceBox.Min().z << "\""727 // << " max=\"" << mViewSpaceBox.Max().x << " " << mViewSpaceBox.Max().y << " " << mViewSpaceBox.Max().z << "\" />" << endl;728 729 723 if (exportPvs) 730 724 { 731 725 //-- export bounding boxes 726 732 727 stream << "<BoundingBoxes>" << endl; 733 728 … … 748 743 } 749 744 750 751 // the type of hierarchy: this must be known before to build the view cells manager 752 //stream << "<ViewSpaceHierarchyType name=\"vspBspTree\" />" << endl; 753 745 754 746 //-- export the view cells and the pvs 755 747 … … 767 759 stream << "<ViewSpaceHierarchy type=\"bsp\"" 768 760 << " min=\"" << mViewSpaceBox.Min().x << " " << mViewSpaceBox.Min().y << " " << mViewSpaceBox.Min().z << "\"" 769 << " max=\"" << mViewSpaceBox.Max().x << " " << mViewSpaceBox.Max().y << " " << mViewSpaceBox.Max().z << "\" />" << endl;761 << " max=\"" << mViewSpaceBox.Max().x << " " << mViewSpaceBox.Max().y << " " << mViewSpaceBox.Max().z << "\">" << endl; 770 762 771 763 mVspBspTree->Export(stream); … … 773 765 774 766 stream << "</VisibilitySolution>" << endl; 775 776 767 777 768 stream.close(); … … 2548 2539 2549 2540 2550 BspViewCellsManager::BspViewCellsManager( BspTree *bspTree):2551 ViewCellsManager( ), mBspTree(bspTree)2541 BspViewCellsManager::BspViewCellsManager(ViewCellsTree *vcTree, BspTree *bspTree): 2542 ViewCellsManager(vcTree), mBspTree(bspTree) 2552 2543 { 2553 2544 Environment::GetSingleton()->GetIntValue("BspTree.Construction.samples", mInitialSamples); … … 2691 2682 2692 2683 //-- merge view cells 2684 2693 2685 cout << "starting post processing using " << mPostProcessSamples << " samples ... "; 2694 2686 long startTime = GetTime(); … … 3276 3268 3277 3269 3278 KdViewCellsManager::KdViewCellsManager( KdTree *kdTree):3279 ViewCellsManager( ), mKdTree(kdTree), mKdPvsDepth(100)3270 KdViewCellsManager::KdViewCellsManager(ViewCellsTree *vcTree, KdTree *kdTree): 3271 ViewCellsManager(vcTree), mKdTree(kdTree), mKdPvsDepth(100) 3280 3272 { 3281 3273 } … … 3578 3570 3579 3571 3580 VspBspViewCellsManager::VspBspViewCellsManager(V spBspTree *vspBspTree):3581 ViewCellsManager( ), mVspBspTree(vspBspTree)3572 VspBspViewCellsManager::VspBspViewCellsManager(ViewCellsTree *vcTree, VspBspTree *vspBspTree): 3573 ViewCellsManager(vcTree), mVspBspTree(vspBspTree) 3582 3574 { 3583 3575 Environment::GetSingleton()->GetIntValue("VspBspTree.Construction.samples", mInitialSamples); … … 3609 3601 } 3610 3602 else 3611 { // we can use the view cells tree hierarchy to get the right set 3603 { 3604 // we can use the view cells tree hierarchy to get the right set 3612 3605 mViewCellsTree->CollectBestViewCellSet(mViewCells, mNumActiveViewCells); 3613 3606 } … … 4810 4803 4811 4804 4812 VspOspViewCellsManager::VspOspViewCellsManager(V spTree *vspTree, OspTree *ospTree):4813 ViewCellsManager( ), mVspTree(vspTree), mOspTree(ospTree)4805 VspOspViewCellsManager::VspOspViewCellsManager(ViewCellsTree *vcTree, VspTree *vspTree, OspTree *ospTree): 4806 ViewCellsManager(vcTree), mVspTree(vspTree), mOspTree(ospTree) 4814 4807 { 4815 4808 mHierarchyManager = new HierarchyManager(*vspTree, *ospTree); … … 5474 5467 stream << "<VisibilitySolution>" << endl; 5475 5468 5476 //-- export view space bounding box 5477 5478 //stream << "<ViewSpaceBox" 5479 // << " min=\"" << mViewSpaceBox.Min().x << " " << mViewSpaceBox.Min().y << " " << mViewSpaceBox.Min().z << "\"" 5480 // << " max=\"" << mViewSpaceBox.Max().x << " " << mViewSpaceBox.Max().y << " " << mViewSpaceBox.Max().z << "\" />" << endl; 5481 5482 5469 5483 5470 //-- export bounding boxes 5484 5471 … … 5499 5486 5500 5487 stream << "</BoundingBoxes>" << endl; 5501 5502 // the type of the view space hierarchy:5503 // must be known beforehand because necessary for building view cels5504 //stream << "<ViewSpaceHierarchyType name=\"vspTree\" />" << endl;5505 5488 5506 5489 -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h
r1259 r1264 37 37 class HierarchyManager; 38 38 class BvHierarchy; 39 class ViewCellsTree; 39 40 40 41 struct AxisAlignedPlane; … … 79 80 /** Default constructor. 80 81 */ 81 ViewCellsManager( );82 ViewCellsManager(ViewCellsTree *viewCellsTree); 82 83 83 84 virtual ~ViewCellsManager(); … … 90 91 /** Constructs view cell container with a given number of samples. 91 92 */ 92 virtual int ConstructSubdivision(const ObjectContainer &objects, 93 const VssRayContainer &rays) = 0; 93 virtual int ConstructSubdivision( 94 const ObjectContainer &objects, 95 const VssRayContainer &rays) = 0; 94 96 95 97 /** Computes sample contributions of the rays to the view cells PVS. … … 696 698 used to construct the bsp tree. 697 699 */ 698 BspViewCellsManager( BspTree *tree);700 BspViewCellsManager(ViewCellsTree *viewCellsTree, BspTree *tree); 699 701 700 702 ~BspViewCellsManager(); … … 779 781 public: 780 782 781 KdViewCellsManager( KdTree *tree);783 KdViewCellsManager(ViewCellsTree *viewCellsTree, KdTree *tree); 782 784 783 785 int ConstructSubdivision(const ObjectContainer &objects, … … 844 846 public: 845 847 846 VspBspViewCellsManager(V spBspTree *tree);848 VspBspViewCellsManager(ViewCellsTree *viewCellsTree, VspBspTree *tree); 847 849 ~VspBspViewCellsManager(); 848 850 … … 972 974 public: 973 975 974 VspOspViewCellsManager(V spTree *tree, OspTree *ospTree);976 VspOspViewCellsManager(ViewCellsTree *viewCellsTree, VspTree *tree, OspTree *ospTree); 975 977 ~VspOspViewCellsManager(); 976 978 -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParser.cpp
r1263 r1264 111 111 string element(lname.LocalForm()); 112 112 113 if (element == "BoundingBoxes") 114 EndBoundingBoxes(); 115 113 116 if (element == "ViewCells") 114 117 EndViewCells(); 115 118 116 if (element == "BoundingBoxes")117 EndBoundingBoxes();118 119 119 // inside the view cell description 120 120 if (mCurrentState == PARSE_VIEWCELLS) … … 128 128 EndBspInterior(); 129 129 } 130 131 // finished, create view cells manager 132 if (element == "VisibilitySolution") 133 CreateViewCellsManager(); 130 134 } 131 135 … … 135 139 // go one up in the tree 136 140 if (mCurrentBspNode->GetParent()) 137 { Debug<< "]";141 { cout << "]"; 138 142 mCurrentBspNode = mCurrentBspNode->GetParent(); 139 143 } … … 145 149 // go one up in the tree 146 150 if (mCurrentVspNode->GetParent()) 147 { Debug<< "]";151 { cout << "]"; 148 152 mCurrentVspNode = mCurrentVspNode->GetParent(); 149 153 } … … 155 159 // go one up in the tree 156 160 if (mCurrentViewCell->GetParent()) 157 { Debug<< "]";161 { cout << "]"; 158 162 mCurrentViewCell = mCurrentViewCell->GetParent(); 159 163 } … … 217 221 if (element == "Interior") 218 222 { 219 Debug<< "[";223 cout << "["; 220 224 StartBspInterior(attributes); 221 225 } … … 223 227 if (element == "Leaf") 224 228 { 225 Debug<< "l";229 cout << "l"; 226 230 StartBspLeaf(attributes); 227 231 } … … 234 238 if (element == "Interior") 235 239 { 236 Debug<< "[";240 cout << "["; 237 241 StartVspInterior(attributes); 238 242 } … … 240 244 if (element == "Leaf") 241 245 { 242 Debug<< "l";246 cout << "l"; 243 247 StartVspLeaf(attributes); 244 248 } … … 251 255 if (element == "Interior") 252 256 { 253 Debug<< "[";257 cout << "["; 254 258 StartOspInterior(attributes); 255 259 } … … 257 261 if (element == "Leaf") 258 262 { 259 Debug<< "l";263 cout << "l"; 260 264 StartOspLeaf(attributes); 261 265 } 262 266 } 267 268 269 void ViewCellsParseHandlers::StartBvhElement(string element, 270 AttributeList& attributes) 271 { 272 if (element == "Interior") 273 { 274 cout << "["; 275 StartBvhInterior(attributes); 276 } 277 278 if (element == "Leaf") 279 { 280 cout << "l"; 281 StartBvhLeaf(attributes); 282 } 283 } 284 263 285 264 286 void ViewCellsParseHandlers::StartViewSpaceHierarchyElement(const std::string &element, 265 287 AttributeList& attributes) 266 288 { 267 if (!mViewCellsManager) 268 return; 269 270 //-- use cell type according to the chosen view cell manager 271 switch (mViewCellsManager->GetType()) 272 { 273 case ViewCellsManager::BSP: 274 case ViewCellsManager::VSP_BSP: 289 //if (!mViewCellsManager)return; 290 291 //-- use cell type according to the chosen method 292 293 switch (mViewSpaceHierarchyType) 294 { 295 case BSP: 275 296 StartBspElement(element, attributes); 276 297 break; 277 case V iewCellsManager::VSP_OSP:298 case VSP: 278 299 StartVspElement(element, attributes); 279 300 break; … … 288 309 AttributeList& attributes) 289 310 { 290 if (!mViewCellsManager)291 return; 292 293 //-- use cell type according to the chosen view cell manager 294 switch (m ViewCellsManager->GetType())295 { 296 case ViewCellsManager::VSP_OSP:311 //if (!mViewCellsManager)return; 312 313 //-- use cell type according to the chosen method 314 315 switch (mObjectSpaceHierarchyType) 316 { 317 case OSP: 297 318 StartOspElement(element, attributes); 319 break; 320 case BVH: 321 StartBvhElement(element, attributes); 298 322 break; 299 323 default: … … 331 355 { 332 356 cout << "parsing view cells" << endl; 357 333 358 mCurrentState = PARSE_VIEWCELLS; 359 360 // create new view cells hierarchy 361 mViewCellsTree = new ViewCellsTree(); 334 362 } 335 363 … … 343 371 // decides about the view cell hierarchy 344 372 if (element == "ViewSpaceHierarchy") 345 { 346 //StartViewSpaceHierarchy(attributes);347 cout << "parsing view space partition" << endl;348 mCurrentState = PARSE_VSP;373 { 374 cout << "parsing view space hierarchy" << endl; 375 mCurrentState = PARSE_VIEWSPACE_HIERARCHY; 376 StartViewSpaceHierarchy(attributes); 349 377 } 350 378 … … 352 380 if (element == "ObjectSpaceHierarchy") 353 381 { 354 //StartObjectSpaceHierarchy(attributes); 355 cout << "parsing object space partition" << endl; 356 mCurrentState = PARSE_OSP; 357 } 358 359 // decides the used view cell hierarchy 360 if (element == "ViewSpaceBox") 361 { 362 Debug << "v"; 363 StartViewSpaceBox(attributes); 364 } 365 382 cout << "parsing object space hierarchy" << endl; 383 mCurrentState = PARSE_OBJECTSPACE_HIERARCHY; 384 StartObjectSpaceHierarchy(attributes); 385 } 386 366 387 // decides the used view cell hierarchy 367 388 if (element == "BoundingBox") … … 371 392 } 372 393 373 // parse view space partition394 // parse view space hierarchy 374 395 switch (mCurrentState) 375 396 { 376 case PARSE_V SP:397 case PARSE_VIEWSPACE_HIERARCHY: 377 398 StartViewSpaceHierarchyElement(element, attributes); 378 399 break; 379 case PARSE_O SP:400 case PARSE_OBJECTSPACE_HIERARCHY: 380 401 StartObjectSpaceHierarchyElement(element, attributes); 381 402 break; … … 484 505 485 506 486 void ViewCellsParseHandlers::StartViewSpace Box(AttributeList& attributes)507 void ViewCellsParseHandlers::StartViewSpaceHierarchy(AttributeList& attributes) 487 508 { 488 509 int len = attributes.getLength(); … … 496 517 const char *ptr = attrValue.LocalForm(); 497 518 498 if (attrName == "min") 519 // hierarchy type 520 if (attrName == "type") 521 { 522 if (strcmp(ptr, "bsp") == 0) 523 { 524 cout << "view space hierarchy: Bsp" << endl; 525 mViewSpaceHierarchyType = BSP; 526 } 527 else if (strcmp(ptr, "vsp") == 0) 528 { 529 Debug << "view space hierarchy: Vsp" << endl; 530 mViewSpaceHierarchyType = VSP; 531 } 532 } 533 else if (attrName == "min") // the view space extent 499 534 { 500 535 sscanf(ptr, "%f %f %f", … … 510 545 mViewSpaceBox = AxisAlignedBox3(bmin, bmax); 511 546 512 Debug << "\nview space box: " << mViewSpaceBox << endl; 513 } 514 515 516 void ViewCellsParseHandlers::StartBoundingBox(AttributeList& attributes) 547 // create the hierarchy based on this information 548 CreateViewSpaceHierarchy(); 549 } 550 551 552 void ViewCellsParseHandlers::StartObjectSpaceHierarchy(AttributeList& attributes) 517 553 { 518 554 int len = attributes.getLength(); 519 555 520 556 Vector3 bmin, bmax; 521 int id;522 557 523 558 for (int i = 0; i < len; ++ i) … … 527 562 const char *ptr = attrValue.LocalForm(); 528 563 564 // hierarchy type 565 if (attrName == "type") 566 { 567 if (strcmp(ptr, "bsp") == 0) 568 { 569 Debug << "view space hierarchy: Bsp" << endl; 570 mViewSpaceHierarchyType = BSP; 571 } 572 else if (strcmp(ptr, "vsp") == 0) 573 { 574 Debug << "view space hierarchy: Vsp" << endl; 575 mViewSpaceHierarchyType = VSP; 576 } 577 } 578 } 579 } 580 581 582 583 void ViewCellsParseHandlers::StartBoundingBox(AttributeList& attributes) 584 { 585 int len = attributes.getLength(); 586 587 Vector3 bmin, bmax; 588 int id; 589 590 for (int i = 0; i < len; ++ i) 591 { 592 string attrName(StrX(attributes.getName(i)).LocalForm()); 593 StrX attrValue(attributes.getValue(i)); 594 const char *ptr = attrValue.LocalForm(); 595 529 596 530 597 if (attrName == "id") … … 532 599 sscanf(ptr, "%d", &id); 533 600 } 534 535 601 if (attrName == "min") 536 602 { 537 sscanf(ptr, "%f %f %f", 538 &bmin.x, &bmin.y, &bmin.z); 603 sscanf(ptr, "%f %f %f", &bmin.x, &bmin.y, &bmin.z); 539 604 } 540 605 else if (attrName == "max") 541 606 { 542 sscanf(ptr, "%f %f %f", 543 &bmax.x, &bmax.y, &bmax.z); 607 sscanf(ptr, "%f %f %f", &bmax.x, &bmax.y, &bmax.z); 544 608 } 545 609 } … … 547 611 AxisAlignedBox3 box(bmin, bmax); 548 612 mIBoundingBoxes.push_back(IndexedBoundingBox(id, box)); 549 550 //Debug << "bbox: " << box << endl; 613 //cout << "bbox: " << box << endl; 551 614 } 552 615 … … 563 626 else 564 627 { 565 if (mViewCellsManager->GetType() == ViewCellsManager::BSP) 566 { 567 mBspTree->mRoot = leaf; 568 } 569 else if (mViewCellsManager->GetType() == ViewCellsManager::VSP_BSP) 570 { 571 mVspBspTree->mRoot = leaf; 572 } 628 mVspBspTree->mRoot = leaf; 573 629 } 574 630 575 631 //-- find associated view cell 632 576 633 int viewCellId; 577 634 … … 593 650 594 651 595 if (viewCellId >= 0) // valid view cell 652 if (viewCellId >= 0) // valid view cell found 596 653 { 597 654 // TODO: get view cell with specified id … … 617 674 { 618 675 // add to invalid view space 619 if (mView CellsManager->GetType()== ViewCellsManager::VSP_BSP)676 if (mViewSpaceHierarchyType== ViewCellsManager::VSP_BSP) 620 677 { 621 678 leaf->SetViewCell(mVspBspTree->GetOrCreateOutOfBoundsCell()); … … 656 713 else 657 714 { 658 if (mViewCellsManager->GetType() == ViewCellsManager::BSP) 659 { 660 mBspTree->mRoot = interior; 661 } 662 else 663 { 664 mVspBspTree->mRoot = interior; 665 } 715 mVspBspTree->mRoot = interior; 666 716 } 667 717 … … 712 762 713 763 764 void ViewCellsParseHandlers::CreateViewSpaceHierarchy() 765 { 766 if (mViewSpaceHierarchyType == BSP) 767 { 768 cout << "hierarchy type: Bsp" << endl; 769 770 mVspBspTree = new VspBspTree(); 771 772 // set view space box 773 mVspBspTree->mBox = mViewSpaceBox; 774 } 775 else if (mViewSpaceHierarchyType == VSP) 776 { 777 cout << "hierarchy type: Vsp" << endl; 778 779 mVspTree = new VspTree(); 780 // set view space box 781 mVspTree->mBoundingBox = mViewSpaceBox; 782 } 783 784 cout << "\nview space box: " << mViewSpaceBox << endl; 785 } 786 787 788 void ViewCellsParseHandlers::CreateObjectSpaceHierarchy() 789 { 790 if (mViewSpaceHierarchyType == OSP) 791 { 792 Debug << "object hierarchy type: Osp" << endl; 793 794 mOspTree = new OspTree(); 795 } 796 else if (mViewSpaceHierarchyType == VSP) 797 { 798 Debug << "object hierarchy type: Vsp" << endl; 799 800 mVspTree = new VspTree(); 801 } 802 } 803 714 804 715 805 void ViewCellsParseHandlers::CreateViewCellsManager(/*const char *name*/) 716 806 { 717 /*if (strcmp(name, "bsp") == 0)718 {719 Debug << "view cell type: Bsp" << endl;720 721 mBspTree = new BspTree();722 mBspTree->mBox = mViewSpaceBox;723 724 mViewCellsManager = new BspViewCellsManager(mBspTree);725 }*/726 807 if (mViewSpaceHierarchyType == BSP) // 727 808 { 728 Debug << "view cell type: VspBsp" << endl; 729 730 mVspBspTree = new VspBspTree(); 731 mViewCellsManager = new VspBspViewCellsManager(mVspBspTree); 732 733 mVspBspTree->mBox = mViewSpaceBox; 734 mVspBspTree->mRoot = mBspRoot; 809 Debug << "creating view cells manager: VspBsp" << endl; 810 811 //mVspBspTree = new VspBspTree(); 812 mViewCellsManager = new VspBspViewCellsManager(mViewCellsTree, mVspBspTree); 735 813 } 736 814 else if (mViewSpaceHierarchyType == VSP) 737 815 { 738 Debug << "view cell type: Vsp" << endl; 739 740 mVspTree = new VspTree(); 741 742 if (mObjectSpaceHierarchyType == OSP) 743 mOspTree = new OspTree(); 744 else 745 mBvHierarchy = new BvHierarchy(); 816 Debug << "vcreating view cells manager: VsOspp" << endl; 746 817 747 818 // hack 748 mViewCellsManager = new VspOspViewCellsManager(mVspTree, mOspTree); 749 750 mVspTree->mBoundingBox = mViewSpaceBox; 751 } 752 753 mViewCellsTree = mViewCellsManager->GetViewCellsTree(); 754 mViewCellsTree->mRoot = mViewCellRoot; 819 mViewCellsManager = new VspOspViewCellsManager(mViewCellsTree, mVspTree, mOspTree); 820 } 755 821 756 822 mViewCellsManager->SetViewSpaceBox(mViewSpaceBox); … … 934 1000 } 935 1001 1002 1003 void ViewCellsParseHandlers::StartBvhLeaf(AttributeList& attributes) 1004 { 1005 KdLeaf * leaf = 1006 new KdLeaf(dynamic_cast<KdInterior *>(mCurrentKdNode), NULL); 1007 1008 if (mCurrentKdNode) // replace front or (if not NULL) back child 1009 { 1010 dynamic_cast<KdInterior *>(mCurrentKdNode)->ReplaceChildLink(NULL, leaf); 1011 } 1012 else 1013 { 1014 mOspTree->mRoot = leaf; 1015 } 1016 } 1017 1018 1019 void ViewCellsParseHandlers::StartBvhInterior(AttributeList& attributes) 1020 { 1021 AxisAlignedPlane plane; 1022 int len = attributes.getLength(); 1023 1024 for (int i = 0; i < len; ++ i) 1025 { 1026 string attrName(StrX(attributes.getName(i)).LocalForm()); 1027 StrX attrValue(attributes.getValue(i)); 1028 const char *ptr = attrValue.LocalForm(); 1029 1030 if (attrName == "plane") 1031 { 1032 sscanf(ptr, "%d %f", 1033 &plane.mAxis, &plane.mPosition); 1034 } 1035 } 1036 1037 KdInterior* interior = new KdInterior(NULL); 1038 1039 interior->mAxis = plane.mAxis; 1040 interior->mPosition = plane.mPosition; 1041 1042 if (mCurrentKdNode) // replace NULL child of parent with current node 1043 { 1044 KdInterior *parent = dynamic_cast<KdInterior *>(mCurrentKdNode); 1045 parent->ReplaceChildLink(NULL, interior); 1046 interior->mParent = parent; 1047 } 1048 else 1049 { 1050 mOspTree->mRoot = interior; 1051 } 1052 1053 mCurrentKdNode = interior; 1054 } 936 1055 937 1056 … … 1019 1138 // StdInInputSource src; 1020 1139 try 1021 1140 { 1022 1141 const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); 1142 1023 1143 #if USE_GZLIB 1024 1144 XMLCh *myFilePath = XMLString::transcode(filename.c_str()); … … 1026 1146 GzFileInputSource isource(myFilePath); 1027 1147 parser->parse(isource); 1028 1029 1148 #else 1030 1149 parser->parse(filename.c_str()); -
GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsParserXerces.h
r1263 r1264 99 99 int mCurrentState; 100 100 101 enum {PARSE_OPTIONS, PARSE_VIEWCELLS, PARSE_V SP, PARSE_OSP};101 enum {PARSE_OPTIONS, PARSE_VIEWCELLS, PARSE_VIEWSPACE_HIERARCHY, PARSE_OBJECTSPACE_HIERARCHY}; 102 102 103 103 /// view space / object space hierarchy types … … 125 125 void StartVspElement(string element, AttributeList& attributes); 126 126 127 void StartViewSpaceBox(AttributeList& attributes); 127 void StartViewSpaceHierarchy(AttributeList& attributes); 128 void StartObjectSpaceHierarchy(AttributeList& attributes); 128 129 129 130 void StartBoundingBox(AttributeList& attributes); … … 140 141 void StartOspLeaf(AttributeList& attributes); 141 142 void StartOspInterior(AttributeList& attributes); 143 144 void CreateObjectSpaceHierarchy(); 145 void CreateViewSpaceHierarchy(); 146 147 void StartBvhLeaf(AttributeList& attributes); 148 void StartBvhInterior(AttributeList& attributes); 149 void StartBvhElement(string element, AttributeList& attributes); 142 150 143 151 -
GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.cpp
r1251 r1264 488 488 489 489 Vector3 size = mViewSpaceBox->Size(); 490 tbox.SetMax(0, mViewSpaceBox->Max(0) + size[0] * 0.5 );490 tbox.SetMax(0, mViewSpaceBox->Max(0) + size[0] * 0.5f); 491 491 tbox.SetMin(0, mViewSpaceBox->Min(0) + size[0]); 492 492 *mViewSpaceBox = tbox; … … 514 514 mSceneGraph->CollectObjects(&mObjects); 515 515 516 //-- load view cells from file if requested516 //-- load view cells from file or reconstruct them 517 517 if (!mLoadViewCells) 518 518 { … … 525 525 mViewCellsManager->PrintStatistics(Debug); 526 526 } 527 else 527 #if 1 // test successful view cells loading by exporting them again 528 else 528 529 { 529 530 VssRayContainer dummies; 530 531 mViewCellsManager->Visualize(mObjects, dummies); 531 mViewCellsManager->ExportViewCells("test.xml ", mViewCellsManager->GetExportPvs(), mObjects);532 } 533 532 mViewCellsManager->ExportViewCells("test.xml.zip", mViewCellsManager->GetExportPvs(), mObjects); 533 } 534 #endif 534 535 VssTree *vssTree = NULL; 535 536 -
GTP/trunk/Lib/Vis/Preprocessing/src/gzstream.h
r1201 r1264 77 77 // ASSERT: both input & output capabilities will not be used together 78 78 } 79 int is_open() { return opened; }79 int is_open() const { return opened; } 80 80 gzstreambuf* open( const char* name, int open_mode); 81 81 gzstreambuf* close(); … … 99 99 void close(); 100 100 gzstreambuf* rdbuf() { return &buf; } 101 int is_open() { return buf.is_open(); }101 int is_open() const { return buf.is_open(); } 102 102 }; 103 103 -
GTP/trunk/Lib/Vis/Preprocessing/src/main.cpp
r1248 r1264 212 212 } 213 213 214 215 214 // create a preprocessor thread (note: capsulates calls to boost fuctions!) 215 BoostPreprocessorThread pt(preprocessor); 216 216 217 217 //PreprocessorThread *pt = PreprocessorThreadFactory::Create(preprocessor); 218 BoostPreprocessorThread pt(preprocessor);219 218 220 219 bool guiSupported = false;
Note: See TracChangeset
for help on using the changeset viewer.