I'm trying to finish of the agreed-upon work, and this makes bone orientation changes on export work. Additionally it adds support for leaf bones to make bone-length work in other applications.
This adds two new options:
Consider this scene in Blender with three bones:
Normally when it is imported into applications like Maya it comes out like this:
The reason for that is that bones are only drawn as connection between joints, and Blender bones are imported as joints. The fix is to do the same that modellers do when working in Maya, which is adding an end/leaf bone to the end of a chain:
This is mostly for the benefit of editing a skeleton in the other application, all skinning or animation works both ways the same. (The end bone doesn't have deformers or animation curves.)
Generally, it is a good idea to switch this on when exporting to another application, and switch this off when exporting into a game engine or realtime viewer.
With, for example, X as primary axis:
This is a much simpler code than the one in the importer because we don't need to detect any random orientations. Though to be honest, I don't see the value of this function until someone finds an application that works similar to Blender's bones and requires a specific orientation. I implemented this only because it is part of the agreed-upon work, and so you can test it to see if it can be used for something else.
I installed the 30-day trial of MotionBuilder, and none of the included FBX files use Limb nodes. (MotionBuilder refuses to open Blender's FBX but I don't have time to debug this right now. I'm behind my schedule already.)