Page MenuHome

FBX Import: scale issue in parent-child bone relationship
Closed, ArchivedPublic

Description

System Information
Windows 10, NVIDIA GeForce GTX 960 (btw it doesn't matter)

Blender Version
2.76b, or any other versions (as far as I know)

Short description of error
This problem occurs when importing animation using fbx to UE4 or to Maya. I have already talked to the UE4 devs. They managed to reproduce the bug, and said that the problem is on Blender's side. So that's why I ask for your help.

Shortest way to achieve the problem: I have two bones: a child and a parent. The child bone doesn't inherit the scale and the rotation of the parent. I only animate the parent bone.

If the animation for the parent bone only contains rotation and move then the child bone acts as it should in UE4. (It doesn't rotate) If the animation for the parent bone contains rotation, move and scale then the child bone will also be rotated to the mirrored direction. It still doesn't inherit the scale transform from the parent, but it is rotated. My guess is that it does the counter rotation twice (or I am not sure how it is translated if it doesn't inherit the parents rotation). The weird thing is, that the problem is with the child's rotation, however it only happens if I scale the parent.

Exact steps for others to reproduce the error
Link for the original bug report in UE4 forum (with blend files, fbx and a video where I reproduce the issue)
https://answers.unrealengine.com/questions/352330/blender-to-ue4-scale-issue-in-parent-child-bone-re.html

Details

Type
Bug

Event Timeline

Molnár Géza (nimretil) set Type to Bug.
Molnár Géza (nimretil) created this task.
Molnár Géza (nimretil) raised the priority of this task from to Needs Triage by Developer.
Bastien Montagne (mont29) triaged this task as Needs Information from User priority.Jun 6 2016, 8:06 PM

Please attach the .blend and .fbx files here…

Hi,
sorry I am away from my computer for a week or so. Once I return I will upload any files you need.

Thanks!

You can download the .blend file from here.

It is pretty simple though. There is a child and a parent bone. The child doesn't inherit rotation. I have a single frame, where all I did was that I had rotated and scaled the parent bone. In blender the child bone is not rotated at all which is correct, because it doesn't inherit the rotation. However, once I export it to UE4 it will be rotated. The strange thing is that if I only rotate the parent bone and don't scale it, then the child bone will do as it should even after the fbx export.

Bastien Montagne (mont29) closed this task as Archived.Jun 20 2016, 5:51 PM

OK, see the issue… But I think you are trying to do something that’s simply not supported by FBX - FBX assumes a simple parent/children relationship in transformations, those Blender's advanced options cannot be represented (afaik) in FBX, and simple transform (and binding) matrices are not powerful enough to 'bake' it properly. So in a single: this is not and cannot be supported with FBX currently. Thanks for the report anyway.

Hey, wait a second. i can reproduce the same bug without turning off inherit rotation. If I use default bones with the following settings:

Bones:
'root'
'parent' (child of root, not connected)
'child' (child of parent, not connected, it has a copy transform constraint to location bone so it will always copy its location, rotation and scale)
'location'

If I rotate and move the parent bone, everything works as it should (after export) child bone stays where the location bone is. If I rotate and scale the parent bone, I get the same bug as written before.

Pls. don't tell me, that I can't even use copy location constraint if I want to scale and rotate any bone which has at least one child bone. You cannot build a normal rig without that. Of course I can avoid the problem if I only export deform bones and parent all of them to the root bone. However that destroys the bone hierarchy and I won't be able to do things in engine which would rely on that.
I do believe it's a critical problem.

This bug happens to rigify rig as well (and of course it happens it uses copy transform constrains) if you scale the shoulder bone for example.

FBX does not work well with advanced, complex rigging at all. Pretty sure your new setup is exactly same 'result' as first one - location is disconnected from rotation/scaling, though being a child. Partial inheritance like that are always tricky, if not impossible, to handle through mere matrix, and FBX does not help.

I’d like to see such a setup exported as FBX from Max or Maya?