All posts
airobloxanimationtutorial

How to Make Animations in Roblox Studio with AI

Skip the Animation Editor. Generate Roblox keyframe animations from text prompts using AI. Works on R6 and R15 rigs, with proper easing and previews.

Revix Team·· min read

The Roblox Animation Editor has a reputation, and it's not a good one. Keyframing a simple wave takes longer than the entire script that triggers it. Getting natural easing requires touching every joint, every frame. It's the part of Roblox development most people quietly avoid.

AI changes the math. Describe an animation in plain English — "a chef tosses pizza dough into the air and catches it, looping every two seconds" — and a modern AI plugin can generate the entire KeyframeSequence, properly weighted across joints, with sensible easing curves. This guide walks through how it works, when it's the right tool, and where you still need to hand-tune.

How AI-generated Roblox animations actually work

When you ask an AI for an animation, it doesn't render anything — it produces structured data. Specifically, it emits a JSON description of keyframes that maps to Roblox's animation primitives:

  • Time (seconds since the start of the animation)
  • Per-joint rotation and translation
  • Per-joint easing style and direction (Linear, Quad, Cubic, etc.)
  • Optional KeyframeMarkers for triggering sounds or effects

That JSON gets turned into a real Roblox KeyframeSequence in ServerStorage with a Pose hierarchy that matches your rig's joint structure. The plugin registers the sequence with KeyframeSequenceProvider to get a playable clip URI, creates an Animation instance, and previews it on a freshly-spawned dummy in your workspace.

The upshot: you describe the motion in plain text and 5 seconds later you've got a working Animation instance you can Animator:LoadAnimation() against.

Step 1: Pick the right rig

Roblox supports two character rig types:

  • R6 — 6 joints (Neck, Shoulders, Hips, RootJoint). Simpler. Used by classic/blocky avatars.
  • R15 — 15 joints (separate Upper/Lower body parts, individual wrists, ankles, etc.). More expressive. Used by most modern avatars.

R6 is easier to animate; R15 looks more natural. AI animation tools handle both, but you have to declare which rig the animation is for. Picking R15 and playing on an R6 character produces a broken-looking result because the joint names don't match.

Step 2: Write a motion prompt

The best animation prompts describe motion, not appearance. The AI doesn't render anything visual — it only controls how joints move over time. So focus on:

  • Body part movement. "left arm raises overhead, right arm stays at side"
  • Timing. "over 0.8 seconds, then holds for 1 second"
  • Style. "sharp and snappy" or "smooth and graceful" — these map to easing curve choices

Bad prompt:

jumping animation

Better prompt:

a one-second jump: torso compresses for 0.2s, then both legs push off and extend, arms swing forward to chest height, hold extended pose for 0.4s, then land with knees bending

The second prompt produces something that actually looks like a jump because every joint has a clear trajectory and timing.

Step 3: Generate, preview, refine

If you're using Revix, this is a single create_animation command with the motion prompt and rig type. The plugin generates the KeyframeSequence, then immediately spawns a dummy in workspace.RevixPreviews and plays the animation on it so you can see what you got.

Common refinement loops:

  • Too jerky → add easing styles ("smooth easing, ease-in-out cubic")
  • Too slow → reduce keyframe time spacing or specify total duration
  • Wrong body part moving → explicitly name which joints should and shouldn't move

Each iteration takes about 3–5 seconds. You can usually nail a polished animation in under a minute of back-and-forth.

Step 4: Use it in your game

Once you've got an Animation instance, the player-side code looks the same as any other Roblox animation:

local Animation = game.ServerStorage.RevixAnimations.MyJump_Anim
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:FindFirstChildOfClass("Animator")
  or Instance.new("Animator", humanoid)

local track = animator:LoadAnimation(Animation)
track:Play()

To use the animation in your published game (where local clip URIs won't resolve for other players), you need to upload the KeyframeSequence as a real asset. Open the KeyframeSequence in the Animation Editor and click Publish. Roblox returns an rbxassetid:// URI you can swap into the Animation instance's AnimationId.

Where AI animation is great

  • Background NPC idles. Get a unique idle for every NPC in your game in minutes.
  • Emotes. Wave, dance, point, taunt — describe the motion, get it. Way faster than hand-keying.
  • First-pass prototypes. Get every animation roughed in so you can playtest the game loop, then polish the ones that need it.
  • One-off action animations. Sword swings, victory poses, taking damage.

Where AI animation is not yet great

  • Pitch-perfect combat. Frame-perfect hit boxes and snappy combat feel usually need hand-tuning.
  • Synchronized animations across multiple characters. Two-character cinematic moments are very hard to get right via prompts.
  • Facial expressions. Roblox face animation goes through a separate system (FaceControls and FaceAnimatorService) that text prompts don't cover well.

For these, generate a rough pass with AI and clean up in the Animation Editor.

Common pitfalls

Wrong rig type. If your character looks like it's having a seizure when the animation plays, you almost certainly generated an R15 animation but loaded it on an R6 rig (or vice versa).

Animation Priority not set. Idle animations should be Idle priority; action animations should be Action. Without this, your jump animation can get blended with the walk cycle and look weird.

Looping animations not set to loop. Set KeyframeSequence.Loop = true (or specify loop: true in your AI prompt) for any animation that should repeat.

Pairing animations with the rest of your game

Animations are most useful when they're paired with logic that triggers them. Combine this with:

Install Revix and generate your first animation in the time it would take to open the Animation Editor manually.

Keep reading