---
title: "avatarType"
description: "An avatar type describes a kind of body: a humanoid, a quadruped, a vehicle."
section: "Types"
slug: "types-avatartype"
canonical: "https://origozero.ai/docs/types-avatartype"
updated: "2026-10-03T23:56:07.657553921+00:00"
tags: ["asset-type", "reference"]
---

# avatarType

A rig can be mapped for more than one type; its author's corrections are stored on the rig,
keyed by the type's guid, so mapping a skeleton for one type never overwrites another.

## The module

`init.luau` returns:

| Field | What it is |
|---|---|
| `name` | The type's name, e.g. `"humanoid"`. |
| `vocabulary.roles` | Every role the type can assign (`hips`, `lefthand`, ...). |
| `vocabulary.chains` | Every chain the type can assign (`spine`, `leftArm`, ...). |
| `vocabulary.required` | The roles and chains a rig must have for the type to claim it. |
| `qualify(structure)` | Maps a skeleton. `structure` comes from `modules.rigStructure`. |

`qualify` returns:

```luau
{
    qualifies = true,              -- the rig is this kind of body
    confidence = 0.94,             -- 0..1
    reason = nil,                  -- one line, when qualifies is false
    mapping = {
        roles = { hips = "Hips", ... },            -- role -> bone name
        chains = { leftArm = { "Clavicle_L", ... } },
        secondary = { { root = "Hair_01", tip = nil, class = "hair", bones = { ... } } },
    },
    report = {
        chains = { leftArm = { confidence = 0.97, bones = { ... } } },
        missing = { "rightArm" },
        ambiguities = { { role = "hips", candidates = { { bone = "Hips", score = 0.9 } } } },
        contradictions = { "..." },
        stale = { { role = "leftforearm", bone = "Elbow_L" } },
        verdict = "humanoid: every required chain found",
    },
}
```

## Using one

```luau
local humanoid = asset.resolve("@builtin::avatarTypes.humanoid", "avatarType")
local rig = asset.resolve("PolygonSyntyCharacter", "rig")
local q = rig:qualify(humanoid)        -- the rig's effective mapping for this type
print(q.qualifies, q.mapping.roles.hips)
```
