Blender 2.75 FBX Export - Adds Extra Bone to Rig
#45368
Closed
opened 8 years ago by RyanGrzesiak
·
15 comments
No Branch/Tag Specified
main
blender-v3.5-release
asset-shelf
brush-assets-project
blender-v2.93-release
blender-v3.3-release
blender-v3.4-release
xr-dev
blender-v3.2-release
blender-v3.1-release
screenshots-manual
gltf_vtree
blender-v2.83-release
blender-v3.0-release
xr-controller-support
studio-sprite-fright
asset-browser-poselib
blender-v2.92-release
blender-v2.91-release
blender-v2.90-release
greasepencil-addon
xr-world-navigation
soc-2019-openxr
blender-v2.82-release
blender-v2.81-release
filebrowser_redesign
blender-v2.80-release
blender2.7
blender-v2.79b-release
blender-v2.79a-release
blender-v2.79-release
fbx_experiments
blender-v2.78b-release
collada-2
blender-v2.78-release
rigify_fixes
fbx_io_export_ignore_parents
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76a
v2.76
v2.76-rc3
v2.76-rc1
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72
v2.72-rc1
v2.71
v2.71-rc1
v2.70a
v2.70
v2.70-rc
v2.68
v2.67b
v2.67a
v2.67
v2.66a
v2.66
v2.65a
v2.65
v2.64a
v2.64
v2.63a
v2.63
v2.62
v2.61
v2.60a
v2.53
v2.54
v2.55
v2.56
v2.56a
v2.57
v2.57a
v2.57b
v2.58
v2.58a
v2.59
v2.60
v2.69
Labels
Apply labels
Clear labels
good first issue
legacy module/Animation & Rigging
legacy module/Core
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/User Interface
legacy module/VFX & Video
legacy project/2.81
legacy project/2.82
legacy project/2.83
legacy project/2.90
legacy project/2.92
legacy project/2.93
legacy project/3.0
legacy project/3.1
legacy project/3.2
legacy project/3.4
legacy project/Add-ons (BF-Blender)
legacy project/Add-ons (Community)
legacy project/Alembic
legacy project/Animation & Rigging
legacy project/Asset Browser
legacy project/Automated Testing
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Blender Cloud
legacy project/Code Quest
legacy project/Collada
legacy project/Compositing
legacy project/Core
legacy project/Cycles
legacy project/Datablocks and Libraries
legacy project/Dependency Graph
legacy project/Documentation
legacy project/EEVEE & Viewport
legacy project/Freestyle
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Physics
legacy project/Game Python
legacy project/Game UI
legacy project/Geometry Nodes
legacy project/Good First Issue
legacy project/Grease Pencil
legacy project/Images & Movies
legacy project/Import/Export
legacy project/Infrastructure: Blender Buildbot
legacy project/Infrastructure: Blender Web Assets
legacy project/Infrastructure: Websites
legacy project/Modeling
legacy project/Modifiers
legacy project/Motion Tracking
legacy project/Nodes
legacy project/Nodes & Physics
legacy project/OpenGL Error
legacy project/Overrides
legacy project/Papercut
legacy project/Physics
legacy project/Pillar
legacy project/Pipeline, Assets & I/O
legacy project/Platform: Linux
legacy project/Platform: macOS
legacy project/Platforms, Builds, Tests & Devices
legacy project/Platform: Windows
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Sculpt, Paint & Texture
legacy project/Straightforward Issue
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Translations
legacy project/USD
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Video Sequencer
legacy project/Virtual Reality
papercut
Priority › High
Priority › Low
Priority › Normal
Priority › Unbreak Now!
Status › Archived
Status › Confirmed
Status › Duplicate
Status › Needs Information from Developers
Status › Needs Information from User
Status › Needs Triage
Status › Resolved
straightforward issue
Type › Bug
Type › Design
Type › Known Issue
Type › Patch
Type › Report
Type › To Do
No Label
good first issue
legacy module/Animation & Rigging
legacy module/Core
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/User Interface
legacy module/VFX & Video
legacy project/2.81
legacy project/2.82
legacy project/2.83
legacy project/2.90
legacy project/2.92
legacy project/2.93
legacy project/3.0
legacy project/3.1
legacy project/3.2
legacy project/3.4
legacy project/Add-ons (BF-Blender)
legacy project/Add-ons (Community)
legacy project/Alembic
legacy project/Animation & Rigging
legacy project/Asset Browser
legacy project/Automated Testing
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Blender Cloud
legacy project/Code Quest
legacy project/Collada
legacy project/Compositing
legacy project/Core
legacy project/Cycles
legacy project/Datablocks and Libraries
legacy project/Dependency Graph
legacy project/Documentation
legacy project/EEVEE & Viewport
legacy project/Freestyle
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Physics
legacy project/Game Python
legacy project/Game UI
legacy project/Geometry Nodes
legacy project/Good First Issue
legacy project/Grease Pencil
legacy project/Images & Movies
legacy project/Import/Export
legacy project/Infrastructure: Blender Buildbot
legacy project/Infrastructure: Blender Web Assets
legacy project/Infrastructure: Websites
legacy project/Modeling
legacy project/Modifiers
legacy project/Motion Tracking
legacy project/Nodes
legacy project/Nodes & Physics
legacy project/OpenGL Error
legacy project/Overrides
legacy project/Papercut
legacy project/Physics
legacy project/Pillar
legacy project/Pipeline, Assets & I/O
legacy project/Platform: Linux
legacy project/Platform: macOS
legacy project/Platforms, Builds, Tests & Devices
legacy project/Platform: Windows
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Sculpt, Paint & Texture
legacy project/Straightforward Issue
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Translations
legacy project/USD
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Video Sequencer
legacy project/Virtual Reality
papercut
Priority › High
Priority › Low
Priority › Normal
Priority › Unbreak Now!
Status › Archived
Status › Confirmed
Status › Duplicate
Status › Needs Information from Developers
Status › Needs Information from User
Status › Needs Triage
Status › Resolved
straightforward issue
Type › Bug
Type › Design
Type › Known Issue
Type › Patch
Type › Report
Type › To Do
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
4 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#45368
Reference in new issue
There is no content yet.
Delete Branch '%!s(<nil>)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
System Information
Window 8.1 on a gtx 660ti
Blender Version
Broken: Blender 2.75
Worked: Blender 2.74
Short description of error
I just found out that when i export my character rig using the FBX Export, it adds my Rig as a top level bone. This means if i have a Root bone in the rig, i now have two when i export. The reason this is a problem is because i have Root Motion embedded in the animation and when i import it into the Unreal 4, it can no longer grab the Root Motion from the rig. This is because Root Motion is read from the top level bone. It looks like an error in Blender 2.75 as it worked fine in 2.74 and i could find no way to avoid it. It just means I can't use Blender 2.75 until i sort through this problem. I hope this helps!
You can not replicate the problem by importing it back into Blender so i included two pictures of unreal 4 for convenience.
armature_test.blend
Ps I have attached a simple rig, but it does the same with any rig
Changed status to: 'Open'
Added subscriber: @RyanGrzesiak
#50649 was marked as duplicate of this issue
Added subscriber: @mont29
Thanks for the suggestion. I passed over the Normal option in the FBX export options as i thought it was only for the shading of the faces. I did a quick export to Unreal 4, but i didn't see any changes. I'll look into it in more depth when i get back. Thanks again for your time!
I have tried to export with normal turned off but it is not working. This is my first time reporting on this site so i am not sure this is the best way to request help. Is there any other way to stop the rig exporting with the extra Root Bone?
Added subscriber: @crushyerbones
Eeeeeeh, who ever suggested to export without normals here? Normals have nothing to do with armatures & bones!
Ok, so, things are hairy here.
2.75 is actually behaving correct, it was previous versions that were buggy regarding the export of the armature object itself.
Now, we have to export an empty as root of the armature here, since in Blender armature are an object (while in FBX, it’s more like each bone being an object, with no concept of 'armature object' really).
The problem comes from UE4 reading that empty as a (root) bone of the armature, instead of what it is - an external object, parent of the bone’s chain.
I can add (yet another :/) export option to not export said armature objects at all, but that means we'll have no animation (or even 'world transform') of the armature object iteself in the root bone, then (in practice, this means armature object in Blender should be at origin, with no rotation nor scaling, and no parent nor any animation)… Not much keen on this idea tbh.
I personally think that if normal fbx files don't have an equivalent, maybe the option to notexport the Armature makes sense. Not having that option means importing and exporting an fbx file might never have the same result:
Eg: Imagine we want to simply edit an UV coordinate in an fbx file we imported. Exporting it back again generates a new root armature node -> We now have a different bone hierarchy.
As a programmer I know it's a horrible compromise but I think it makes sense due to the differences between Blender and the fbx format.
Of course, this is just my opinion as a bystander also facing Ryan's problem :)
Thanks guys for looking into the problem. You have pretty much touched on exactly what the issue is. I looked into trying to get Unreal 4 to target another bone as a Root bone, but from my research they said it would have performance cost so they didn't add it.
Changed status from 'Open' to: 'Archived'
Ok, so, have wasted a whole afternoon on this - and honestly think it could have been wasted in more profitable ways…
It’s a bit the same story as with the 'apply transform' option - in theory it should be reasonably simple, but FBX transform model is such a nightmare (not to mention binding stuff, which is a squared nightmare), that it ends up more or less broken… Rather not make our poor code even more convoluted for an half-working feature.
See https://developer.blender.org/diffusion/BA/browse/fbx_io_export_ignore_parents/ if you want details and code so far…
PS: still do not understand why you are animating your first bone instead of the armature object itself, which will be exported as kind of root bone in FBX…
Anyway, thanks for the report, but for now considering this as a (reasonably unsolvable) feature request, there is no real bug here, more like a matter of adjusting your process.
That is really funny. I had no idea that you could animate the armature and the animation would appear in the action keyframe data.
Anyway, there is a reason why I am using the first bone to animate. When I set up my rig, I created constraints and drivers which completely counter the effects of the root bone and attach it to the pelvis bone. This allows me to do two things. First, when Unreal is playing the root motion, the camera of the character follows the root bone. This means I can animate the root bone solely for the camera information so I can give weight to the animation. Second, it takes out the issue of having to counter-animate the motion of the root bone. It is hard to explain, but when setting up a complex Root Motion animation, you have to go back and forward between moving the Root of the character and the animation around it to compensate.
Long story short, you can animate the rig as the root bone, but you lose control of the bone drivers and constraints, and it leads to an un-seamless animation workflow within the pose mode (jumping in and out to update keyframes). I hope the following discussion made it clear and i'll check out what you've done as soon as i can. Thanks once again for your awesome work and time.
Ps The attached picture is showing a character with the ability to move the root bone without affecting the position of the feet or hands (constraints).
Added subscriber: @rickjs