Click here to load reader

1 、 3ds 文件结构:

  • Upload
    kato

  • View
    44

  • Download
    7

Embed Size (px)

DESCRIPTION

1 、 3ds 文件结构:. 3ds 文件结构是由“块”组成的。它们描述了接在它们后面的数据的信息,即这些数据是如何组成的。 “块”是由两部分组成的: 1.ID ; 2. 下一个数据块的位置. 3ds 文件结构. 二进制的 3ds 文件是用一种特殊的方法写成的:也就是低字节在前,高字节在后(二进制文件都是这样的)。 举例 :4A 5C (十六进制, 2 个字节)实际上是数字: 5C 4A , 4A 是低字节, 5C 是高字节。对于 4 字节整数: 4A 5C 3B 8F 实际上是 8F 3B 5C 4A , 3B 8F 是高字节, 4A 5C 是低字节。. - PowerPoint PPT Presentation

Citation preview

  • 13ds3ds 1.ID 2.

  • 3ds3ds:4A 5C25C 4A4A 5C44A 5C 3B 8F8F 3B 5C 4A3B 8F4A 5C

  • 2

    unsigned short ID//2IDunsigned long Length//4

  • 3()ID3dsID0x4D4D3ds3ds

  • 4// (Primary Chunk)#define PRIMARY 0x4D4D// (Main Chunks)#define OBJECTINFO 0x3D3D// #define VERSION 0x0002// .3ds#define EDITKEYFRAME 0xB000// // (#define MATERIAL 0xAFFF// #define OBJECT 0x4000// // #define MATNAME 0xA000// #define MATDIFFUSE 0xA020// /#define MATMAP 0xA200// #define MATMAPFILE 0xA300// #define OBJ_MESH 0x4100// #define MAX_TEXTURES 100// // OBJ_MESH#define OBJ_VERTICES 0x4110// #define OBJ_FACES 0x4120// #define OBJ_MATERIAL 0x4130// #define OBJ_UV 0x4140// UVdefine

  • 51class CVector3 //3D{public:float x, y, z;};class CVector2//2DUV{public:float x, y;};struct tFace//{int vertIndex[3];// int coordIndex[3];// };

  • 52struct tMatInfo//{char strName[255];// char strFile[255];// BYTE color[3];// RGBint texureId;// IDfloat uTile;// u float vTile;// v float uOffset; // u float vOffset;// v } ;struct t3DObject//{int numOfVerts;// int numOfFaces;// int numTexVertex;// int materialID;// IDbool bHasTexture;// char strName[255];// CVector3 *pVerts;// CVector3 *pNormals;// CVector2 *pTexVerts;// UVtFace *pFaces;// };

  • 53struct t3DModel//{int numOfObjects;// int numOfMaterials;// vectorpMaterials;// vector pObject;// };struct tChunk//{unsigned short int ID;// IDunsigned int length;// unsigned int bytesRead;// };

  • 54class CLoad3DS// CLoad3DS{public:CLoad3DS();// virtual ~CLoad3DS();void show3ds(int j0,float tx,float ty,float tz,float size);//3dsvoid Init(char *filename,int j);private:bool Import3DS(t3DModel *pModel, char *strFileName);// 3dsvoid CreateTexture(UINT textureArray[], LPSTR strFileName, int textureID);// int GetString(char *);// void ReadChunk(tChunk *);// void ReadNextChunk(t3DModel *pModel, tChunk *);// void ReadNextObjChunk(t3DModel *pModel,t3DObject *pObject,tChunk *);// void ReadNextMatChunk(t3DModel *pModel, tChunk *);// void ReadColor(tMatInfo *pMaterial, tChunk *pChunk);// RGBvoid ReadVertices(t3DObject *pObject, tChunk *);// void ReadVertexIndices(t3DObject *pObject,tChunk *);// void ReadUVCoordinates(t3DObject *pObject,tChunk *);// void ReadObjMat(t3DModel *pModel,t3DObject *pObject,tChunk *pPreChunk);// void ComputeNormals(t3DModel *pModel);// void CleanUp();// FILE*m_FilePointer;// tChunk*m_CurrentChunk;tChunk*m_TempChunk;};

  • LoadT8auxDIBImageLoad(Filename)glGenTextures(1, &texture[0])OpenGL glBindTexture(GL_TEXTURE_2D, texture[0])OpenGLtexture[0]2D( Y )( X )OpenGL&texture[0]&texture[0]

  • 1) . 2) 3) 4) . RGBA

  • :

    1), ,. 2. RGBA: 1) , (), 2) () 3) , . 3. GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_CUBE_MAPglEnable()glDisable();, , 4.

  • int gluBuild2DMipmaps(GLenum target, GLint internalFormat, GLint width, GLint height, GLenum format, GLenum type, const void *texels);

  • .