Proxy Armature Animations are not exported to FBX #48322

Closed
opened 2016-04-30 16:15:26 +02:00 by Markus Ewald · 6 comments

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

**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
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @Cygon

Added subscriber: @Cygon
Bastien Montagne was assigned by Aaron Carlisle 2016-04-30 17:24:19 +02:00

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.

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.

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.

This issue was referenced by 184e74fbe7

This issue was referenced by 184e74fbe76d105919689b24e2dbd80aaac8f588

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#48322
No description provided.