Changeset 1404


Ignore:
Timestamp:
09/18/06 02:23:47 (18 years ago)
Author:
mattausch
Message:

debugging after merge

Location:
GTP/trunk/Lib/Vis/Preprocessing
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/scripts/generate_viewcells

    r1277 r1404  
    11#!/bin/sh 
     2 
    23PROGRAM=../bin/release/Preprocessor.exe 
     4#PROGRAM=../bin/Debug/Preprocessor.exe 
    35 
    46 
     
    2931-vsp_bsp_subdivision_stats=$LOG_PREFIX-$METHOD-subdivisionStats.log \ 
    3032-view_cells_post_process_merge=false \ 
    31 -view_cells_active=400 \ 
     33-view_cells_active=1000 \ 
    3234-view_cells_filename=$LOG_PREFIX-visibility.xml.zip \ 
    3335-view_cells_export_pvs=true \ 
  • GTP/trunk/Lib/Vis/Preprocessing/scripts/generate_viewcells.env

    r1277 r1404  
    99#       filename ../data/vienna/vienna-simple.x3d 
    1010#       filename ../data/vienna/vienna-buildings.x3d 
    11         filename ../data/vienna/city1500_flat_1.x3d 
    12 #       filename ../data/vienna/vienna-buildings.x3d;../data/vienna-roads.x3d;../data/vienna/vienna-roofs.x3d 
     11#       filename ../data/vienna/city1500_flat_1.x3d 
     12#       filename ../data/vienna/vienna-roads.x3d 
     13#       filename ../data/vienna/vienna-buildings.x3d;../data/vienna/vienna-roads.x3d;../data/vienna/vienna-roofs.x3d 
    1314#filename ../data/vienna/vienna-buildings.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d 
    1415filename ../data/vienna/city1500_flat_1.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d 
     
    2930#       type rss 
    3031        detectEmptyViewSpace true 
    31         loadPolygonsAsMeshes false 
     32        loadMeshes true 
    3233        applyVisibilityFilter true 
    3334        applyVisibilitySpatialFilter true 
  • GTP/trunk/Lib/Vis/Preprocessing/scripts/vienna.env

    r1052 r1404  
    88#       filename vienna.x3d 
    99#       filename ../data/vienna/vienna-simple.x3d 
    10 #       filename ../data/vienna/vienna-buildings.x3d 
    11         filename ../data/vienna/city1500_flat_1.x3d 
     10        filename ../data/vienna/vienna-buildings.x3d 
     11#       filename ../data/vienna/city1500_flat_1.x3d 
    1212#       filename ../data/vienna/vienna-buildings.x3d;../data/vienna-roads.x3d;../data/vienna/vienna-roofs.x3d 
    13 filename ../data/vienna/vienna-buildings.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d 
     13#filename ../data/vienna/vienna-buildings.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d 
    1414#filename ../data/vienna/city1500_flat_1.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d 
    1515#filename ../data/vienna/vienna-buildings.x3d;../data/vienna/vienna-roofs.x3d;../data/vienna/vienna-roads.x3d;../data/vienna/vienna-plane.x3d 
     
    2929#       type rss 
    3030        detectEmptyViewSpace true 
    31         loadPolygonsAsMeshes false 
     31        loadMeshes false 
    3232} 
    3333 
  • GTP/trunk/Lib/Vis/Preprocessing/src/BoostPreprocessorThread.cpp

    r1199 r1404  
    7575void BoostPreprocessorThread::RunThread() 
    7676{ 
    77   mThread->join(); 
     77        Main(); 
     78  //mThread->join(); 
    7879} 
    7980 
  • GTP/trunk/Lib/Vis/Preprocessing/src/BvHierarchy.cpp

    r1379 r1404  
    16161616} 
    16171617 
     1618/* 
     1619Mesh *BvHierarchy::MergeLeafToMesh() 
     1620void BvHierarchy::MergeLeavesToMeshes() 
     1621{ 
     1622        vector<BvhLeaf *> leaves; 
     1623        CollectLeaves(leaves); 
     1624 
     1625        vector<BvhLeaf *>::const_iterator lit, lit_end = leaves.end(); 
     1626 
     1627        for (lit = leaves.begin(); lit != lit_end; ++ lit) 
     1628        { 
     1629                Mesh *mesh = MergeLeafToMesh(*lit); 
     1630        } 
     1631}*/ 
     1632 
    16181633 
    16191634SubdivisionCandidate *BvHierarchy::PrepareConstruction(const VssRayContainer &sampleRays, 
     
    16211636{ 
    16221637        /////////////////////////////////////////////////////////////// 
    1623         // note matt: we assume that we have objects sorted by their id 
     1638        //-- note matt: we assume that we have objects sorted by their id =>  
     1639        //-- we don't have to sort them here and an binary search  
     1640        //-- for identifying if a object is in a leaf. 
    16241641 
    16251642        mBvhStats.Reset(); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp

    r1344 r1404  
    146146                { 
    147147                        SetFilled(); 
    148                         ExportGeometry(leaf->mObjects); 
     148                        ExportGeometry(leaf->mObjects, true); 
    149149                } 
    150150        } 
     
    221221 
    222222 
    223  
    224 } 
     223void Exporter::ExportGeometry(const ObjectContainer &objects,  
     224                                                          const bool exportSingleMesh) 
     225{ 
     226        ObjectContainer::const_iterator oit, oit_end = objects.end(); 
     227 
     228        if (!exportSingleMesh) 
     229        { 
     230                for (oit = objects.begin(); oit != oit_end; ++ oit) 
     231                { 
     232                        if (0) SetForcedMaterial(RandomMaterial()); 
     233                        ExportIntersectable(*oit); 
     234                } 
     235 
     236                return; 
     237        } 
     238 
     239        //-- all objects exported as one mesh 
     240        //-- hack: currently it works only for triangles 
     241        PolygonContainer polys; 
     242 
     243        for (oit = objects.begin(); oit != oit_end; ++ oit) 
     244        { 
     245                Intersectable *obj = *oit; 
     246                switch (obj->Type()) 
     247                { 
     248                case Intersectable::TRIANGLE_INTERSECTABLE: 
     249                        { 
     250                                TriangleIntersectable *ti = dynamic_cast<TriangleIntersectable *>(obj); 
     251                                polys.push_back(new Polygon3(ti->GetItem())); 
     252                break; 
     253                        } 
     254                default: 
     255                        cout << "merging of object type " << obj->Type() << " not implemented yet" << endl; 
     256                        break; 
     257                } 
     258        } 
     259 
     260        Mesh dummyMesh; 
     261        PolygonContainer::const_iterator pit, pit_end = polys.end(); 
     262 
     263        for (pit = polys.begin(); pit != pit_end; ++ pit) 
     264        { 
     265                Polygon3 *poly = (*pit); 
     266                IncludePolyInMesh(*poly, dummyMesh); 
     267        } 
     268         
     269        ExportMesh(&dummyMesh); 
     270        CLEAR_CONTAINER(polys); 
     271} 
     272 
     273 
     274 
     275} 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.h

    r1344 r1404  
    123123 
    124124  virtual void 
    125   ExportGeometry(const ObjectContainer &objects) = 0; 
     125  ExportGeometry(const ObjectContainer &objects, const bool exportSingleMesh = false); 
    126126 
    127127  virtual void 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Polygon3.cpp

    r1344 r1404  
    5252 
    5353        mMaterial = parentMesh->mMaterial; 
     54} 
     55 
     56 
     57Polygon3::Polygon3(const Triangle3 &tri): 
     58mMaterial(NULL),  
     59mParent(NULL),  
     60mPiercingRays(0),  
     61mPlane(NULL) 
     62{        
     63        mVertices.reserve(3); 
     64         
     65        mVertices.push_back(tri.mVertices[0]); 
     66        mVertices.push_back(tri.mVertices[1]); 
     67        mVertices.push_back(tri.mVertices[2]); 
    5468} 
    5569 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Polygon3.h

    r1328 r1404  
    3737        */ 
    3838        Polygon3(MeshInstance *parent); 
     39        /** A Triangle is converted to a polygon. 
     40        */ 
     41        Polygon3(const Triangle3 &tri); 
    3942 
    4043        ~Polygon3() {DEL_PTR(mPlane);} 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Preprocessor.cpp

    r1381 r1404  
    233233        Parser *parser; 
    234234        vector<string> filenames; 
    235         int files = SplitFilenames(filename, filenames); 
     235        const int files = SplitFilenames(filename, filenames); 
    236236        cout << "number of input files: " << files << endl; 
    237237        bool result = false; 
     
    239239        // root for different files 
    240240        mSceneGraph->SetRoot(new SceneGraphNode()); 
     241 
     242        // intel ray caster can only trace triangles 
     243        vector<FaceParentInfo> *fi = (mRayCastMethod == Preprocessor::INTEL_RAYCASTER) ? 
     244                &mFaceParents : NULL; 
    241245 
    242246        if (files == 1) { 
     
    253257 
    254258                cout << filename << endl; 
    255  
    256                 if (mRayCastMethod == Preprocessor::INTEL_RAYCASTER) 
    257                 {  
    258                         result = parser->ParseFile( 
     259                 
     260                result = parser->ParseFile( 
    259261                                filename,  
    260262                                mSceneGraph->GetRoot(), 
    261263                                mLoadMeshes, 
    262                                 &mFaceParents); 
    263                 } 
    264                 else 
    265                 {  
    266                         result = parser->ParseFile(filename, mSceneGraph->GetRoot(), mLoadMeshes); 
    267                 } 
    268                  
     264                                fi); 
     265                         
    269266                delete parser; 
    270267 
    271         } else { 
    272                  
    273                 for (int i= 0; i < filenames.size(); i++) { 
    274                   if (strstr(filenames[i].c_str(), ".x3d")) 
    275                         parser = new X3dParser; 
    276                   else  
    277                         parser = new UnigraphicsParser; 
    278                    
    279                   SceneGraphNode *node = new SceneGraphNode(); 
    280                   bool success; 
    281                    
    282                   if (mRayCastMethod == Preprocessor::INTEL_RAYCASTER) 
    283                   {  
    284                           success = parser->ParseFile( 
    285                                   filename,  
    286                                   node, 
    287                                   mLoadMeshes, 
    288                                   &mFaceParents); 
    289                   } 
    290                   else 
    291                   { 
    292                           success = parser->ParseFile(filename, node, mLoadMeshes); 
    293                   } 
    294  
    295                   if (success)  
    296                   {  
    297                           mSceneGraph->GetRoot()->mChildren.push_back(node); 
    298                           result = true; // at least one file parsed 
    299                   } 
    300                    
    301                   delete parser; 
     268        }  
     269        else { 
     270                vector<string>::const_iterator fit, fit_end = filenames.end(); 
     271                 
     272                for (fit = filenames.begin(); fit != fit_end; ++ fit)  
     273                { 
     274                        const string filename = *fit; 
     275 
     276                        cout << "parsing file " << filename.c_str() << endl; 
     277                        if (strstr(filename.c_str(), ".x3d")) 
     278                                parser = new X3dParser; 
     279                        else  
     280                                parser = new UnigraphicsParser; 
     281 
     282                        SceneGraphNode *node = new SceneGraphNode(); 
     283                        const bool success = parser->ParseFile( 
     284                                filename,  
     285                                node, 
     286                                mLoadMeshes, 
     287                                fi); 
     288 
     289                        if (success)  
     290                        {  
     291                                mSceneGraph->GetRoot()->mChildren.push_back(node); 
     292                                result = true; // at least one file parsed 
     293                        } 
     294 
     295                        delete parser; 
    302296                } 
    303297        } 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp

    r1381 r1404  
    26252625        } 
    26262626 
     2627        /////////////////////////////////////// 
    26272628        //-- post processing of bsp view cells 
    26282629 
     
    37553756        } 
    37563757 
    3757         if (0)  
     3758        if (1)  
    37583759        { 
    37593760                mColorCode = 1; // export merged view cells using pvs coding 
     
    51275128                        if (mExportGeometry) 
    51285129                        { 
    5129                                 exporter->ExportGeometry(objects); 
     5130                                exporter->ExportGeometry(objects, true); 
    51305131                        } 
    51315132 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VrmlExporter.cpp

    r1344 r1404  
    11081108 
    11091109 
    1110 void VrmlExporter::ExportGeometry(const ObjectContainer &objects) 
    1111 { 
    1112         ObjectContainer::const_iterator oit, oit_end = objects.end(); 
    1113  
    1114         if (1) 
    1115         { 
    1116                 // export using native or random material 
    1117                 for (oit = objects.begin(); oit != oit_end; ++ oit) 
    1118                 { 
    1119                         if (0) 
    1120                         { 
    1121                                 mUseForcedMaterial = true; 
    1122                                 SetForcedMaterial(RandomMaterial()); 
    1123                         } 
    1124                         ExportIntersectable(*oit); 
    1125                 } 
    1126                 return; 
    1127         } 
    1128  
    1129         /////////////////////////////////// 
    1130         // method 2 (hacky) 
    1131         // all object exported as one mesh 
    1132         PolygonContainer polys; 
    1133  
    1134         for (oit = objects.begin(); oit != oit_end; ++ oit) 
    1135         { 
    1136                 MeshInstance *mi = dynamic_cast<MeshInstance *>(*oit); 
    1137                 polys.push_back(new Polygon3(mi->GetMesh()->mVertices)); 
    1138         } 
    1139  
    1140         Mesh dummyMesh; 
    1141         PolygonContainer::const_iterator pit, pit_end = polys.end(); 
    1142  
    1143         for (pit = polys.begin(); pit != pit_end; ++ pit) 
    1144         { 
    1145                 Polygon3 *poly = (*pit); 
    1146                 IncludePolyInMesh(*poly, dummyMesh); 
    1147         } 
    1148          
    1149         ExportMesh(&dummyMesh); 
    1150  
    1151         CLEAR_CONTAINER(polys); 
    1152 } 
    1153  
    1154  
    1155  
    11561110bool VrmlExporter::ExportRssTree2(const RssTree &tree, 
    11571111                                                                  const Vector3 direction) 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VrmlExporter.h

    r1344 r1404  
    8989  ExportViewCell(ViewCell *viewCell); 
    9090 
    91   virtual void 
    92   ExportGeometry(const ObjectContainer &objects); 
    93  
    9491  bool 
    9592  ExportRays(const RayContainer &rays, 
  • GTP/trunk/Lib/Vis/Preprocessing/src/VssPreprocessor.cpp

    r1328 r1404  
    466466  mSceneGraph->CollectObjects(&mObjects); 
    467467 
    468   //-- load view cells from file or reconstruct them 
    469468  if (!mLoadViewCells) 
    470469  { 
     470          //-- generate new view cells or reconstruct them 
     471          //-- for construction the manager uses it's own set of samples 
    471472          mViewCellsManager->SetViewSpaceBox(vbox); 
    472           // construct view cells using it's own set of samples 
    473473          mViewCellsManager->Construct(this); 
    474474 
    475           //-- several visualizations and statistics 
     475          // output visualizations and statistics 
    476476          Debug << "view cells construction finished: " << endl; 
    477477          mViewCellsManager->PrintStatistics(Debug); 
    478478  } 
    479 #if 1 // test successful view cells loading by exporting them again 
     479#if 1  
    480480  else  
    481481  {       
    482           VssRayContainer dummies; 
     482          //-- load view cells from file 
     483          //-- test successful view cells loading by exporting them again 
     484      VssRayContainer dummies; 
    483485          mViewCellsManager->Visualize(mObjects, dummies); 
    484486          mViewCellsManager->ExportViewCells("test.xml.zip", mViewCellsManager->GetExportPvs(), mObjects); 
    485487  } 
    486488#endif 
     489 
    487490  VssTree *vssTree = NULL;  
    488  
    489   long initialTime = GetTime(); 
     491  const long initialTime = GetTime(); 
    490492 
    491493  if (mLoadInitialSamples) 
  • GTP/trunk/Lib/Vis/Preprocessing/src/X3dExporter.cpp

    r1344 r1404  
    10471047 
    10481048 
    1049 void X3dExporter::ExportGeometry(const ObjectContainer &objects) 
    1050 { 
    1051         ObjectContainer::const_iterator oit, oit_end = objects.end(); 
    1052  
    1053         if (1) 
    1054         { 
    1055                 for (oit = objects.begin(); oit != oit_end; ++ oit) 
    1056                 { 
    1057                         if (0) 
    1058                                 SetForcedMaterial(RandomMaterial()); 
    1059                          
    1060                         ExportIntersectable(*oit); 
    1061                 } 
    1062  
    1063                 return; 
    1064         } 
    1065  
    1066         // hack: all object exported as one mesh 
    1067         PolygonContainer polys; 
    1068  
    1069         for (oit = objects.begin(); oit != oit_end; ++ oit) 
    1070         { 
    1071                 polys.push_back(new Polygon3(dynamic_cast<MeshInstance *>(*oit)->GetMesh()->mVertices)); 
    1072         } 
    1073  
    1074         Mesh dummyMesh; 
    1075         PolygonContainer::const_iterator pit, pit_end = polys.end(); 
    1076  
    1077         for (pit = polys.begin(); pit != pit_end; ++ pit) 
    1078         { 
    1079                 Polygon3 *poly = (*pit); 
    1080                 IncludePolyInMesh(*poly, dummyMesh); 
    1081         } 
    1082          
    1083         ExportMesh(&dummyMesh); 
    1084  
    1085         CLEAR_CONTAINER(polys); 
    1086 } 
    1087  
    1088  
    10891049bool 
    10901050X3dExporter::ExportRssTree2(const RssTree &tree, 
  • GTP/trunk/Lib/Vis/Preprocessing/src/X3dExporter.h

    r1344 r1404  
    8686  ExportViewCell(ViewCell *viewCell); 
    8787 
    88   virtual void 
    89   ExportGeometry(const ObjectContainer &objects); 
    90  
    9188  bool 
    9289  ExportRays(const RayContainer &rays, 
  • GTP/trunk/Lib/Vis/Preprocessing/src/X3dParser.cpp

    r1379 r1404  
    250250                         for (tit = triangles.begin(); tit != tit_end; ++ tit) 
    251251                         { 
    252                                  cout << "triangle: " << *tit << endl; 
     252                                 //cout << "triangle: " << *tit << endl; 
    253253                                 TriangleIntersectable *ti = new TriangleIntersectable(*tit); 
    254254                                 mCurrentNode->mGeometry.push_back(ti); 
     
    292292                                 mCurrentNode->mGeometry.push_back(mi); 
    293293 
    294                                  if (mCurrentMaterial) 
     294                                 if (mCurrentMaterial && !mCurrentMesh->mMaterial) 
    295295                                 { 
    296296                                         // HACK: add the material to the mesh directly if no material yet 
    297                                          if (!mCurrentMesh->mMaterial) 
    298                                                  mCurrentMesh->mMaterial = mCurrentMaterial; 
     297                                         mCurrentMesh->mMaterial = mCurrentMaterial; 
    299298                                 } 
    300299                         } 
  • GTP/trunk/Lib/Vis/Preprocessing/src/main.cpp

    r1387 r1404  
    22//#define USE_QT 0 
    33#endif 
    4  
     4//#define USE_QT 0 
    55#define USE_THREADS 1 
    66 
     
    180180        preprocessor->KdTreeStatistics(cout); 
    181181 
    182         /*preprocessor->mKdTree->ExportBinTree("kd.bin.gz"); 
    183         MeshManager::GetSingleton()->ExportEntries("meshes.bin"); 
    184  
    185         KdTree *kdTree2 = new KdTree; 
    186  
    187         cout << "loading kd tree ... "; 
    188         long startTime = GetTime(); 
    189         kdTree2->LoadBinTree("kd.bin.gz", preprocessor->mObjects); 
    190                  
    191         cout << "finished in " << TimeDiff(startTime, GetTime()) * 1e-3 << " secs" << endl; 
    192  
    193         Exporter *exporter = Exporter::GetExporter("testkd.x3d"); 
    194         MeshManager::GetSingleton()->ExportEntries("meshes.bin"); 
    195  
    196         if (exporter)  
    197         { 
    198                 exporter->SetWireframe(); 
    199                 exporter->ExportKdTree(*kdTree2, true); 
    200  
    201                 delete exporter; 
    202         } 
    203  
    204         DEL_PTR(kdTree2); 
    205 */ 
    206182        // parse view cells related options 
    207183        preprocessor->PrepareViewCells(); 
     
    256232 
    257233                  rendererWidget->Show(); 
    258                   guiSupported = true; 
    259  
    260                    
     234                  guiSupported = true;  
    261235                } 
    262236 
    263                 qApp->exec(); 
    264                  
     237                qApp->exec();    
    265238#endif 
    266239          } 
Note: See TracChangeset for help on using the changeset viewer.