Animations from blender rigs import into roblox with -180 degree motor6d transform

Important context

In roblox UP is +Y and forward is -Z. In blender UP is +Z and forward is -Y.
When exporting any regular fbx mesh from blender, as long as you use these settings (which are the default anyway)

Blender’s Use Space Transform option automatically corrects the axes so that your mesh is facing the right way when imported into roblox.

Animation (pose) data is stored in fbx as bone transforms. Roblox has a hybrid system of Motor6d “instance transforms”, and also supports bone transforms for imported rigs. When you make an animation in blender, the individual meshes of your rig are transformed through the armature modifier i.e. the bone transform drives the “instance” (mesh) transforms. Because of this, the animation data only pertains to the bones

bug

However, when importing an animation, Roblox adds extra Motor6d animation tracks for every single meshpart for whatever reason. Blender has nothing to do with this, nor are these encoded for in the fbx file. And probably due to some legacy “hack fix”, these motor6d tracks have a default rotation of -180 degrees??

this extra track ends up flipping the rest of the animation upside down causing a whole world of headaches, and this has been the case for years if you search up “roblox blender animation upside down”

fix

Deleting all motor6d tracks with -180 transforms fixes the animation. You could also reset every mesh motor6d keyframe to 0 rotation.

If you aren’t sure what a motor6d track is, look at the tracks that have the same name as your meshparts, like “Head”, “Torso”, etc. Bone tracks have the same name as your bones: “Spine”, “LegBone” etc. If you made your animation in blender and imported it, it should only have bone tracks since motor6d tracks are a uniquely roblox thing, so deleting any “Head” “Torso” tracks (as long as you don’t have any bones named that) will not mess with your animation.

also there’s another bug - deleting any track freezes the animation editor. you gotta save the modified animation, reload the animation editor, reload the modified animation, then it will start playing properly

Expected behavior

get rid of extra motor6d tracks or make it not be rotated by -180 degrees

5 Likes

Today I tried importing animations but they were all upside down and I was trying to figure out what was causing and this is it.

When I change the values to 0 it’s no longer upside down and works as it should.

Deleting the tracks actually just breaks the whole animation. I have to remove the keyframes instead.

1 Like

Deleting the tracks causes the editor to freeze up because of another bug, but the animation hasn’t actually been broken. After deleting the track, save the animation, click Create New animation to refresh the editor (this is the very important or else it will stay bugged), then load it again, and it should work properly

1 Like

It still happening is someone know how to fix it?


1 Like

I think the problem here is this wont appear anymore

They updated the editor to support importing of more than just .fbx files too

Does it mean they will fix this too right??

Roblox is probably flipping the animation. I’ve never been able to get importing animations directly in studio anim editor working since it always messes up scaling or something else. I import the fbx files directly through the 3d importer.

Can you take a screenshot of the animation in the studio anim editor after loading it? Open up the tracks on the left side of the editor like in JarateIsCool’s screenshot

Yeah we’re also having issues with our animations being imported upside down. The loaded animation is the expected output, and the one that’s imported is with the new import option.

We have a time sensitive update, so we need this change reverted considering a majority of Roblox users are exporting FBX files from Blender.

animationsbroken

Are “Global_Root” or “Local_Root” mesh or bone? If it is a mesh then roblox may have added unexpected transforms to its motor6d assuming this is a multi mesh rig (single mesh rigs don’t get motor6ds auto added)

If you can’t find anything, save the animation locally using Save As, and go to AnimSaves in server storage to find the KeyframeSequence. The anim editor is reading from those keyframe sequences and sometimes you can find extra tracks in the actual keyframe sequence that don’t show up in the animation editor.

If you find something in the keyframe sequence, before changing anything there reopen anim editor and click Create New (i kept forgetting this when i was messing around). This is to force the anim editor to stop caching the current copy of the animation, so you can directly modify the keyframe sequence in the explorer, then reload animation. If the anim editor stays on that animation, the cached autosave will overwrite any changes made to the sequence in explorer

Global root and local root are bones.

Ok, so on imported FBX animations, if you delete the mesh keyframes and set new keyframes to the beginning of the animation to 0 on all transforms rather then the -180 it fixes it.

Still 0 reason for this transform to take place, so still considered a bug imo

1 Like