Ms3dLoader.h
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:3k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // Ms3dLoader2.h: unsigned shorterface for the CMs3dLoader2 class.
  2. /*****************************************************
  3.          class CMs3dLoader2
  4.                     Author Hunter3D
  5.      Loads and renders MilkShape 3D models.
  6. In this version ,It can get texture file names from Ms3d file. 
  7. Please waite me to add animation in CMs3dLoader3...
  8. *****************************************************/
  9. //////////////////////////////////////////////////////////////////////
  10. #if !defined(AFX_MS3DLOADER2_H__9CA81F21_D209_11D5_85EA_5254AB37CDC9__INCLUDED_)
  11. #define AFX_MS3DLOADER2_H__9CA81F21_D209_11D5_85EA_5254AB37CDC9__INCLUDED_
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif // _MSC_VER > 1000
  15. // Vertex structure
  16. #include "structdef.h"
  17. typedef struct MS3DHeader_TYP
  18. {
  19. char m_ID[10];
  20. int  m_version;
  21. } MS3DHeader;
  22. // Vertex information
  23. typedef struct MS3DVertex_TYP
  24. {
  25. unsigned char m_flags;
  26. float m_vertex[3];
  27. char m_boneID;
  28. unsigned char m_refCount;
  29. } MS3DVertex;
  30. // Triangle information
  31. typedef struct MS3DTriangle_TYP
  32. {
  33. unsigned short m_flags;
  34. unsigned short m_vertexIndices[3];
  35. float m_vertexNormals[3][3];
  36. float m_u[3];
  37. float m_v[3];
  38. unsigned char m_smoothingGroup;
  39. unsigned char m_groupIndex;
  40. } MS3DTriangle;
  41. ///Mesh information
  42. typedef struct MS3DMesh_TYP
  43. {
  44. unsigned char m_flags;
  45. char m_name[32];
  46. unsigned short  m_numTriangles;
  47. unsigned short *m_TriangleIndices;
  48. char m_MaterialIndex;
  49. } MS3DMesh;
  50. // Material information
  51. typedef struct MS3DMaterial_TYP
  52. {
  53.     char m_name[32];
  54.     float m_ambient[4];
  55.     float m_diffuse[4];
  56.     float m_specular[4];
  57.     float m_emissive[4];
  58.     float m_shininess; // 0.0f - 128.0f
  59.     float m_transparency; // 0.0f - 1.0f
  60.     char m_mode; // 0, 1, 2 is unused now
  61.     char m_texture[128];
  62.     char m_alphamap[128];
  63. } MS3DMaterial;
  64. /////////////////////////////////////////////
  65. struct Vertex
  66. {
  67. float m_location[3];
  68. };
  69. // Triangle structure
  70. struct Triangle
  71. {
  72. float m_normal[3];
  73. float m_u[3], m_v[3];
  74. unsigned short   m_vertexIndices[3];
  75. };
  76. // Mesh
  77. struct Mesh
  78. {
  79. unsigned int   m_textureIndex;
  80. unsigned short m_numTriangles;
  81. unsigned short *m_pTriangleIndices;
  82. };
  83. //////////////////////////////////////////////////
  84. //////////////////////////////////////////////////
  85. class CMs3dLoader  
  86. {
  87. public:
  88. CMs3dLoader();
  89. ~CMs3dLoader();
  90. public:
  91.     bool Load( const char *filename ) ;
  92. void Render(NORMAL nViewDirection);
  93.         void DrawBoundary();
  94. BOUNDARY_3D   m_boundary;
  95. protected:
  96. bool CheckVisible(NORMAL nView,float *pCheck);
  97. // Meshes used
  98. unsigned short m_numMeshes;
  99. unsigned short m_numTriangles;
  100. unsigned short m_numVertices;
  101. unsigned short m_numTexture;
  102. Mesh *m_pMeshes;
  103. // Triangles used
  104. Triangle *m_pTriangles;
  105. // Vertices Used
  106. Vertex *m_pVertices;
  107.         //  Texture
  108. unsigned int *m_pTexture;
  109. };
  110. #endif // !defined(AFX_MS3DLOADER2_H__9CA81F21_D209_11D5_85EA_5254AB37CDC9__INCLUDED_)