music-to-3d choreography → roblox

AI Dance Animation for Roblox

mvntSTUDIO turns a track into 3D choreography in the browserand gives you a GLB download today.Roblox has its own rig, its own units, and its own publishing step — plan the future FBX path around all three.

Roblox does not play animation files, it plays assets

The thing that trips up everyone importing AI dance animation for Roblox for the first time is that a file on disk is never the final form. Roblox animations live in the Animation Editor, get published to Roblox as assets, and are played at runtime by asset ID. When the planned FBX export arrives, an FBX in your project folder will be a step along the way, not something a script can reference. Plan for the publish step from the start, because ownership of that asset determines whether the animation loads at all.

The generation side is straightforward. mvntSTUDIO is a music-to-3D-choreography tool that runs in the browser with no install: give it a track — YouTube, Suno, and SoundCloud are common sources creators bring into Studio — and it produces a dance scene you can review immediately. Sign in and you can download the current GLB export. FBX and BVH exports are coming soon, so the Roblox import guidance below is a planned workflow for when those formats arrive. There is no Roblox plugin and no direct upload; today you can inspect the GLB in a glTF viewer or Blender, then use the planned FBX through Roblox Studio’s own animation import when it launches.

Which format is available for Roblox today

GLB is available today; FBX and BVH are coming soon. GLB is the current download for viewing or Blender, while Roblox Studio’s FBX animation-import workflow is planned for a future export.

  • FBX Coming soon

    FBX export is coming soon. When it launches, Roblox Studio’s Animation Editor will be able to import animation from the FBX onto a rig already present in the workspace. That is the planned path from an external tool into a Roblox animation asset, and it is the format to prepare for if Roblox is your target.

  • BVH Coming soon

    BVH export is coming soon. It will contain joint hierarchy and rotation channels with no geometry. Once the planned BVH and FBX exports are available, BVH will be useful when you need to move the motion onto an R15-named armature: import it into Blender, retarget without dragging mesh data along, and then use FBX for the Roblox Studio workflow.

  • GLB Available now

    GLB is the current download. It is a single self-contained file with mesh, skin, and motion, readable by any glTF viewer and by Blender, so it is a quick way to check the choreography and a convenient file to open in Blender when the skeleton needs rework while the FBX and BVH exports are prepared.

The Roblox-specific obstacles

Roblox differs from the other engines on this site in more places than people expect — units, rig, and the fact that publishing is mandatory.

1. Studs are not metres

Roblox measures in studs, its own unit, and a stud is not a metre. A character exported at real-world human scale will not line up with a default Roblox rig, and the mismatch shows up as limbs that overshoot or undershoot rather than as an obviously giant character. Compare the imported motion against a rig inserted by Roblox’s own Rig Builder rather than reasoning about it in metres, and rescale in Blender before export if the two clearly disagree.

2. Y-up, and check the facing direction

Roblox is Y-up, which matches the usual FBX convention, so the "character lying on its back" failure common to Z-up round trips is less likely here. The orientation issue that does bite is facing direction: Roblox has its own convention for which way a character looks, and an export authored to a different one will dance backwards relative to everything else in your place. Verify against the Rig Builder rig in the viewport rather than assuming — it takes ten seconds and saves a reimport.

3. R15, not R6

Roblox has two body layouts. R6 is six parts — torso, head, two arms, two legs — with no elbows, knees, or waist. R15 splits the body into fifteen, with names like UpperTorso, LowerTorso, LeftUpperArm, LeftLowerArm, LeftHand, RightUpperLeg, RightLowerLeg, RightFoot, and so on. Choreography generated for a full biped assumes joints that R6 simply does not have, so a detailed dance mapped onto R6 collapses into something much coarser. Insert an R15 rig with Rig Builder from the Avatar tab and import against that.

4. Joint naming has to correspond

For future FBX or BVH files, map the incoming skeleton to the R15 rig in the workspace: source joints need to correspond to R15’s layout and naming, and a direct drop-in may require adjustment. A Blender pass can retarget the motion onto an armature with R15-compatible names and hierarchy before you use the future file in Roblox Studio. This is more work than anyone wants, but it is deterministic — once you have an R15-named armature saved, subsequent dances can go through the same pass in minutes.

5. Animation priority decides whether you see anything

Roblox plays multiple animation tracks at once, and priority resolves the conflict. The default character scripts are constantly playing idle and movement animations, so a dance imported at a low priority is simply overridden and the character appears to ignore it. Set the priority to Action in the Animation Editor, or set AnimationTrack.Priority in code. This is the answer to a large share of "my animation does not play" questions, and it is the first thing to check when the asset loads without error but nothing visible happens.

6. Publishing and asset ownership

An animation has to be published to Roblox before a script can use it; publishing returns an asset ID that you reference as rbxassetid://. The catch is ownership. An animation published under a personal account will not load in an experience owned by a group, and vice versa — the asset has to be published under the same owner as the place using it. This fails silently in ways that look like a scripting bug, so if the code is right and the track never plays, check who owns the animation before you check anything else.

7. Looping

Looping is a property of the animation, set with the Looped toggle in the Animation Editor or on the AnimationTrack at runtime. A dance that stops dead after one pass is usually not a broken import, just an unlooped clip.

Import checklist

The current GLB handoff, followed by the planned FBX-to-playback workflow.

  1. 1 Download GLB from Studio. Generate the dance from your track in mvntSTUDIO, sign in, and download the current GLB export.
  2. 2 Insert an R15 rig. In Roblox Studio, open the Avatar tab and use Rig Builder to place an R15 rig in the workspace. This is the rig the imported animation will be matched against.
  3. 3 Inspect GLB or plan the animation import. Open the GLB in a glTF viewer or Blender today. When the planned FBX export is available, open the Animation Editor, select the rig, and import the animation from the FBX file. Scrub the timeline immediately to check scale and orientation.
  4. 4 Set priority and looping. Set the animation priority to Action so it is not overridden by the default idle and movement tracks, and set Looped if the dance should repeat.
  5. 5 Publish to Roblox. Publish the animation from the Animation Editor under the account or group that owns the experience, and copy the resulting asset ID.
  6. 6 Play it from a script. Create an Animation instance with the asset ID, load it through the character’s Animator, and play the returned AnimationTrack.

Future playback script shape

Use this only after the planned FBX/import/publish workflow gives you a Roblox animation asset ID. Load through the Animator rather than the Humanoid — Humanoid:LoadAnimation is deprecated. Replace the numeric id with the one publishing gave you.

local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://0000000000"

local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")

local track = animator:LoadAnimation(animation)
track.Priority = Enum.AnimationPriority.Action
track.Looped = true
track:Play()

Symptom to cause

Work down this list before rewriting any code.

The script runs without errors but the character does not dance
Animation priority too low, so the default idle and movement tracks win. Set it to Action.
The animation will not load in a group experience
It was published under a personal account. Republish under the group that owns the place.
The dance looks coarse and jointless
It was mapped onto an R6 rig, which has no elbows, knees, or waist. Rebuild against R15.
The import lands but limbs overshoot
Scale mismatch between the source and the Roblox rig. Rescale in Blender against a Rig Builder reference and reimport.
The dance plays once and stops
Looped is off, either on the published animation or on the AnimationTrack.

Where generated choreography fits in a Roblox experience

Emotes, NPC ambience, and crowd fill are the natural home for generated dance. It gets you a beat-aligned pass in an afternoon instead of a sprint.

DimensionHand-keyed or mocap dancemvntSTUDIO music-to-3D choreography
Starting point An empty timeline, or a booked capture sessionA song — Studio reads the track and builds motion against it
Beat alignment Counted and keyed by hand, or cleaned up after captureGenerated against the rhythm, tempo, and structure of the audio
What you take away Whatever your DCC exportsGLB download from the browser today, with BVH and FBX coming soon
Best used for Final hero performances and signature choreographyDrafts, background crowds, emotes, and fast iteration

AI dance animation for Roblox — common questions

Which file format does Roblox want for animation?
GLB is the current download and can be inspected in a glTF viewer or Blender. FBX is the planned format for Roblox Studio’s Animation Editor; when it becomes available, it will import onto a rig you have already placed in the workspace. BVH is also planned for Blender retargeting first.
Should I use R6 or R15?
R15. It splits the body into fifteen parts with articulated elbows, knees, and a waist, which is what a full-body dance needs. R6 has six parts and no elbows or knees, so detailed choreography flattens out into something much simpler when mapped onto it.
Why does my animation not play even though the script runs?
Most often animation priority. The default character scripts continually play idle and movement animations, and a lower-priority track is overridden without any error. Set the priority to Action. If that does not fix it, check that the animation asset is owned by the same account or group as the experience.
Do I have to publish the animation to Roblox?
Yes. Scripts reference animations by asset ID through rbxassetid://, so the clip has to be published from the Animation Editor before it can be loaded at runtime. Publish it under the owner of the experience that will use it.
Why is the imported character the wrong size?
Roblox measures in studs rather than metres, so a real-world-scale export does not line up with a default Roblox rig. Compare the current GLB against a rig inserted with Rig Builder in a viewer or Blender; when the planned FBX export arrives, rescale in Blender before importing it if the two clearly disagree.
Can I use the same export in Unity or Unreal too?
The current GLB can be inspected in all three workflows, with different tools at the other end. The planned FBX export will cover the engine-native paths: the Unity page covers metre units and Humanoid Avatars, while the Unreal page covers centimetre units and Skeleton assets.