Recognizing these forms is not a big deal, but parsing them correctly is. Therefore I decided to create a thread for an in-depth discussion of the common approaches of parsing different forms of bone representations, hopefully to give those who have only a scanty knowledge to this topic, me included, a hint of parsing a specific bone format.
For those who're completely new to these stuffs, you can refer to the Background/Basic Knowledge for a rough understanding.
Since I'd like to focus on parsing bones correctly, I will use minimum dumps of bone data only as samples, and a quick approach to build the skeleton, which in my case would be SkelBuilder — a lightweight ASCII FBX creator I made for constructing skeleton only, after countless failures with Noesis. Guess I may also post the Noesis python code to see if someone could spot the issues. But any other approaches are fine, so long as it's easy for understanding the process.
Source of SkelBuilder(Bone data not included).
- Right-Handed System
- 4x3 Matrices
- 3x4 Matrices
- 4x4 Matrices
- Left-Handed System
- 4x3 Matrices
So far, seems there's no extra things needed to do for right-handed formats. For left-handed formats, if the original coordinate system is a mirror of the target system along a axis, you'll need to convert the transformation in world space of every node to right-handed one. Otherwise, not saying it won't work, but it hasn't been tested yet. So try swapping the x-z axis instead.