> For the complete documentation index, see [llms.txt](https://studio-docs.sandbox.game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://studio-docs.sandbox.game/the-editor/how-to-import-a-rigged-character-and-animation-clips.md).

# How to import a rigged character and animation clips

A static kit `.glb` has no skeleton. A **character** `.glb` has bones and, often, clips. The pawn still uses a hidden capsule for collision. You only swap `modelUrl` on the **visual** Model Mesh Node and point `AnimationStateMachineNode.configUrl` at your `.animconfig.json`. See [How to use a character pawn](/the-editor/how-to-use-a-character-pawn.md).

Clips can live in the same file as the mesh, or in extra `.glb` files. The graph pulls them in as **Sources**. If bone names differ (mannequin vs Mixamo vs your export), a **skeleton profile** (`.skeleton-profile.json`) maps each bone to a **role** so retargeting can run.

Building Idle / Run / parameters — and fixing “nothing plays” — is [Create an Animation State Machine](/the-editor/create-an-animation-state-machine.md). This page is the import path that page left out.

{% hint style="info" %}
*NOTE: Open the `.glb` in **Model Viewer** (right-click the asset) before you build a graph. If there is no skeleton and no clip list, it is a prop. Kitbash it. Do not put it on the pawn visual and expect locomotion.*
{% endhint %}

## Pieces

| Piece            | File / node                                       | Job                                                                     |
| ---------------- | ------------------------------------------------- | ----------------------------------------------------------------------- |
| Visual mesh      | `.glb` on the pawn’s Model Mesh Node (`modelUrl`) | Look. Physics **off**                                                   |
| Clip sources     | Same `.glb` and/or other animation `.glb` files   | Recorded motion                                                         |
| Skeleton profile | `.skeleton-profile.json`                          | Bone name → role (`Hips`, `RightHand`, …), optional `scale`, axis flips |
| Animation config | `.animconfig.json`                                | States, transitions, parameters                                         |
| State machine    | `ENGINE.AnimationStateMachineNode`                | `configUrl` on the character                                            |

`scale` on a profile is unit conversion (engine example: `0.01` for centimetres to metres). `hipBoneName` is required for root-motion retargeting. `positionAxisFlips` / `hipsPositionAxisFlips` correct axis mismatches (`x` / `y` / `z` booleans). `boneToRole` maps **this file’s bone names** to roles such as `Hips`, `Spine`, `LeftHand`, `RightFoot`.

{% stepper %}
{% step %}

## Inspect the character in Model Viewer

Import the rigged `.glb` (convention: under `assets/` with other character files). Right-click it → **Open in Model Viewer**. Confirm a skeleton and a clip list.
{% endstep %}

{% step %}

## Put the mesh on the pawn visual

On the Character Pawn (or its prefab), select the visual Model Mesh Node. Set `modelUrl` to `@project/assets/...your-character.glb`. Leave the capsule alone unless height changed. Physics off on that visual node. [How to set collision and navmesh on mesh models](/the-editor/how-to-set-collision-and-navmesh-on-mesh-models.md).
{% endstep %}

{% step %}

## Create an Animation Config from the model

Right-click the model and create an Animation Config from the asset. Preview clips on the mesh. Build Idle and a blended Run with `isRunning`, `forward`, `back`, `left`, `right` as on the state-machine page.
{% endstep %}

{% step %}

## Add extra clip sources if needed

When attacks or extra locomotion live in another `.glb`, open **Sources** in the config. Point at that file with a fully qualified `@project/assets/...` or `@engine/assets/...` path and add compatible clips.

If the source skeleton does not match the mesh (mannequin vs Mixamo vs your names), add a `.skeleton-profile.json` for each convention: `name`, `description`, `hipBoneName`, `boneToRole`, and `scale` / axis flips when units or axes differ. Ask the agent to author the profile next to the character. Then retarget before you expect those clips to drive your mesh.
{% endstep %}

{% step %}

## Assign configUrl

Select the **Animation State Machine Node**. Set `configUrl` to the `.animconfig.json`. Do not bind animation by editing the `.genesys-scene` file.
{% endstep %}

{% step %}

## Attach a held mesh (optional)

A separate prop `.glb` is a Model Mesh Node with physics off. Parent it to the character visual, or export it already on a hand bone in the character file.

Bone names are whatever Model Viewer shows (`RightHand`, a Mixamo prefix, or your DCC name). Finding that object in code and parenting the prop is GameClass work — [How to register a placeable GameClass](/the-editor/how-to-register-a-placeable-game-class.md). There is no Shader or special “weapon asset” type.
{% endstep %}
{% endstepper %}

## In-place clips vs root motion

If a locomotion clip moves the hips in the file **and** the pawn also moves in the world, the body double-travels. Many graphs use **in-place** walk/run clips (feet cycle, hips stay) and let the pawn transform do travel. Test in Play after you swap the mesh.

## Common mistakes

| What went wrong                            | What to do                                                                                          |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| Unrigged kit mesh on the pawn              | Model Viewer must list clips. Use a rigged file.                                                    |
| Clips from a second `.glb` ignore the mesh | Sources + skeleton profile / retarget. Matching bone **roles**, not matching filenames.             |
| Tiny or huge character after import        | Profile `scale`, and/or scale the **visual node**, not a one-off edit to the `.glb` for every size. |
| Idle forever                               | Character Pawn already writes `isRunning` and directions. A custom pawn must `setParameter`.        |
| Physics on the visual `.glb`               | Turn it off. Collision is the capsule.                                                              |

## What You've Done

You can tell a prop `.glb` from a rigged character, point the pawn visual and `configUrl` at your files, add clip sources, and use a skeleton profile when names do not match. Next: finish the graph on [Create an Animation State Machine](/the-editor/create-an-animation-state-machine.md), or [How to spawn the player and place NPC prefabs](/the-editor/how-to-spawn-the-player-and-place-npc-prefabs.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://studio-docs.sandbox.game/the-editor/how-to-import-a-rigged-character-and-animation-clips.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
