Ignore:
Timestamp:
09/12/06 17:39:08 (18 years ago)
Author:
mattausch
Message:

worked on triangle processing. logical units will be created by grouping objects
using their visibility definitions.

File:
1 edited

Legend:

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

    r1315 r1344  
    55#include "IntersectableWrapper.h" 
    66#include "BvHierarchy.h" 
     7#include "Triangle3.h" 
     8#include "Polygon3.h" 
    79 
    810 
     
    152154 
    153155 
    154 } 
     156void Exporter::ExportIntersectable(Intersectable *object) 
     157{ 
     158        switch (object->Type())  
     159        { 
     160        case Intersectable::MESH_INSTANCE: 
     161                ExportMeshInstance((MeshInstance *)object); 
     162                break; 
     163        case Intersectable::TRANSFORMED_MESH_INSTANCE: 
     164                ExportTransformedMeshInstance(dynamic_cast<TransformedMeshInstance *>(object)); 
     165                break; 
     166        case Intersectable::VIEW_CELL: 
     167                ExportViewCell(dynamic_cast<ViewCell *>(object)); 
     168                break; 
     169        case Intersectable::KD_INTERSECTABLE: 
     170                ExportKdIntersectable(*(dynamic_cast<KdIntersectable *>(object))); 
     171                break; 
     172        case Intersectable::TRIANGLE_INTERSECTABLE: 
     173                { 
     174                        const Triangle3 triangle = dynamic_cast<TriangleIntersectable *>(object)->GetItem(); 
     175 
     176                        VertexContainer vertices; 
     177                        vertices.push_back(triangle.mVertices[0]); 
     178                        vertices.push_back(triangle.mVertices[1]); 
     179                        vertices.push_back(triangle.mVertices[2]); 
     180 
     181                        Polygon3 poly(vertices); 
     182                        ExportPolygon(&poly); 
     183                        break; 
     184                } 
     185        default: 
     186                cerr << "Sorry the export for object type " << Intersectable::GetTypeName(object) << " is not available yet" << endl; 
     187                break; 
     188        } 
     189} 
     190 
     191void Exporter::ExportMeshInstance(MeshInstance *object) 
     192{ 
     193        // $$JB$$ 
     194        // in the future check whether the mesh was not already exported 
     195        // and use a reference to the that mesh instead 
     196        ExportMesh(object->GetMesh()); 
     197} 
     198 
     199 
     200void Exporter::ExportTransformedMeshInstance(TransformedMeshInstance *mi) 
     201{ 
     202        Mesh mesh(*mi->GetMesh()); 
     203 
     204        Matrix4x4 m; 
     205        mi->GetWorldTransform(m); 
     206        mesh.ApplyTransformation(m); 
     207 
     208        ExportMesh(&mesh); 
     209} 
     210 
     211 
     212void Exporter::ExportViewCells(const ViewCellContainer &viewCells) 
     213{ 
     214        ViewCellContainer::const_iterator it, it_end = viewCells.end(); 
     215 
     216        for (it = viewCells.begin(); it != it_end; ++ it) 
     217        { 
     218                ExportViewCell(*it); 
     219        } 
     220} 
     221 
     222 
     223 
     224} 
Note: See TracChangeset for help on using the changeset viewer.