From a static mesh to a Unity-ready creature

MonRig gives a creature mesh a skeleton and then generates a moveset for it — walk cycles, attacks, hits, deaths — from the anatomy you placed, not from a library of retargeted clips. This page is the whole loop, end to end, finishing inside Unity.

archetypes starter skeletons animation clips Export to Unity

The loop

Six steps. Only steps 1–3 need you; 4–6 are the machine and your engine.

1

Bring a mesh

Drop an .fbx, .glb or .obj onto the Studio page, optionally with a diffuse texture (.png/.jpg/.webp). Pick the archetype that matches the creature's body plan — that choice decides how it walks, not how it looks.

The mesh should be in a neutral, near-rest pose — arms out or relaxed, legs straight-ish, not mid-action. A mesh frozen mid-stride will be rigged in that stride.

2

Give it a skeleton

Three ways in, and they end at the same place — a skeleton you can still edit:

  • Build skeleton — start from a ready-made layout for your archetype and drag the joints onto your creature.
  • Auto Rig — the fitter places the whole skeleton for you and returns a green / yellow / red confidence rating. Yellow and red are a review signal, not a failure: open the rig and correct the joints it was unsure about.
  • Guided Rig — you click a handful of landmarks first (muzzle, hips, a paw, an ear tip) and the fitter pins to them. Markers are placed on a side and front view at once, because a single side view hides every depth error.

Everything downstream is driven by bone roles, never bone names. A bone tagged as a hind foot behaves like a hind foot whatever you call it, which is why the same engine animates a centipede and a giraffe.

3

Shape the moveset

You do not keyframe anything. Each clip is generated from the rig and steered by dials — stride length, foot lift, body lean, tail carriage, ear floppiness, wing beat, and so on. Anatomy filters the list, so a mon without wings is never shown wing dials.

Beyond the dials there are three optional layers, each compiling down into the one below it: tracks (raw keyframes on a dial or on root motion), moves (a friendly gesture stack — "rear up over frames 4–18, ease out"), and signature phrases (named beats like coil → burst → flourish → settle that expand into moves).

The browser preview and the final bake run the same math in two languages, and a test suite proves they agree across the whole example roster to within a fraction of a degree. What you scrub in the editor is what lands in the file.

4

Bake

Baking skins the mesh to the skeleton and renders every selected clip into real keyframes. It runs on our machines and takes a few minutes.

The bake also checks its own work and reports per clip: feet through the floor, a mon left hovering, mesh tearing at a seam, vertices left unweighted. Those verdicts come back into the gallery with the offending bone named, so a bad result tells you where to look instead of just looking wrong.

5

Download

One zip per mon:

FileWhat it is
<mon>.fbxthe skinned mesh plus every baked animation take
<mon>.unity.jsonclip metadata — loop flags and animation events
<mon>.report.jsonthe bake's own verification report
unity/drop-in Editor scripts (see step 6)
README.txtthe short version of this page
6

Import into Unity

This is the step most pipelines leave to you. Copy the unity/ folder anywhere inside your project's Assets/ once, then drop in the FBX and its .unity.json side by side.

Assets/
  MonRig/unity/          ← the Editor scripts, once per project
  Mons/
    Fynix.fbx            ← the bake
    Fynix.unity.json     ← must sit next to the FBX, same name

On import — and on every reimport — the included importer reads that JSON and:

  1. sets each take's loop flag from the bake (walk loops, an attack does not);
  2. writes the AnimationEvents onto each clip — impact frames, hitbox windows, VFX and charge cues — straight from the bake's own timing, so nothing is hand-typed;
  3. generates <mon>.controller, an AnimatorController next to the FBX: a Speed-driven locomotion blend tree whose thresholds are the bake's implied ground speeds, a trigger per one-shot clip, and a bool per non-locomotion loop.

Set the FBX's Rig type to Generic. These are creature skeletons, not humanoid avatars — Unity's Humanoid retargeting expects a human bone map and will mangle a six-legged rig.

The JSON is the source of truth: re-importing reapplies everything and overwrites the generated controller, so a re-bake never needs manual re-wiring. To react to a hit in your own code, add the included MonAnimEventRelay component and listen for the event names it forwards.

Already working inside Unity? The same folder contains a bridge window (Window ▸ MonRig) that lists your mons and pulls a fresh bake into the project without a browser round-trip.

What you get

Every mon bakes the core set. Which of the extras appear depends on the parts you gave it — a creature with no wings gets no wing attack.

Core clips

loading…

Optional extras

loading…

Clip names are stable across re-bakes on purpose — an Animator state that points at Walk keeps working after you re-rig.

Agent access (MCP)

MonRig ships an MCP server, so an AI coding agent — Claude Code, or any client that speaks the Model Context Protocol — can drive this loop itself: upload a mesh, fit a skeleton, author a clip, check numerically where a bone actually went, and then look at a rendered filmstrip of the result.

It is not a chat wrapper around the editor. The agent gets the same anatomy-filtered dial vocabulary the Dials tab shows you, and the same validator, which teaches instead of clamping — an out-of-range value comes back refused with its range, an unknown dial with the nearest real names, a root track that would break a loop with the reason. Renders come from the real editor, so what the agent verifies is what bakes.

Agent and browser are two doors into one room: what the agent authors is written to the same mon the editor reads, so reloading the editor shows its work, and you can carry on by hand from there. Baking and downloading stay where they are — the agent shapes the animation, you decide what gets baked.

Set it up

Nothing to install and nothing to copy: point your agent at the studio and sign in with your browser, the way you would connect any other app.

claude mcp add --transport http monrig https://monrig.com/mcp

Then run /mcp in Claude Code and pick Authenticate. Your browser opens on MonRig, you sign in if you are not already, and a page asks whether to let that app work on your creatures. Allow it once and the agent is connected. Any MCP client that supports remote servers does the same thing from its own connector screen.

A connected app acts as you: it sees your creatures only, and a fit or a render it starts is charged and rate-limited exactly as if you had clicked it. It never sees your password, and it cannot read files from your computer. Disconnect it any time under ⚙ Account settings → Connected apps, which cuts its access immediately.

Prefer a key? For a script, a build server, or a client with no browser, create one under ⚙ Account settings → API keys and send it as a header — claude mcp add --transport http monrig https://monrig.com/mcp --header "Authorization: Bearer mrk_…". It is shown once, never expires, and is revoked from the same page. A signed-in connection is the better default: its tokens are short-lived and refresh themselves.

The tools

ToolWhat it does
list_monsyour gallery plus the read-only example rigs — where the agent finds a mon id
catalogone mon's complete authoring vocabulary, anatomy-filtered: every dial with range, default and whether it can be keyframed. Read once per mon
get_clipa clip's current authored state — only the overrides, because authoring replaces tracks and moves wholesale
authorwrite dials, keyframe tracks, the moves stack or a signature phrase onto a clip. dry validates without saving
verify_motionwhere a bone actually goes: per-frame travel decomposed into the mon's forward / lateral / vertical axes, plus a dominant-axis verdict
shota real render of the preview — a filmstrip under one camera, or an onion-skin ghost. clip="bind" renders the unposed mesh
upload_modelbring a new model in: tell the agent where the file is and it hands you one command that sends it straight to your gallery. Requires an explicit rights confirmation, which the agent must ask you for rather than assume
auto_rigfit a starter skeleton headless — the editor's own Auto Rig, with the same confidence rating. Takes a minute or three
guided_rigthe same fit with your landmarks pinned, for when Auto Rig came back yellow or red

An agent never reads your files by itself. When you point it at a model, upload_model answers with a single command that streams that one file to your gallery — the model does not travel through the conversation, and nothing else on your disk is reachable. Uploading in the studio by hand works exactly as before.

How it should work

Cheapest check first, so a wrong direction is caught before anything is rendered or baked:

  1. catalog once, then author — the validator costs nothing and refuses most mistakes outright;
  2. verify_motion for direction. Smooth and plausible is not the same as correct, and this is the project's own house speciality: a celebration that waves the arms backwards looks fine until you decompose the travel;
  3. shot for looks — clipping, mushiness, wrongness that no number names;
  4. you, for taste.

Two limits worth telling your agent about. verify_motion is bone-relative and the mesh has volume, so “the fist reaches the chest bone” can still mean the fist is buried in the chest — a contact claim needs a shot. And a shot's corner badge says which weights drew it: mesh · exact is the truth, mesh · approx can show deformation the real weights never had.

For rigging, the same honesty applies as in the browser: a yellow or red rating is a review signal, not a failure, and guided markers must be placed on the bind render — never on a posed clip, whose crouch can sit far from the mesh the fitter actually reads.

Requirements & limits

Stated plainly, because finding them out after a bake is worse:

Using the result

Your mesh stays yours, and so do the rig and animations generated from it. What the plan changes is where you may use them: the free tier is for private and non-commercial work, Indie covers commercial use under a revenue threshold, and Studio is unrestricted. The one thing no plan permits is reselling the generated rigs as a rigging service or as an asset library that is essentially MonRig output.

The binding wording is in § 9 of the Terms; this paragraph is a summary, not the contract.

Rig your first creature →