Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/john/src/3ds.h @ 2035

Last change on this file since 2035 was 2035, checked in by john, 20 years ago

Diese Dateien werden für das Importieren von 3ds Modellen gebraucht.
3ds importiert die Daten.
3dUnit enthält die Daten.
3dsStructs definiert einige 3d Variablen

File size: 3.7 KB
Line 
1#ifndef _3DS_H
2#define _3DS_H
3
4//>------ Primary Chunk, at the beginning of each file
5#define PRIMARY       0x4D4D
6
7//>------ Main Chunks
8#define OBJECTINFO    0x3D3D                            // This gives the version of the mesh and is found right before the material and object information
9#define VERSION       0x0002                            // This gives the version of the .3ds file
10#define EDITKEYFRAME  0xB000                            // This is the header for all of the key frame info
11
12//>------ sub defines of OBJECTINFO
13#define MATERIAL          0xAFFF                                // This stored the texture info
14#define OBJECT            0x4000                                // This stores the faces, vertices, etc...
15
16//>------ sub defines of MATERIAL
17#define MATNAME       0xA000                            // This holds the material name
18#define MATDIFFUSE    0xA020                            // This holds the color of the object/material
19#define MATMAP        0xA200                            // This is a header for a new material
20#define MATMAPFILE    0xA300                            // This holds the file name of the texture
21
22#define OBJECT_MESH   0x4100                            // This lets us know that we are reading a new object
23
24//>------ sub defines of OBJECT_MESH
25#define OBJECT_VERTICES     0x4110                      // The objects vertices
26#define OBJECT_FACES            0x4120                  // The objects faces
27#define OBJECT_MATERIAL         0x4130                  // This is found if the object has a material, either texture map or color
28#define OBJECT_UV                       0x4140                  // The UV texture coordinates
29
30#include "3dStructs.h"
31
32// Here is our structure for our 3DS indicies (since .3DS stores 4 unsigned shorts)
33struct tIndices {                                                       
34
35        unsigned short a, b, c, bVisible;               // This will hold point1, 2, and 3 index's into the vertex array plus a visible flag
36};
37
38// This holds the chunk info
39struct tChunk
40{
41        unsigned short int ID;                                  // The chunk's ID               
42        unsigned int length;                                    // The length of the chunk
43        unsigned int bytesRead;                                 // The amount of bytes read within that chunk
44};
45
46// This class handles all of the loading code
47class CLoad3ds
48{
49public:
50        CLoad3ds();                                                             // This inits the data members
51
52        // This is the function that you call to load the 3DS
53        bool Import3DS(C3dModel *pModel, char *strFileName);
54
55private:
56        // This reads in a string and saves it in the char array passed in
57        int GetString(char *);
58
59        // This reads the next chunk
60        void ReadChunk(tChunk *);
61
62        // This reads the next large chunk
63        void ProcessNextChunk(C3dModel *pModel, tChunk *);
64
65        // This reads the object chunks
66        void ProcessNextObjectChunk(C3dModel *pModel, t3dObject *pObject, tChunk *);
67
68        // This reads the material chunks
69        void ProcessNextMaterialChunk(C3dModel *pModel, tChunk *);
70
71        // This reads the RGB value for the object's color
72        void ReadColorChunk(tMaterialInfo *pMaterial, tChunk *pChunk);
73
74        // This reads the objects vertices
75        void ReadVertices(t3dObject *pObject, tChunk *);
76
77        // This reads the objects face information
78        void ReadVertexIndices(t3dObject *pObject, tChunk *);
79
80        // This reads the texture coodinates of the object
81        void ReadUVCoordinates(t3dObject *pObject, tChunk *);
82
83        // This reads in the material name assigned to the object and sets the materialID
84        void ReadObjectMaterial(C3dModel *pModel, t3dObject *pObject, tChunk *pPreviousChunk);
85       
86        // This computes the vertex normals for the object (used for lighting)
87        void ComputeNormals(C3dModel *pModel);
88
89        // This frees memory and closes the file
90        void CleanUp();
91       
92        // The file pointer
93        FILE *m_FilePointer;
94};
95
96
97#endif
98
99
100/////////////////////////////////////////////////////////////////////////////////
101//
102// * QUICK NOTES *
103//
104// This file is created in the hopes that you can just plug it into your code
105// easily.  You will probably want to query more chunks though for animation, etc..
106//
107//
108// Ben Humphrey (DigiBen)
109// Game Programmer
110// DigiBen@GameTutorials.com
111// Co-Web Host of www.GameTutorials.com
112//
113//
Note: See TracBrowser for help on using the repository browser.