Page MenuHome

Proxy Armature Animations are not exported to FBX
Closed, ResolvedPublic

Description

System Information
Affects all operating systems. Tested on Linux AMD64, Windows 7 x64, Windows 8.0 x64.
Affects all graphics cards. Tested on an NVidia GeForce 760 GTX.

Blender Version
Working: without proxies up to 2.72b.
Broken: with proxies at least since 2.70
Broken: completely since 2.73

Short description of error
For larger animation projects (video games, machinima, etc.) it is useful to make use of Blender's library linking. Typically like this:

  • dude.blend (contains Armature + meshes)
  • - dude.jumps.blend (contains animations, links Armature from dude.blend w/ proxy)
  • - dude.combat.blend (contains animations, links Armature from dude.blend w/ proxy)

Exporting animations from dude.jumps.blend or dude.combat.blend produces an FBX either not containing those animations or with detached animation tracks (checked in Unity 5.4, Unreal Engine 4.11, Autodesk FBX Review 1.4)

Blender 2.72b without proxy: export and animations working
Blender 2.72b with proxy: export contains no animations
Blender 2.77 SVN without proxy: export contains a single empty animation
Blender 2.77 SVN with proxy: export contains unworkable animations

Exact steps for others to reproduce the error

  1. Create a mesh and animate it using bones and the Armature modifier, save to .blend file
  2. Create a second .blend file and link to the mesh + Armature from the .blend file in step 1.
  3. In the second .blend file, create a proxy of the Armature so you can animate it (space, 'Make Proxy')
  4. In the second .blend file, create a new Action in the Dope Sheet and animate the proxy
  5. Export the animations in the second .blend file using the current FBX exporter

I have uploaded example files allowing you to skip steps 1-4 here:
http://blog.nuclex-games.com/linked-armature-fbx-export-repro-case.zip

Event Timeline

Markus Ewald (Cygon) raised the priority of this task from to 90.
Markus Ewald (Cygon) updated the task description. (Show Details)
Markus Ewald (Cygon) edited a custom field.
Bastien Montagne (mont29) lowered the priority of this task from 90 to 50.May 1 2016, 3:57 PM

In the purely-linked case, indeed no animation is exported at all.

In the proxy case, the problem is not animation, they are here (import FBX back into Blender and you'll find actions for your armature). The problem is that proxy armature seems to loose link (binding) to its mesh.

Will check what's failing here… but think this is more a TODO than an actual bug, linking and proxies are quite hairy to handle in Blender itself (and we want to rewrite proxy feature from scratch anyway for 2.8), so if it turns out to be to much complicated to fix would rather wait for new system really. We’ll see.

OK, so purely-linked animation is not fixable currently, because the 'action' member of linked data's anim_data is not editable from python (animations are baked and exported by temporarily overwriting that action to generate related keyframes).

The proxy case luckily turns out to be much simpler, it did not work simply because the modifier's 'armature' field still points to the linked armature object, and not to its animated proxy. Fix incoming.