ZGE工作报告:md2模型读取成功

 
http://4683663.photo.hexun.com/originalPic.aspx?photoID=58115893&pubTime=2009-1-12%2021:56&filetype=.jpg&hashid=E609F1760179C66C8E675597ED1F2EEF


啊啊啊啊……………………花了一天的时间~~~~~~

(*^__^*) 嘻嘻……

接口如下:

  1. #pragma once
  2. #include "../../zgesrc/root.h"
  3. class ZgeMesh
  4. {
  5. public:
  6.     ZgeMesh()
  7.     {
  8.     }
  9.     ~ZgeMesh()
  10.     {
  11.         delete[] m_vertex;
  12.         delete[] m_tempVertex;
  13.         delete[] m_texName;
  14.     }
  15.     void Init(Root* root){m_root = root;m_vertex = NULL;m_texName = NULL;m_tempVertex = NULL;}
  16.     virtual void LoadMesh(const char* FileName) = 0;
  17.     void BindTexture(const char* TexName);
  18.     void RenderMesh();
  19.     void Update(float dt);//考虑动画
  20.     void SetFPS(int fps);
  21. protected:
  22.     Root*       m_root;
  23.     vertex*     m_vertex;
  24.     vertex*     m_tempVertex;
  25.     char*       m_texName;
  26.     short int   m_startFrame;//帧数
  27.     short int   m_endFrame;
  28.     bool        m_bAnimated;//是否动画
  29.     int         m_fps;//动画帧数
  30.     int         m_triple;//三角形数
  31. private:
  32.     
  33. };
  1. #pragma once
  2. #include "ZgeMesh.h"
  3. //MD2共有16个关键帧:
  4. //
  5. //start:0 end:39 name:stand
  6. //start:40 end:45 name:run
  7. //start:46 end:53 name:attack
  8. //start:54 end:65 name:pain
  9. //start:66 end:71 name:jump
  10. //start:72 end:83 name:flip
  11. //start:84 end:94 name:salute
  12. //start:95 end:111 name:taunt
  13. //start:112 end:122 name:wave
  14. //start:123 end:134 name:point
  15. //start:135 end:153 name:crstnd
  16. //start:154 end:159 name:crwalk
  17. //start:160 end:168 name:crattack
  18. //start:169 end:172 name:crpain
  19. //start:173 end:177 name:crdeath
  20. //start:178 end:197 name:death
  21. class ZgeMd2Mesh : public ZgeMesh
  22. {
  23. public:
  24.     enum Anim{
  25.         MD2_ANIM_STAND = 0,
  26.         MD2_ANIM_RUN,
  27.         MD2_ANIM_ATTACK,
  28.         MD2_ANIM_PAIN,
  29.         MD2_ANIM_JUMP,
  30.         MD2_ANIM_FLIP,
  31.         MD2_ANIM_SALUTE,
  32.         MD2_ANIM_TAUNT,
  33.         MD2_ANIM_WAVE,
  34.         MD2_ANIM_POINT,
  35.         MD2_ANIM_CRSTND,
  36.         MD2_ANIM_CRWALK,
  37.         MD2_ANIM_CRATTACK,
  38.         MD2_ANIM_CRPAIN,
  39.         MD2_ANIM_CRDEATH,
  40.         MD2_ANIM_DEATH
  41.     };
  42.     // md2 header
  43.     typedef struct
  44.     {
  45.         int     ident;              // 文件标识. 必须是"IPD2"
  46.         int     version;            // md2 版本. 等于 8
  47.         int     skinwidth;          // 纹理宽度
  48.         int     skinheight;         //纹理高度
  49.         int     framesize;          // 每一帧占的字节数
  50.         int     num_skins;          // 纹理的数目
  51.         int     num_xyz;            // 三维空间中点数
  52.         int     num_st;             // 纹理的坐标数
  53.         int     num_tris;           //三角形的数目
  54.         int     num_glcmds;         // OPENGL命令数目
  55.         int     num_frames;         // 文件包含的帧数
  56.         int     ofs_skins;          // 纹理名称的偏移量(每个64字节)
  57.         int     ofs_st;             // 存储纹理坐标偏移量
  58.         int     ofs_tris;           // 存储三角形地址偏移量
  59.         int     ofs_frames;         //存储帧的地址偏移量
  60.         int     ofs_glcmds;         // 存储OPENGL命令的地址偏移量
  61.         int     ofs_end;            // 文件结尾的偏移量
  62.     } md2_t;
  63.     md2_t md2_header;
  64.     /* Vector */
  65.     typedef float vec3_t[3];
  66.     /* Texture name */
  67.     struct md2_skin_t
  68.     {
  69.         char name[64];              /* texture file name */
  70.     };
  71.     md2_skin_t* md2_skin;
  72.         /* Texture coords */
  73.     struct md2_texCoord_t
  74.     {
  75.         short s;
  76.         short t;
  77.     };
  78.     md2_texCoord_t* md2_texCoord;
  79.         /* Triangle info */
  80.     struct md2_triangle_t
  81.     {
  82.         unsigned short vertex[3];   /* vertex indices of the triangle */
  83.         unsigned short st[3];       /* tex. coord. indices */
  84.     };
  85.     md2_triangle_t* md2_triangle;
  86.         /* Compressed vertex */
  87.     struct md2_vertex_t
  88.     {
  89.         unsigned char v[3];         /* position */
  90.         unsigned char normalIndex;  /* normal vector index */
  91.     };
  92.     md2_vertex_t* md2_vertex;
  93.         /* Model frame */
  94.     struct md2_frame_t
  95.     {
  96.         vec3_t scale;               /* scale factor */
  97.         vec3_t translate;           /* translation vector */
  98.         char name[16];              /* frame name */
  99.         struct md2_vertex_t *verts; /* list of frame's vertices */
  100.     };
  101.     md2_frame_t* md2_frame;
  102.     int * md2_glcmd;
  103.     void LoadMesh(const char* FileName);
  104.     void SetAnim(Anim anim);
  105. protected:
  106. private:
  107. };
目前可以正常播放平缓的动画~没有跳帧~~没有很怪异的举动~~~~啊啊啊啊啊……之前就是这种奇怪的bug太多了。。。调试花了好长时间~~~~

接下来该读取什么3d模型捏?~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值