Converting 3DS Max Collada skeleton to D3D format

I’ve been working on a custom Collada importer (not DOM or FCollada) and have run into an issue when attempting to load a model exported from 3DS Max (with the FCollada exporter). To illustrate what I mean, here’s a screenshot of a model and skeleton loaded without any modification.

The axis lines at the origin point to +x (red), +y (green), +z (blue). Since the model is still in max format, you’ll notice the character is lying on the z axis (it was modeled standing up in Max).

If I run the model through the refinery tool and tell it to convert to a +y coordinate system, I get this with the skinned model:

The skeleton is obviously completely wrong. I think the bind pose is also off because if I just load the model and don’t deform it with the skeleton, I get something a lot closer to what I was expecting:

Now I’ve tried manually converting the joints myself but as far as I can tell the results appear similar. The only thing I do right now is transpose the joint matrices since Direct3D differs in it’s matrix handedness from 3DS Max (and OpenGL). Is there some property of the Collada skeleton that I am perhaps missing. Is converting the skeleton (i.e. through the refinery) not enough, must the skeleton calculations be modified as well? Why would the base mesh look correct but skeleton not?

Any help would be greatly appreciated. Thank you.

Hi Vandal,

I am very sorry to tell you that the axisconverter has very limited support, and currently skinning will not work. :frowning:

I will spend some time next few weeks to work on that.
Thanks for pointing out the problem.


Thank you, it’s good to know a solution is at least in the works. In the mean time, do you have any suggestions on what steps I need to go through to manually process the model myself?

There is a tutorial about using 3dsMax COLLADA files, with animation, in XNA here

Maybe this can help?

– Remi