![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsRead3dsMaxASC.hpp 00003 00004 Create an OpenGLModel from a 3dsMax .ASC format file. 00005 00006 SUKITTI PUNAK (11/11/2004) 00007 UPDATE (04/20/2005) 00008 ******************************************************************************/ 00009 #ifndef TAPs_READ_3DSMAX_ASC_HPP 00010 #define TAPs_READ_3DSMAX_ASC_HPP 00011 00012 // The necessary headers are included in TAPsReadModel.hpp before including 00013 // this header. 00014 #include "Support/TAPsHelpCreateHalfEdgeModel.hpp" 00015 00016 BEGIN_NAMESPACE_TAPs 00017 //============================================================================= 00018 template <typename T> class ReadModels; 00019 //============================================================================= 00020 template <typename T> 00021 class Read3dsMaxASC { 00022 friend class ReadModels<T>; 00023 // Member Functions ----------------------------------------------------------- 00024 private: 00025 //------------------------------------------------------------------------- 00026 // Read an input file 00027 // I/P: fileName 00028 // O/P: *prModel 00029 // Three fns per each operation due to the design of Model types; 00030 // One for PolygonalModel and its derived classes 00031 // One for XPolygonalModel and its derived classes 00032 // One for HalfEdgeModel and its derived classes 00033 // 00034 // Each pairs are exactly identical (both declaration and definition) 00035 // except the passed prModel pointer. 00036 static bool readFile( const char *fileName, OpenGL::PolygonalModel<T> * const prModel ); 00037 static bool readFile( const char *fileName, OpenGL::XPolygonalModel<T> * const prModel ); 00038 static bool readFile( const char *fileName, OpenGL::HalfEdgeModel<T> * const prModel ); 00039 //------------------------------------------------------------------------- 00040 // Convert the ambient light line 00041 static void ProcessAmbientLight( char *line, OpenGL::PolygonalModel<T> * const prModel ); 00042 static void ProcessAmbientLight( char *line, OpenGL::XPolygonalModel<T> * const prModel ); 00043 static void ProcessAmbientLight( char *line, OpenGL::HalfEdgeModel<T> * const prModel ); 00044 //------------------------------------------------------------------------- 00045 // Convert the named object line 00046 static void ProcessNamedObject( char *line, OpenGL::PolygonalModel<T> * const prModel ); 00047 static void ProcessNamedObject( char *line, OpenGL::XPolygonalModel<T> * const prModel ); 00048 static void ProcessNamedObject( char *line, OpenGL::HalfEdgeModel<T> * const prModel ); 00049 //------------------------------------------------------------------------- 00050 // Convert the tri-mesh line 00051 static void ProcessTriMesh( char *line, OpenGL::PolygonalModel<T> * const prModel ); 00052 static void ProcessTriMesh( char *line, OpenGL::XPolygonalModel<T> * const prModel ); 00053 static void ProcessTriMesh( char *line, OpenGL::HalfEdgeModel<T> * const prModel ); 00054 //------------------------------------------------------------------------- 00055 // Convert a vertex line 00056 static void ProcessVertex( char *line, OpenGL::PolygonalModel<T> * const prModel ); 00057 static void ProcessVertex( char *line, OpenGL::XPolygonalModel<T> * const prModel ); 00058 static void ProcessVertex( char *line, OpenGL::HalfEdgeModel<T> * const prModel ); 00059 //------------------------------------------------------------------------- 00060 // Convert a face line 00061 static void ProcessFace( char *line, OpenGL::PolygonalModel<T> * const prModel ); 00062 static void ProcessFace( char *line, OpenGL::XPolygonalModel<T> * const prModel ); 00063 static void ProcessFace( char *line, OpenGL::HalfEdgeModel<T> * const prModel ); 00064 //------------------------------------------------------------------------- 00065 //----------------------------------------------------------------------------- 00066 // Data Members --------------------------------------------------------------- 00067 private: 00068 static int faceNo; // current face number 00069 static int vertexNo; // current vertex number 00070 static FILE * fileIn; 00071 }; 00072 //============================================================================= 00073 END_NAMESPACE_TAPs 00074 //----------------------------------------------------------------------------- 00075 // Include definition if TAPs_USE_EXPORT is not defined 00076 //#if !defined( TAPs_USE_EXPORT ) 00077 #include "TAPsRead3dsMaxASC.cpp" 00078 //#endif 00079 //----------------------------------------------------------------------------- 00080 #endif 00081 //345678901234567890123456789012345678901234567890123456789012345678901234567890 00082 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8