Animation Import Improvements

The feature I was suggesting is actually something different.

When importing a rigged character through the 3D Importer, if some bones are converted into Motor6Ds, there should be an option to preserve those bones’ global rotations instead of zeroing them out to (0, 0, 0).

To put it more simply, using AnimationConstraint as an example instead of Motor6D, there should be an option that preserves the original global orientations of Attachment0 and Attachment1 from Blender.

As you can see when importing a character now, the rotational component of each CFrame is imported as (0, 0, 0), even if the bones are rotated in their rest pose in Blender.

That is also why, in Roblox’s official character templates, the bones are not connected end to end like a conventional skeleton. Instead, they are separated and all face the same direction along the global axes.

That may be the structure Roblox recommends by default, but in most general-purpose character rigs, especially those using IK or additional constraints, bones are connected to one another and their rest-pose rotations are not all aligned to the global axes.

As far as I can tell, there is currently no option to import those original rest-pose rotations without forcibly zeroing them out.



Also, importing joints as AnimationConstraints does not seem to be supported for custom rigs yet. Hopefully, this can be added in the future!
It also looks like the ‘Animation General’ section is missing when importing glTF files. The same asset imported as FBX shows it correctly.



As you can see, the imported bones have their rest-pose global rotations adjusted so that their local Z axis always points toward the global -Y axis.

This makes it much more difficult to build rigs that use IK, since you often need to introduce additional MCH bones to compensate for the imported orientation.

On the other hand, if the rest-pose global rotations are not aligned this way, importing animations without a ‘Zeroed Rotations’ option causes a different problem: although the animation transforms themselves are identical, Blender and Roblox would have different rest-pose orientations, causing the animation to play incorrectly.

What makes this behavior particularly confusing is that bones which are not converted into Motor6Ds or AnimationConstraints already preserve their original rest-pose rotations during import.

This inconsistency encourages many Roblox animators to rely on Bones instead of physically simulated Motor6Ds or AnimationConstraints, and also makes it significantly more difficult to import animations authored in Blender.

Even if an option to import animations with zeroed rotations is added, there will still be many cases where developers want the rest pose of AnimationConstraints to match Blender’s original rest pose.

This is especially important for additive animations that are intended to work across different character rigs.
Of course, Roblox does not support additive animations yet - but this is still useful for custom animation systems.

8 Likes