Heya .. I am making a public appeal for interested parties to help in the implementation of md3 models. I have removed all the code for this from my opengl engine DLL, and I've shoved it in the testbed exe instead, because I felt it would be easier to debug it outside the DLL proper.
The exe still uses the DLL to fire up OpenGL etc, and so is very small in source.

If you are willing and able to help with this code module I will be extremely grateful.

Please express your willingness to participate and I will happily provide the source for the exe (including md3 stuff) and a copy of the DLL binary.
The DLL source can also be supplied on request, but should not be relevant to this public appeal.
Posted on 2004-12-01 21:49:02 by Homer
I loaded md3 once, in ProbnikGL. I wrote that long time ago, so it look ugly.

First what tryed to make me mad.
The Verstex was non float, they were signed word, and I had to divide them all by 64.

         fild word ptr [ebx.MD3_VERTEX.vertex_x]

fdiv real4 ptr [r4_64_0]
fild word ptr [ebx.MD3_VERTEX.vertex_y]
fdiv real4 ptr [r4_64_0]
fild word ptr [ebx.MD3_VERTEX.vertex_z]
fdiv real4 ptr [r4_64_0]
fstp dword ptr [edx._3DMODEL_VERTEX.position.y];[ebx.MD3_VERTEX.vertex_y]
fstp dword ptr [edx._3DMODEL_VERTEX.position.z];[ebx.MD3_VERTEX.vertex_z]
fstp dword ptr [edx._3DMODEL_VERTEX.position.x];[ebx.MD3_VERTEX.vertex_x]

Rendering was not easy too, because MD3 model consist of
Meshes, each mesh have Surfaces, each Surface have Triangles, each Triangle have 3 vertexIndices, vertexIndice is a index to MD3 vertexes.

But there was no problem with surface texture.

www.GameTutorials.com - have nice tutorial with MD3 loading and animating.
http://linux.ucla.edu/~phaethon/q3a/formats/md3format.html - I used these spec's to understand MD3.
Posted on 2004-12-06 15:57:33 by zabnik
I undersyand MD3 fine now - I have decided not to implement it for several reasons, including the following:

1. The surface normals are encoded into 24 bit (3*8bit) and have to be screwed with when importing/exporting - and are inaccurate due to this.

2. The models are created from a static hierarchy of submodels chained together and thus suffer from artifacts at moving joints - they attempt to hide this by having few joints , the result is a bad looking animated model that you can update very quickly.

3. The model vertices are stored N times for N animation frames ("poses") which makes for large and unwieldy data files that still can't produce very many animation sequences.

In short, the MD3 file format is extinct - we can consider it to be an historic landmark on our gamedev horizon. It has been superceded by the short-lived MD4, and now recently by MD5 and MDL.
These more recent formats support "bone animation", which is where I am heading now.

Have a nice day :)
Posted on 2004-12-06 22:28:21 by Homer