Animation Import Improvements


Hi Creators,

Today, we’re introducing more settings to the Animation Clip Editor Importer so you can import animations faster and with more control. We’ve also updated the Importer so that animations are automatically added to the AnimSaves when importing a model.

New Animation Clip Editor Importer Settings

  • Rig Scale: We now support customizing the scale of your animations. If the scale of your animations don’t match the Stud you can set the scale upon importing to correct it and simplify your workflows. You can also modify the scale factor to directly scale the animation.

  • Rest Pose Source: Previously, when importing an animation from the Animation Clip Editor the rest pose would always be determined by the first frame of the first track, but this may not be ideal in all cases. You can now specify which track to get the rest pose from.

  • Rig Type: You can now specify the rig type of your animation, either R15 or Custom.

  • UI Improvements: The size of the Animation Clip Editor Importer window will now dynamically scale to fit into the size of your Animation Clip Editor window. When it’s scaled down, a scroll bar will appear to let you see all the options at this reduced size.

  • Animation Track Selection: You can now specify which animation track on the selected file you want in the Animation Clip Editor.

  • Saving Animations on Import: When importing 3D models from the Universal Importer, the animation data on that model will now automatically save under AnimSaves. Previously, creators had to select the model and then separately import the animation from Roblox when opening the Animation Clip Editor.

How to Use

When importing an animation from the Animation Clip Editor, a dialogue box will appear after you select the file you want to import. The dialogue box will show the options outlined above, giving you the ability to customize your animation import settings.

Please share any feedback with us below.
Thank you!


FAQs

What’s the difference between Imported Rig and Imported Rig (Zeroed Rotations)?

  • Imported Rig gets the rest pose from the rig in the file imported. Imported Rig (Zeroed Rotations) does the same, but will zero the rotations of all bones of the rig before getting the rest pose.

What is R15 vs Custom?

  • R15 is useful for automatically supporting a variety of Roblox functionality, like emotes, humanoids, etc. Custom is useful for when you want to create non-humanoid characters with custom rigs.

How large is a stud in terms of a scale unit?

  • A stud is 0.28 meters, or 11.02 inches.
74 Likes

This topic was automatically opened after 10 minutes.

Hmm interesting.

Anyways cool update! I don’t animate much tho :man_shrugging:t2:

10 Likes

W update! Finally i can import animations faster🎉

10 Likes

I’m trying to upload a video clip, but it got stuck loading and when I try to upload, I get 64 errors

3 Likes

I got the same error yesterday, you have to restart the studio

3 Likes

Does thas mean when I import a horse (or any other asset with animation) into Studio from Meshy (for instance) - the animation will now be imported with it ?

And from what I read… it is saved under animations…
.. so does that mean I will have to re-attach it then ?

2 Likes

does it make it so i can import animations with custom rigs with it being exactly like how it was in blender?

2 Likes

I think that’s probably the case.
Roblox used to do the bizarre thing of forcing the C0 rotation of bones that would be converted into Motor6Ds to (0, 0, 0) (seriously, why?)

As a result, while it remained compatible with various R6/R15 characters,
we effectively had to hardcode every bone’s rotation to (0, 0, 0) ourselves.

Now we can finally configure it.

Blender to Roblox is probably no longer needed now.
Thanks so much for finally making this happen, Roblox.


Anyway, one thing to keep in mind from now on is that if your bones’ global rotations aren’t aligned to the +Y axis in Blender
(I think that’s correct, though I’m still a bit fuzzy on the exact rotation rules used when converting bones to Motor6Ds)
you’ll need to import the animation with Zeroed Rotations enabled so that the bones’ global rotations are aligned to the +Y axis.

Personally, I think Import3D should also provide an option to preserve the original global rotations of Motor6Ds instead of resetting them.

this is a bit off topic, but I still think Roblox’s character pipeline is a little odd.

Importing defaults to an I-pose (I’d at least understand an A-pose, but why an I-pose? It makes modeling and weight painting unnecessarily difficult) while animation retargeting uses a T-pose.

Hopefully this will continue to improve over time.

2 Likes

So the canon height of r6 Robloxians is like 4’6? Damn, thats crazy. Good update doe

4 Likes

64 errors?! Are you trying to debug an SSH server?! :sob:

Hopefully this gets fixed soon.

4 Likes

why would roblox use the worst possible way it can possibly think of :sob:

1 Like

w update now allow us to change the default animations without having to publish the place first

4 Likes

Hi @TQNY2,

Yes! This update allows you to have greater configurability over the animations you upload into Studio.

The saved under animations section refers to a specific folder under ServerStorage, called AnimSaves. This folder opens when you work on an animation in the Animation Clip Editor. New animations from Import 3D will be saved there as well if the Animation Clip Editor is open.

5 Likes

Hi @sakura_soyuta and @AB_XIl,

We understand the difficulties of working with Blender and other such tools, especially given all the weird quirks of our different systems! The Interoperability team at Roblox is specifically working on improving these workflows.

We have an option in the 3D Importer under the “Animation General” section that should allow you to preserve the original global rotations if you select “Default with rotations”. Hopefully that helps, but reach out if you encounter any other issues.

4 Likes

Oh, I didn’t realize this already existed.
I may have missed it because the name wasn’t immediately obvious to me, and I don’t recall seeing it in the documentation either.
The documentation could always be improved with a pr later, but it might also be worth considering whether the naming could be made more consistent.
It might be worth considering renaming them to ‘Imported Rig (Zeroed Rotations)’, ‘Default (Zeroed Rotations)’, ‘Imported Rig (With Rotations)’ and ‘Default (With Rotations)’ for the sake of consistency and clarity.

Actually, suffixes like ‘Zeroed Rotations’ and ‘With Rotations’ might give the impression that rotations are either omitted entirely or included, rather than indicating whether the bones’ global rest-pose rotations are preserved or zeroed to (0, 0, 0).

Maybe ‘With Rest-Pose Rotations’ and ‘Zeroed Rest-Pose Rotations’ would be clearer?

They are a bit longer, but I think the extra clarity is worth it if it helps avoid confusion. Just a suggestion, though!

3 Likes

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

I’d love to see an update on the face controller for animation

2 Likes

idk why I got 64 errors; I’m just trying to publish it :sob:

2 Likes

Well, I see some people struggle with exporting and importing Blender models and animations into Roblox.

Based on everything I’ve tested and noted down, here are some tips so you won’t run into any issues:

  1. Create bones for ALL model vertices, even the ones that won’t be animated. Otherwise, vertices with no weight paint will be moved by a random bone.
  2. Make sure the animations are the same scale as the model. (Seems obvious, but we forget sometimes!)
  3. When exporting the animation (FBX), go to the Bake Animation tab (depends on your version) and uncheck NLA Strips and All Actions (Regarding All Actions, apparently that’s the feature they added, though I haven’t tested it yet).
  4. Bones CANNOT have the same name as any exported object, otherwise the bone will be deleted. Example: You can’t have a 3D arm named LeftArm and a bone also named LeftArm.

If you do all this, you probably won’t have any trouble importing your animations into Studio.

3 Likes