ok, my original plan is to make a very simple rigging and animating software because i hate most others and some are just too darn expensive. so, i looked into learning the parts of the directx file format so that i could just load a .x file, rig it, animate it, and then add in the new directx code (assuming it is a text .x file).
i looked around and found this site:
http://local.wasp.uwa.edu.au/~pbourke/dataformats/directx/
and it was pretty useful, but not perfect, so i got psionic's dwarf model as a reference to look through...
i understand most of it, except for some of the matrix transforms and headers. i was hoping someone could explain them?
for example:
this created a frame for the base of the dwarf model:
Frame base
{
FrameTransformMatrix
{
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
0.000967,-0.001266,0.000000,1.000000;;
}
and it seems most of the frame transform matrices are similar. what do each of these mean:
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
these three lines are the same for practically all of the frames, what do they do?
0.000967,-0.001266,0.000000,1.000000;;
i think this one is the position of the frame, correct?
so is it, X,Y,Z,(what is this last value?)
and:
template XSkinMeshHeader
{
<3CF169CE-FF7C-44AB-93C0-F78F62D172E2>
WORD nMaxSkinWeightsPerVertex;
WORD nMaxSkinWeightsPerFace;
WORD nBones;
}
template VertexDuplicationIndices
{
<B8D65549-D7C9-4995-89CF-53A9A8B031E3>
DWORD nIndices;
DWORD nOriginalVertices;
array DWORD indices[nIndices];
}
template SkinWeights
{
<6F0D123B-BAD2-4167-A0D0-80224F25FABB>
CSTRING transformNodeName;
DWORD nWeights;
array DWORD vertexIndices[nWeights];
array FLOAT weights[nWeights];
Matrix4x4 matrixOffset;
}
i dont understand what the values mean that are like: <6F0D123B-BAD2-4167-A0D0-80224F25FABB>.
and:
Frame base
{
FrameTransformMatrix
{
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
0.000967,-0.001266,0.000000,1.000000;;
}
Frame middle
{
FrameTransformMatrix
{
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
0.014419,2.518480,0.000000,1.000000;;
}
is the "middle" frame's position relative to the "base" frame's position, or are they all relative to the origin?
also, last but not least:
SkinWeights
{
"Joint28";
7;
483,
484,
485,
486,
489,
490,
1116;
1.000000,
1.000000,
1.000000,
1.000000,
1.000000,
1.000000,
1.000000;
1.000000,0.000000,0.000000,0.000000,
0.000000,1.000000,0.000000,0.000000,
0.000000,0.000000,1.000000,0.000000,
-2.038026,-2.592926,0.183448,1.000000;;
}
i just chose a random joint.
the only thing that i dont get here is, what is the last group of values? is it some matrix transform or something? (-2.038026,-2.592926,0.183448,1.000000;
hopefully someone can help