I'm creating an FPS game. I'm writing my own game engine. So far all the backend stuff is going great. I'd like to support md2 as the native file format for 3D Objects, but I also want to use skeletal meshes. Does anyone know if the md2 file format supports skeletal meshes?

In-case you need to know, I'm going to use blender as my Mesh creation tool and C++ as my programming language...


For got to mention, the engine is based on OpenGL...

Alright, for anyone who is reading this, I just found the Doom 3 md5 specifications (http://tfc.duke.free.fr/coding/md5-specs-en.html). It gives you some help on writing a parser (see bottom of link), but the example doesn't support lighting and texture mapping (the second set of example code allows for animation). Thanks @Neverender for answering my question...

  • \$\begingroup\$ I already know md2 supports keyframe animation, but I'd prefer skeletal animation... \$\endgroup\$ Jun 22, 2011 at 20:36

1 Answer 1


No, nor did the MD3 format used in Quake 3. As far as I know, skeletal animation was introduced as recently as id Tech 4 and the MD5 model format.

  • \$\begingroup\$ In that case, do you know of an Open Source MD5 parser and maybe an export plugin for blender? \$\endgroup\$ Jun 22, 2011 at 20:45
  • 2
    \$\begingroup\$ @jsvcycling: Assimp: Open Asset Import Library has .md2, .md3 and .md5( in work ) support. assimp.sourceforge.net \$\endgroup\$
    – momboco
    Jun 22, 2011 at 22:01
  • \$\begingroup\$ Perhaps a format like Collada or FBX would be more apt. \$\endgroup\$
    – Arelius
    Jun 23, 2011 at 0:21
  • 1
    \$\begingroup\$ @Arelius: Collada and FBX are designed more as interchange formats, they shouldn't be the format that your engine works directly with at runtime. The expense of translating them to an efficient representation should be paid once at import/export time. MD5 is one such optimized representation. \$\endgroup\$
    – Zach
    Jun 23, 2011 at 1:17
  • \$\begingroup\$ But if you don't care about interchange for the specific format, then it doesn't make much sense to use a very standardized format. Just keep your data-structures pointer-free, and dump that to disk. \$\endgroup\$
    – Arelius
    Jun 23, 2011 at 23:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .