FBX 7.4 Updates – I

So! After hours and hours of tries and failures, desperation and cursing at FBX format, since I could definitively not find any valuable difference between code generated by Blender and by FBXConverter regarding animation, I finally decided to dive into ugly hacking and have a look at binary files themselves…

Well, at least, it was rewarding: I found out some stupid FBX anim-related elements need a specific handling at binary level to be understood by the FBX SDK! I won’t hold forth on a format that needs such ugly tricks (the joys of vault development I presume…).

I’d rather summarize quickly current Blender’s FBX 7.4 binary exporter status:

Implemented and expected to be working!

  • Objects, and simple parent relations between objects (not through constraints, though).
  • Lamps.
  • Cameras.
  • Meshes, including:
    • UVs.
    • VCol.
    • Smooth groups (edges or faces).
    • Faces’ material indices.
  • Materials (Phong or Lambert shading).
  • Textures (only image/video type, embedding should work, needs ‘COPY’ path mode).
  • Materials <-> Textures relations: textures can affect:
    • DiffuseFactor, DiffuseColor.
    • TransparencyFactor, TransparentColor.
    • EmissiveFactor, EmissiveColor.
    • AmbientFactor.
    • SpecularFactor, SpecularColor.
    • Shininess, ShininessExponent.
    • ReflectionFactor, ReflectionColor.
    • Normal/bump.

Implemented, but status unsure (needing testing!)

  • Armature linked to mesh. Binding code itself seems to work OK, but bone’s orientations are usually completely wrong when I import back, still have to figure out what happens here. Although I got feedback from testers saying it imports OK under official FBX apps, so…
  • Meshes’ (Split)Normals, tangents and bitangents (does not handle the 7.4-new “weights” for those, though). 7.4 seems to use 4D vectors, however I’m not quite sure about the compatibility of those with older apps, I might revert it to previous format (3D vectors) for now.

Implemented, but unfinished

  • Animation: basic object baked animation (loc/rot/scale).

TODOs, mandatory

I.e TODOs that need to be addressed before we can consider the exporter finished.

  • Add option to export other geometries (curves, texts, metaballs) as meshes.
  • Finish animation.

 

7 thoughts on “FBX 7.4 Updates – I

  1. Thank you for your continued work! Never quite appreciated FBX exporter until it stopped working as expected (which is to say that now I very much recognize how significant the addon is for my workflow) 😉 Do you have a rough ETA for animation? Cheers!

    • Well, I just added baked armature (bones) animation, so should be available from nightly builds tomorrow. 🙂

      If everything goes well (i.e. I’m not drowned under bug reports 😛 ), we should get more animatable things in comming days (like materials colors/factors…).

  2. Thank you so much for your work on this. I think proper FBX exports are going to be huge for indie game developers.

    I was testing this out with a simple static mesh, but I can’t get it to export tangents. I’m not 100% sure about the binary format, but when I select the ASCII format, I can see that there are no tangents. With binary format, when I used a thrid party mesh loader, there were no tangents either.

    I am checking the “Tangent Space” box. Is there something I have to do to the model before exporting it to make sure it has tangents?

    Also, I noticed on your Github that when this is working, the single checkbox outputs both tangents and binormals. I think it would be good to make binormals optional, because they can so easily be calculated in a vertex shader when the model is used in a game.

    • Thanks for the report, will investigate that (6.1 ascii and 7.4 bin have not much in common).

      Binormals are always exported together with tangents in FBX, afaik, since there is no way to specify a ‘binormal sign’ (binormal can be in two directions, when you only have tangent and normal).

      PS: Please make bug reports on http://developer.blender.org, easier to follow there. 😉

Leave a reply to Casey Goodrow (@CaseyGoodrow) Cancel reply