Maya FBX to Roblox (animations too)

I have finally gotten an animation from maya to roblox, following the developer hub guidelines.
https://developer.roblox.com/en-us/articles/using-avatar-importer
They are however not as informative, as one could hope for, so i will post what additional measures you need to take, to import a “maya FBX” rig, and animations into roblox.

hieracy

First off, after struggling with the “custom character importer” and not getting anywhere,
i made the R15 approach work, which means:
Mesh names match join names, with “_Geo” or similar appended.
Meshes are parented to their respective joints.

The export rig joints cannot have “joint orient” values.
so if you already have a rig and animations, then rebuild a second rig by creating 1 single joint, and duplicate that around. (this means you cannot use the “Orient Joint” maya feature, for now atleast)
Use the old rig as driver, by parent constraining each new joint to their old counterparts.

Exporting:
In addition to the developer hub guidelines, note that if you have “input connections” or “constraints” checked, then the roblox importer will fail(if you use them), and you will get an incomplete import.

anim2

anim3

anim1

And if you use a controller rig + constraints, just select the export rig(select hierarchy on “Root”)
Goto File → Export Selected
And bake animation.

I guess the FBX import/export workflow (and documentation) will be updated in the future, but until then, this should get Maya users started.
Happy animating, and check out the dev hub link, I’m skipping what is already documented.

edit:
note the documentation states that " * Mesh translate values should be (0,0,0) before being parented to the joints."
this is misleading, as meshes should have translate and rotation values at 0,0,0 after being parented to joints, and scale at 1,1,1.

uploading full image of maya hierachy

13 Likes

if you need animations to work on roblox generated rigs, then every export joint needs its translation values to be 0,0,0 - this is not shown, or explained in the documentation.

it can be done by making a group as a parent for each joint. these groups should be placed at the same spot as the joint it will be a parent to (so the initial translation values are on the group, and not the joint) - and the studio importer will disregard this group_node and import the correct animation values onto the studio rig.

The name of these extra parent nodes does not matter. But you can definately name them better than i did in the screenshot.
edit: “Root” and “HumanoidRootPart” does not contain animation data, and therefore does not need this extra parent node.

4 Likes

so you only can export it propperly parenting mesh with joints instead of paint wheights?

nah you can skin a mesh “traditionally”
depends if its for r15 or not.

theres a fbx reference to download at the new help page, in the bottom:

So I have no problem getting my Maya animations and rig to work, but I do have an issue with scaling.

When you export from Maya, you can set the scale to centimeters (1.0), decimeters (0.1), etc., but there is no option to scale to 5% at all or pick custom scaling % on export, only unit conversion.

I already have my rig and all my animations complete. I’ve attempted to change the scaling in Maya before export, but I still end up with my best results coming out as 2x the size I want the avatar to be in Roblox Studio.

I tried the animation resizer plugin, but there are some animated attachments it breaks every time.

So how do you solve the animation scale from Maya to Roblox since the closest Maya gets is 0.1 and Roblox realistically is about 0.05?

its a good idea to have matching scale between roblox and maya, and avoid unnessesary scaling,
if you rigtclick and export any model from roblox as .obj, then you have that as a size reference in maya.
revert your rig to match, and re-export rig, then animations, and it should all fit together.

if your rig was made too big in maya, you can either make your rig scalable (semi big task)
or break it, rescale averything, and redo constraints.

you can also tweak units more precicely in the FBX export options;
Advanced options
Units
The Units option lets you view the conversion factor (scaling value) the plug-in uses as well as modify the conversion units…
Scale Factor
set to 0.05, or whatever makes it right

I solved the issue outside of Maya after going through every support option available, talking to every professional I know that uses Maya, wasting massive time attempting various tutorials, and discovering that Maya was actually the problem. Just to note:

This is only partially true. Be aware there is no such thing as changing the scale factor in Maya to an integer. You can change by real-world measurements only. For example, by default, its scale is in centimeters. You can change that scale to decimeters, millimeters, even inches, etc., and that will have variable outputs that it will change to, such as 10x, 0.1x, 0.01x, etc.

You can’t actually put in any scale factor by number and you can not change the scale factor to anything that’s not in its presets.

Normally, I would have just scaled using the animation scale plugin, however, that plugin broke when the animation rigs got too complex.

yuck :smiley: scale problems from 3d software to engines is allways a thing. we just had something similar solved in our project.
but good to hear you found a solution!
good luck with your project

Yeah, basically every other 3D modeling program seems to have no issues with this. It’s a Maya thing, which honestly seems really outdated.

I can’t make suggestions, but if I could, I think I would ask Roblox to implement scaling for models and animations on import. The problem is real but from what I gathered with Maya’s support was that they consider this the engine’s problem to deal with. They seem to cater more toward Hollywood and real-world scaling.

1 Like