FBX: Curves for Actions exported despite no channel #50605
Labels
No Label
Interest
Animation & Rigging
Interest
Blender Cloud
Interest
Collada
Interest
Core
Interest
Documentation
Interest
Eevee & Viewport
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
Import and Export
Interest
Modeling
Interest
Modifiers
Interest
Nodes & Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds, Tests & Devices
Interest
Python API
Interest
Rendering & Cycles
Interest
Sculpt, Paint & Texture
Interest
Translations
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Meta
Good First Issue
Meta
Papercut
Module
Add-ons (BF-Blender)
Module
Add-ons (Community)
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender-addons#50605
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Windows 10 - GTX1080
Blender Version
Broken: 2.78 223aff987a
Worked: Probably never
When using either the newer "FBX 7.4 binary"
io_scene_fbx.export_fbx_bin
exporter or the older "FBX 6.1 ASCII"io_scene_fbx.export_fbx
exporters, for each exported Action, all curves are exported whether or not there is an associated channel for that Action.Exact steps for others to reproduce the error
Generalized:
Delete curve channels from any Action. Export the scene as an FBX using either the binary or ascii exporter. Import FBX into another program (such as Unity). The animations contain curves for channels that were explicitly deleted in Blender.
Reproduction:
Create a 5 unit long cylinder. Rotate it onto its side. Add an armature. Add a single bone in center. From that bone, extrude once to each end of the cylinder for a total of three bones. Subdivide the two bones just extruded for a total of 5 bones.
Select all bones in pose mode. Create a new pose-library named "Rest" and add a pose to it. Leave the default pose name.
Rotate the two bones on one side of the armature. Create a new pose-library named "Left" and add a single pose. Using the Dope Sheet's Action Editor, delete any channels unaffected by your bone changes.
Use the Action Editor to select the "Rest" pose which will reset the bones of the armature.
Rotate the two bones on the other side of the armature. Create a new pose-library named "Right" and add a single pose. Using the Dope Sheet's Action Editor, delete any channels unaffected by your bone changes.
Use the Action Editor to select the "Rest" pose to reset the bones once more.
Save the .blend. Export to FBX and open in Unity.
Select the imported animations in the Project View while the Animation Window is open. Every animation contains curves for every bone.
The following patch produces the indented behavior for both exporters but is likely not the best changes for the surrounding code. Just a proof-of-concept that a change in Blender results in the intended result in, say, Unity:
The following images illustrate the described reproduction:
Changed status to: 'Open'
Added subscriber: @ldlework
Here is the associated blend file!
example.blend
Here is some correspondence going back all the way to 2010 indicating that this behavior has been around for some time:
http://answers.unity3d.com/questions/29802/playing-two-animations-from-one-armature.html
http://answers.unity3d.com/questions/710376/import-blender-animation-without-unnecessary-keyfr.html
Added subscriber: @mont29
Suggested fix is not acceptable, thing is, we bake animation, which implies catching non-fcurve animations (like those generated by constraints, drivers, etc.). So we do have to evaluate all (fake) objects.
Still, not sure why those bones get included, will check further.
Curves for Actions exported despite no channelto FBX: Curves for Actions exported despite no channelAdded subscriber: @BrendonMurphy
Changed status from 'Open' to: 'Archived'
no activity 2017, archiving.
Changed status from 'Archived' to: 'Open'
sigh