📄 3ds.h
字号:
#ifndef _3DS_H#define _3DS_H#include <iostream>#include <stdio.h>#include <stdlib.h># include <string># include <vector>#include "constants.h"using namespace std;//>------ Primary Chunk, at the beginning of each file#define PRIMARY 0x4D4D//>------ Main Chunks#define OBJECTINFO 0x3D3D // This gives the version of the mesh and is found right before the material and object information#define VERSION 0x0002 // This gives the version of the .3ds file#define EDITKEYFRAME 0xB000 // This is the header for all of the key frame info//>------ sub defines of OBJECTINFO#define MATERIAL 0xAFFF // This stored the texture info#define OBJECT 0x4000 // This stores the faces, vertices, etc...//>------ sub defines of MATERIAL#define MATNAME 0xA000 // This holds the material name#define MATDIFFUSE 0xA020 // This holds the color of the object/material#define MATMAP 0xA200 // This is a header for a new material#define MATMAPFILE 0xA300 // This holds the file name of the texture#define OBJECT_MESH 0x4100 // This lets us know that we are reading a new object//>------ sub defines of OBJECT_MESH#define OBJECT_VERTICES 0x4110 // The objects vertices#define OBJECT_FACES 0x4120 // The objects faces#define OBJECT_MATERIAL 0x4130 // This is found if the object has a material, either texture map or color#define OBJECT_UV 0x4140 // The UV texture coordinates// Here is our structure for our 3DS indicies (since .3DS stores 4 unsigned shorts)struct tIndices { unsigned short a, b, c, bVisible; // This will hold point1, 2, and 3 index's into the vertex array plus a visible flag};// This holds the chunk infostruct tChunk{ unsigned short int ID; // The chunk's ID unsigned int length; // The length of the chunk unsigned int bytesRead; // The amount of bytes read within that chunk};// This class handles all of the loading codeclass CLoad3DS{public: CLoad3DS(); // This inits the data members // This is the function that you call to load the 3DS bool Import3DS(t3DModel *pModel, char *strFileName);private: // This reads in a string and saves it in the char array passed in int GetString(char *); // This reads the next chunk void ReadChunk(tChunk *); // This reads the next large chunk void ProcessNextChunk(t3DModel *pModel, tChunk *); // This reads the object chunks void ProcessNextObjectChunk(t3DModel *pModel, t3DObject *pObject, tChunk *); // This reads the material chunks void ProcessNextMaterialChunk(t3DModel *pModel, tChunk *); // This reads the RGB value for the object's color void ReadColorChunk(tMaterialInfo *pMaterial, tChunk *pChunk); // This reads the objects vertices void ReadVertices(t3DObject *pObject, tChunk *); // This reads the objects face information void ReadVertexIndices(t3DObject *pObject, tChunk *); // This reads the texture coodinates of the object void ReadUVCoordinates(t3DObject *pObject, tChunk *); // This reads in the material name assigned to the object and sets the materialID void ReadObjectMaterial(t3DModel *pModel, t3DObject *pObject, tChunk *pPreviousChunk); // This computes the vertex normals for the object (used for lighting) //void ComputeNormals(t3DModel *pModel); // This frees memory and closes the file void CleanUp(); // The file pointer FILE *m_FilePointer; // These are used through the loading process to hold the chunk information tChunk *m_CurrentChunk; tChunk *m_TempChunk;};#endif///////////////////////////////////////////////////////////////////////////////////// * QUICK NOTES * // // This file is created in the hopes that you can just plug it into your code// easily. You will probably want to query more chunks though for animation, etc..//// // Ben Humphrey (DigiBen)// Game Programmer// DigiBen@GameTutorials.com// Co-Web Host of www.GameTutorials.com////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -