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.