From BlenderWiki

Jump to: navigation, search

Remaining Big FBX todos:

Finish 'Bake transform' feature

This feature came from user request & patch. Issue is, when you export to another global orientation than Blender native one (Z up, Y forward), we apply some rotation to all objects, so that they still look in the right orientation in the target app. But this means objects in this target app will have some extra rotation (e.g. 90° around X axis…).

To fix that, we added an option to 'bake' transformations into object's data itself, rather than object rotation. Currently, this is only working for meshes (and other geometries we convert to meshes during export).

We are already working on a patch that extends this to empties and armatures, and if armatures are possible, should be as well for bones, maybe? Quite a complex task, though.

Import/Export: Armatures!

Orientation correction

And that's not so nice… Issue is, FBX bones are not aligned along the same axis as Blender bones (former are along -X axis I think, while later are along +Y axis).

In current code, we do not rotate bones at all. This means they will import rotated in other apps, and files from other apps will import with rotated bones in Blender.

This is not so nice, but it has a great advantage - skinning itself is OK, i.e. no distortions of animated rigged meshes, etc.

I tried hard (very hard) to export and import corrected bones, but with no luck so far (I manage to export and import valid 'rest' armature, but pose are always messed up in some way). And code from old 6.1 does not help me here, I have the feeling it was buggy too (might be wrong, of course, but could not get new code working based on it at least). Admittedly, I’m not a matrix expert, there is probably some ways to handle this, but I’m really tired of searching. :/

Import: Also support BindPose?

FBX has two complete different systems to link an armature to a mesh: BindPose and Deformers.

Currently, we export both, but only consider Deformers in importer, since only them have skinning weighting info (which we translate to Blender's VGroups). I tend to assume BindPose are old way to do, but that's only based on the fact they are less powerful than Deformers, as usual no solid info available.

I ran into a file having only one Deformer system linking the armature to a mesh, all other meshes (wig, eyes, teeth, …) were only linked to same armature through BindPoses.

I’m a bit skeptical here, since BindPose have no skinning weights, not sure how to handle that case (and how it’s supposed to be handled, SDK doc does not say anything about it!). We might have to support it though, probably using automatic weighting, and only when no Deformer is available. :(

Import: Support more animation modes

Currently, we assume FBX animation curves we import to be mere 'baked' ones (i.e. linear interpolation, with a point each time value changes significantly).

It would be nice to support more interpolation modes (FBX has two types of Bézier-like modes, afaik), in a 'baking' fashion too (i.e. to interpret FBX curves, and output baked-like values, with linear interpolation and controlpoint each time value changes).

And there is also the 'mixing' of several animlayers in a same animstack (currently we just read each layer into independent actions), but this is somewhat less crucial imho, since many apps do not support this feature anyway.

Minor bits

Import: Add custom properties

So that we loose less data when going through Blender (we could probably also extend a bit export of those, currently it only handles simple types).