@TDK
I noticed that the Dark Matter models I have from the disk I have DBC on have some problems with their matrices in relation to their animation keys, and the original mesh definitions. What I mean is, they are forced to work together - though the models's limbs are not necessarily placed correctly.
I'll try to explain what I mean: the meshes for each limb are contained in a group that is associated with a block we'll call a frame (like directx). Each limb has a transformation matrix that tells it's scale, rotation and position. Now, there are also a series of animation keys that have transformations that are applied to the transformation matrices of the model's limbs. We'll get back to those in a sec.
The vertices are laid out for each limb and combined to form the mesh - no mystery there. But, take an arm for example, the actual vertices of the arm, create it at -100,20,0 at a size of 1000 units, but the transformation matrix positions it at 0,0,0 and scales it down to 10 units. This goes on for all of the limbs with their own transformations.
Now back to the animation keys. These now send transformation information to be put through the matrices of the limbs. The catch here is, each limb may have a parent which puts it's transformation through it's parents transformation matrix also - and so on for however many parent child relationships there are. The animation keys have to compensate by reflecting a relative transformation.
In the end, you see the model as it was meant to be, but all the transformations have been forced to work together, and the actual vertices and shape of the model may not be the same as it's vertices and meshes describe after it has gone through all of those matrix transforms. And when you load a model into a modeling program, it may look at the first animation key (as frame one) and pose your model accordingly. Here's an animation key out of one of the Dark Matter models for frame one:
AnimationKey {
1;
1;
0; 3; 0.100000, 0.100000, 0.100000;;;
}
That is a scaling key and scales the model .10 or 10 percent of it's original size. So when I load this model, it automatically scales down because the program immediately reads frame one upon loading and poses the model accordingly. Now if this is a parent limb, then all of the children follow suit (it just so happens that this is THE main parent limb for the whole model in my example).
So, if I wanted a single non-transforming object I would load it in (to DBC for example), convert it to a mesh and output my own file with mesh data in DirectX format - use another program to do the same. Then I can do whatever I want with the mesh in another program (the UVs will still be intact so just reload the textures in the modeling program). That means re-rigging it for animations though.
Or, if it's your own model, make sure that you have set the original transformation matrix for each limb to the identity matrix. In Blender, if I built a model, rotated it, scaled it, etc. it's matrix would hold all of those transformations but the verts would be whereever I originally placed them. What I would do after positioning the model where it will ultimately be, would be to use a function to apply all scaling and rotations. This resets the vertices to the position the model is in and set all of the matrix transforms at 0 . This keeps the exports nice and clean and doesn't allow interpretation of the transformations (because technically, there are none). There may be a similar command in TrueSpace
Enjoy your day.