Changeset 340


Ignore:
Timestamp:
10/18/05 17:28:31 (19 years ago)
Author:
bittner
Message:

mesh cleanup added

Location:
trunk/VUT/GtpVisibilityPreprocessor/src
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibilityPreprocessor/src/Intersectable.h

    r339 r340  
    4343  virtual void GetRandomSurfacePoint(Vector3 &point, Vector3 &normal) = 0; 
    4444 
     45        virtual ostream &Describe(ostream &s) = 0; 
     46         
    4547}; 
    4648 
  • trunk/VUT/GtpVisibilityPreprocessor/src/Makefile

    r339 r340  
    11############################################################################# 
    22# Makefile for building: preprocessor 
    3 # Generated by qmake (1.07a) (Qt 3.3.2) on: Tue Oct 18 11:00:55 2005 
     3# Generated by qmake (1.07a) (Qt 3.3.2) on: Tue Oct 18 16:48:33 2005 
    44# Project:  preprocessor.pro 
    55# Template: app 
     
    1313LEX             = flex 
    1414YACC            = byacc 
    15 CFLAGS  =       -nologo -Zm200 -W0 -MDd -Zi -Gm -GX  -DUNICODE -DWIN32 -DQT_DLL -DQT_THREAD_SUPPORT 
    16 CXXFLAGS        =       -nologo -Zm200 -W0 -MDd -Zi -Gm -GX  -DUNICODE -DWIN32 -DQT_DLL -DQT_THREAD_SUPPORT 
     15CFLAGS  =       -nologo -Zm200 -W0 -MD -O2 -G7 -GX  -DUNICODE -DWIN32 -DQT_DLL -DQT_THREAD_SUPPORT -DQT_NO_DEBUG 
     16CXXFLAGS        =       -nologo -Zm200 -W0 -MD -O2 -G7 -GX  -DUNICODE -DWIN32 -DQT_DLL -DQT_THREAD_SUPPORT -DQT_NO_DEBUG 
    1717LEXFLAGS        = 
    1818YACCFLAGS       =-d 
    1919INCPATH =        -I"..\src" -I"..\support\xerces\include" -I"..\support\zlib\include" -I"..\support\boost" -I"..\support\devil\include" -I"$(QTDIR)\include" -I"d:\gametools\svn\trunk\VUT\GtpVisibilityPreprocessor\src" -I"C:\Qt\3.3.2\mkspecs\win32-msvc.net" 
    2020LINK    =       "c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\link.exe" 
    21 LFLAGS  =       /NOLOGO /DEBUG /SUBSYSTEM:CONSOLE /LIBPATH:"../support/xerces/lib" /LIBPATH:"../support/devil/lib" /LIBPATH:"$(QTDIR)\lib" 
     21LFLAGS  =       /NOLOGO /DELAYLOAD:comdlg32.dll /DELAYLOAD:oleaut32.dll /DELAYLOAD:winmm.dll /DELAYLOAD:wsock32.dll /DELAYLOAD:winspool.dll /SUBSYSTEM:CONSOLE /LIBPATH:"../support/xerces/lib" /LIBPATH:"../support/devil/lib" /LIBPATH:"$(QTDIR)\lib" 
    2222LIBS    =        "qt-mt332.lib" "qtmain.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "imm32.lib" "winmm.lib" "wsock32.lib" "winspool.lib" "delayimp.lib" "xerces-c_2.lib" "devil.lib" "ilu.lib" "ilut.lib" "opengl32.lib" "glu32.lib" 
    2323MOC             =       $(QTDIR)\bin\moc.exe 
     
    188188        -$(DEL_FILE) ViewCell.obj 
    189189        -$(DEL_FILE) ViewCellBsp.obj 
    190         -$(DEL_FILE) preprocessor.pdb 
    191         -$(DEL_FILE) preprocessor.ilk 
    192         -$(DEL_FILE) vc*.pdb 
    193         -$(DEL_FILE) vc*.idb 
    194  
    195190 
    196191 
     
    349344                SceneGraph.h \ 
    350345                X3dExporter.h \ 
    351                 Containers.h \ 
    352                 AxisAlignedBox3.h \ 
    353                 Rectangle3.h \ 
    354                 Matrix4x4.h \ 
    355                 Vector3.h \ 
    356                 Plane3.h \ 
    357                 common.h \ 
    358                 Exporter.h \ 
    359                 Material.h \ 
     346                Intersectable.h \ 
     347                Containers.h \ 
     348                AxisAlignedBox3.h \ 
     349                Rectangle3.h \ 
     350                Matrix4x4.h \ 
     351                Vector3.h \ 
     352                Plane3.h \ 
     353                common.h \ 
     354                Exporter.h \ 
     355                Material.h \ 
     356                Pvs.h \ 
    360357                 
    361358 
  • trunk/VUT/GtpVisibilityPreprocessor/src/Mesh.cpp

    r339 r340  
    99Mesh::Preprocess() 
    1010{ 
    11   mBox.Initialize(); 
    12  
     11        Cleanup(); 
     12         
     13        mBox.Initialize(); 
    1314  VertexContainer::const_iterator vi = mVertices.begin(); 
    1415  for (; vi != mVertices.end(); vi++) { 
     
    282283  } 
    283284  point *= 1.0f/sum; 
    284   normal = GetFacePlane(faceIndex).mNormal; 
     285         
     286        normal = GetFacePlane(faceIndex).mNormal; 
    285287} 
    286288 
     
    324326{ 
    325327  Face *face = mFaces[faceIndex]; 
    326   return Plane3(mVertices[face->mVertexIndices[0]], 
     328        return Plane3(mVertices[face->mVertexIndices[0]], 
    327329                                                                mVertices[face->mVertexIndices[1]], 
    328330                                                                mVertices[face->mVertexIndices[2]]); 
     331} 
     332 
     333bool 
     334Mesh::ValidateFace(const int i) 
     335{ 
     336        Face *face = mFaces[i]; 
     337 
     338        Plane3 plane = Plane3(mVertices[face->mVertexIndices[0]], 
     339                                                                                                mVertices[face->mVertexIndices[1]], 
     340                                                                                                mVertices[face->mVertexIndices[2]]); 
     341         
     342        if (!eq(Magnitude(plane.mNormal), 1.0f)) 
     343                return false; 
     344} 
     345 
     346void 
     347Mesh::Cleanup() 
     348{ 
     349        int toRemove = 0; 
     350        FaceContainer newFaces; 
     351        for (int i=0; i < mFaces.size(); i++) 
     352                if (ValidateFace(i)) { 
     353                        newFaces.push_back(mFaces[i]); 
     354                } else { 
     355                        cout<<"d"; 
     356                        delete mFaces[i]; 
     357                        toRemove++; 
     358                } 
     359         
     360        if (toRemove) { 
     361                mFaces = newFaces; 
     362        } 
     363         
     364        // cleanup vertices?? 
    329365} 
    330366 
  • trunk/VUT/GtpVisibilityPreprocessor/src/Mesh.h

    r333 r340  
    7777  void AddTriangle(const Triangle3 &triangle); 
    7878  void AddRectangle(const Rectangle3 &triangle); 
    79    
     79 
     80        void Cleanup(); 
     81        bool 
     82        ValidateFace(const int face); 
     83 
    8084  void AddFace(Face *face)  
    8185  { 
     
    141145  void GetRandomSurfacePoint(Vector3 &point, Vector3 &normal); 
    142146 
     147        virtual ostream &Describe(ostream &s) { 
     148                return s<<"Mesh #vertices="<<mVertices.size()<<" #faces="<<mFaces.size(); 
     149        } 
     150 
    143151}; 
    144152 
     
    179187 
    180188 
     189        virtual ostream &Describe(ostream &s) { 
     190                s<<"MeshInstance Id="<<GetId(); 
     191                return mMesh->Describe(s); 
     192        } 
     193         
    181194}; 
    182195 
  • trunk/VUT/GtpVisibilityPreprocessor/src/Ray.h

    r328 r340  
    233233  friend float DistanceToZPlane(const Vector3 &vec, const Ray &ray); 
    234234  friend int MakeIntersectLine(const Plane3 &p, const Plane3 &q, Ray &ray); 
     235 
     236        friend ostream &operator<<(ostream &s, const Ray &r) { 
     237                return s<<"Ray:loc="<<r.loc<<" dir="<<r.dir; 
     238        } 
    235239}; 
    236240 
  • trunk/VUT/GtpVisibilityPreprocessor/src/SamplingPreprocessor.cpp

    r339 r340  
    153153        int sampleContributions = 0; 
    154154 
    155         long t1 = GetTime(); 
     155        long t1 = GetRealTime(); 
    156156        // cast ray to KD tree to find intersection with other objects 
    157157        mKdTree->CastRay(ray); 
    158         long t2 = GetTime(); 
    159  
    160         cout<<object->GetId()<<" "<<TimeDiff(t1, t2); 
     158        long t2 = GetRealTime(); 
     159 
     160        if (0 && object->GetId() > 2197) { 
     161                object->Describe(cout)<<endl; 
     162                cout<<ray<<endl; 
     163        } 
     164 
     165        //      cout<<object->GetId()<<" "<<TimeDiff(t1, t2)<<endl; 
    161166 
    162167        if (mViewCellsType == BSP_VIEW_CELLS) 
     
    380385                        bool viewcellSample = true; 
    381386                        int sampleContributions; 
    382  
     387                        bool debug = false; //(object->GetId() >= 2199); 
    383388                        if (viewcellSample) { 
    384389                                nodeToSample = mKdTree->GetRandomLeaf(Plane3(normal, point)); 
     
    394399                                                                break;                                                   
    395400                                                } 
    396                                                  
    397401                                                if (tries == maxTries) 
    398402                                                        direction = UniformRandomVector(normal); 
     403                                                 
     404                                                if (debug) { 
     405                                                        cout<< 
     406                                                                "normal "<<normal<<endl<< 
     407                                                                "tries "<<tries<<endl<< 
     408                                                                "dir="<<direction<<endl; 
     409                                                } 
     410 
    399411                                        } 
    400412                                        else { 
  • trunk/VUT/GtpVisibilityPreprocessor/src/UnigraphicsParser.cpp

    r312 r340  
    143143      currentMesh->AddFace(face); 
    144144      if (meshGrouping != 0 && 
    145           currentMesh->mFaces.size() >=  meshGrouping) { 
    146         currentMesh->Preprocess(); 
    147         // make an instance of this mesh 
    148         MeshInstance *mi = new MeshInstance(currentMesh); 
    149         root->mGeometry.push_back(mi);   
    150         currentMesh = new Mesh; 
     145                                        currentMesh->mFaces.size() >=  meshGrouping) { 
     146                                currentMesh->Preprocess(); 
     147                                // make an instance of this mesh 
     148                                MeshInstance *mi = new MeshInstance(currentMesh); 
     149                                root->mGeometry.push_back(mi);   
     150                                currentMesh = new Mesh; 
    151151      } 
    152152    } 
  • trunk/VUT/GtpVisibilityPreprocessor/src/Vector3.cpp

    r176 r340  
    200200   
    201201  Vector3 dir(sinTheta*sin(fi), 
    202               cosTheta, 
    203               sinTheta*cos(fi)); 
    204  
     202                                                        cosTheta, 
     203                                                        sinTheta*cos(fi)); 
     204         
    205205   
    206206  //  return Normalize(dir); 
    207  
     207         
    208208  Matrix4x4 m = RotationVectorsMatrix( 
    209                                       normal, 
    210                                       Vector3(0,1,0)); 
     209                                                                                                                                                        normal, 
     210                                                                                                                                                        Vector3(0,1,0)); 
    211211  Matrix4x4 mi = Invert(m); 
    212212  m = m*RotationVectorsMatrix( 
    213                               Vector3(0,1,0), 
    214                               Normalize(dir))*mi; 
     213                                                                                                                        Vector3(0,1,0), 
     214                                                                                                                        Normalize(dir))*mi; 
    215215   
    216216  return TransformNormal(m, normal); 
    217217   
    218 //    return TransformNormal( 
    219 //                       RotationVectorsMatrix( 
    220 //                                             Vector3(0,1,0), 
    221 //                                             Normalize(dir) 
    222 //                                             ), 
    223 //                       normal 
    224 //                       ); 
    225 } 
     218        //    return TransformNormal( 
     219        //                       RotationVectorsMatrix( 
     220        //                                             Vector3(0,1,0), 
     221        //                                             Normalize(dir) 
     222        //                                             ), 
     223        //                       normal 
     224        //                       ); 
     225} 
  • trunk/VUT/GtpVisibilityPreprocessor/src/default.env

    r335 r340  
    99#       filename vienna.x3d 
    1010#       filename ../data/vienna/vienna-simple.x3d 
    11         filename ../data/vienna/vienna-buildings.x3d 
     11#       filename ../data/vienna/vienna-buildings.x3d 
    1212#       filename ../data/vienna/viewcells-25-sel.x3d 
    13 #       filename ../data/atlanta/atlanta2.x3d 
     13        filename ../data/atlanta/atlanta2.x3d 
    1414#       filename ../data/soda/soda.dat 
    1515#       filename ../data/soda/soda5.dat 
     
    6161 
    6262ViewCells { 
    63         #hierarchy kdTree 
    64         hierarchy bspTree 
     63        hierarchy kdTree 
     64        #hierarchy bspTree 
    6565        # hierarchy sceneDependent 
    6666         
  • trunk/VUT/GtpVisibilityPreprocessor/src/preprocessor.pro

    r339 r340  
    1313 
    1414# debuc config 
    15 CONFIG          += console warn_off thread debug 
     15CONFIG          += console warn_off thread release 
    1616 
    1717# RELEASE CONFIG 
Note: See TracChangeset for help on using the changeset viewer.