Page 1 of 2

Quake Wars models

Posted: Sat Oct 06, 2007 1:37 am
by Wobble
[out]

MD5B and ANIMB

Posted: Sun Oct 14, 2007 10:16 pm
by namshub
I've just spent several hours pulling the MD5B file apart and now have the mesh rendered in its bind pose. The format is definately nothing like MD5Mesh or previous id binary files ( with the data in chunks, and a header with byte offsets to each chunk) I've figured out the basic structures, but some parts seem very strange, and I was hoping maybe someone smarter then me could figure out the last bits.
Heres the basic Layout of the file:

int one (always = 1)
int two (always = 2, maybe refers to the number of LOD levels for each mesh)
int numJoints
Joint[numJoints] joints
int numMeshes (usually 3, head, body and shadow)
Mesh[numMeshes] meshes
int numLODMeshes (usually 3 again)
Mesh[numLODMeshes] LODmeshes
byte[28] ? (at the end of each file are 28 bytes with no pattern i can find)

Joint Structure:
int namelength
char[namelength] jointName
int parent
float[4] rot (a unit quaternion, presumably the rotation of the joint in bind pose)
float[16] mat (looks like a 4X4 matrix)

Mesh Structure:
int namelength
char[namelength] jointName
int 0
int 0
int ?
int numVPart1
byte[3] ( always seems to be 0,0,0 just to make life miserable)
int shaderNamelength
char[shaderNamelength] shader (this seems to just point to a folder. I've found textures that work, but they were dds files that had random strings of numbers for names)
int numVPart1 (again)
int ?
int numTriangleIndex
short[numTriangleIndex] triangleIndices
int numshadowstuff (this number always seems to be 0 unless the shader and meshname imply this mesh is only used for casting shadows)
short[numshadowstuff * 4] shadowstuff (a list of what looks like 4 vertex indices)
byte[numVPart1 * 2] vertPart1 (16 bits per vert, the first four and last four are always 0. I have no idea what these are)
int numVPart1 (for the third time =\)
int numVerts (this is always equal to numVPart1 + numExtendedVerts)
int numExtendedVerts (the number of verts that don't have a VertPart1, and instead have an index to a vert it shares one with)
int[numExtendedVerts] sVertIndices (the above mentioned indices)
int numVerts (for good measure?)
int 0
int numBones (the number of joints used for this mesh)
byte[numBones] bone (index of joints used in this mesh)
Vertex[numTVerts] vertices
VertPart2[numTVerts] vertPart2
byte[5] jibberish (5 bytes at the end of each mesh with no pattern i can find)

Vertex Structure:
float[3] pos
float[2] texture coordinates
float[3] normal
float[3] tangent (a unit vector orthagonal to the normal, used for bump mapping)
float ? always -1 or 1
int ? (always -1)

VertPart2 Structure: (definately the most absurd looking part of the format)
byte[8] ??? (bytes 1,3,5 and 7 are always multiples of 3)
(bytes 1,5 and 7 are always equal to eachother)
(bytes 6 and 8 are always 0)
(byte 2 is always equal to (byte 3) * -1 - 1)

Rendering the first 2 meshes using the triangle indices and vertex data will give you the model in bindpos, the 3rd mesh is a lower LOD of the entire model used for casting shadows it seems. I would guess that each vertex should have bone indices and weights, but I can't imagine how the remaining parts can represent that.

ANIMB

Posted: Sun Oct 14, 2007 10:28 pm
by namshub
I couldn't figure out what the extra numbers in the header were either, but here's what the next bit of the file looks like:

short[numFrames * 6] (positive and negative integers usually < 100)
int numJoints
Joints[numJoints]
int numJoints (seems to be lots of redundancy in these files)

Joint Structure:
int nameLength
char[nameLength] name
short parent
short ?
short ?

the rest looks like a random sea of 1's and 0's to me

Posted: Mon Oct 15, 2007 11:51 pm
by Wobble
[out]

Posted: Tue Oct 16, 2007 12:15 am
by Wobble
[out]

Re: MD5B and ANIMB

Posted: Tue Oct 16, 2007 12:48 am
by Wobble
[out]

Posted: Fri Oct 26, 2007 6:57 am
by SlippytheWeasel
What is a good program for viewing the model files for ET:QW?

I'm trying to self-teach myself how to do mapping/modelling/etc, and I thought this looked like a good website to get some information.

I'm interested in trying to create a few new death animations once the SDK comes out.


Thanks.


Slippy

Posted: Fri Oct 26, 2007 10:41 pm
by Wobble
[out]

Posted: Sat Nov 03, 2007 7:50 am
by SlippytheWeasel
Well, they should be releasing the SDK soon, maybe that'll be what I need.

Thanks.


Slippy

Posted: Sun Nov 04, 2007 12:07 am
by Wobble
[out]

Posted: Sun Nov 04, 2007 10:37 am
by SlippytheWeasel
Well, jRad (Jared 'jRAD' Hefty, Splash Damage's Tools and User Interface Programmer) said on 29 Oct 07:

"We plan to launch the ETQW Editing Wiki alongside the full Software Developers Kit, Tools, Media, Tutorials, and Documentation after the ETQW 1.2 update is released. Keep an eye on the developer blog for the latest on this."

1.2 was released this week, so the SDK should be following.

http://community.enemyterritory.com/ind ... q=node/189


Slippy

Posted: Sun Nov 04, 2007 9:07 pm
by Wobble
[out]

Posted: Sun Dec 02, 2007 2:52 am
by Wobble
[out]

Posted: Wed Dec 19, 2007 6:34 am
by SlippytheWeasel
Wobble wrote:Well, they finally released the 1.2 Beta SDK, and I found the binary animation format:

Code: Select all

static const int ANIMB_IDENT    = (('A'<<24)+('N'<<16)+('M'<<8)+'B');
static const int ANIMB_VERSION  = 1;
but I searched the entire SDK, and there is no mention of the binary model format, MD5B!

Anybody know where it is??
Might try looking on the wiki for the SDK.

http://wiki.splashdamage.com/index.php/Main_Page


Slippy

Posted: Fri Dec 21, 2007 9:25 pm
by Wobble
[out]