加载MD2文件播放角色动画

加载MD2文件播放角色动画

MD2文件由两个主要部分组成:文件头和数据。

文件头部分: 包含模型描述,多边形数,顶点数和动画细节等。
数据部分:  组成模型的多边形网格的数据,包括所有的多边形,顶点和纹理数据。

在MD2文件中,所有的多边形都为三角形,且没有其他的实体。
顶点数据定义的不是单帧而是多帧动画。事实上,每个MD2文件包含198帧动画,编号为0-197。

MD2文件头数据结构定义:
//  This is the header structure for a Quake II .MD2 file by id Software
typedef  struct  MD2_HEADER_TYPE
{
    
int  identifier;          //  identifies the file type, should be "IDP2"
     int  version;             //  version number, should be 8.
     int  skin_width;        //  width of texture map used for skinning
     int  skin_height;       //  height of texture map used for skinning
     int  framesize;          //  number of bytes in a single frame of animation

    
int  num_skins;        //  total number of skins,
                                 
//  listed by ASCII filename and are available for loading if files are found in full path.

    
int  num_verts;        //  number of vertices in each model frame, 
                                 
//  the number of vertices in each frame is always the same.

    
int  num_textcoords;  //  total number of texture coordinates in entire file,
                                  
//  may be larger than the number of vertices.

    
int  num_polys;        //  number of polygons per model, or per frame of animation if you will.

    
int  num_openGLcmds;  //  number of openGL commands which can help with rendering optimization,
                                       
//  however, we won't be using them.

    
int  num_frames;      //  total number of animation frames

    
//  memory byte offsets to actual data for each item

    
int  offset_skins;        //  offset in bytes from beginning of file to the skin array that holds the file name
                                  
//  for each skin, each file name record is 64 bytes.

    
int  offset_textcoords;   //  offset in bytes from the beginning of file to the texture coordinate array
     int  offset_polys;          //  offset in bytes from the beginning of file to the polygon mesh
     int  offset_frames;       //  offset in bytes from the beginning of file to the vertex data for each frame
     int  offset_openGLcmds;   //  offset in bytes from the beginning of file to the openGL commands
     int  offset_end;          //  offset in bytes from the beginning of file to end of file
} MD2_HEADER,  * MD2_HEADER_PTR;

加载MD2文件播放角色动画_第1张图片
线框模式

加载MD2文件播放角色动画_第2张图片
实体模式

其他模型
加载MD2文件播放角色动画_第3张图片 加载MD2文件播放角色动画_第4张图片
加载MD2文件播放角色动画_第5张图片
加载MD2文件播放角色动画_第6张图片
加载MD2文件播放角色动画_第7张图片


你可能感兴趣的:(加载MD2文件播放角色动画)