# Skeletons & characters

The core of the SDK: [`SkeletonConsumer`](#skeletonconsumer) receives [`Skeleton`](#skeleton) messages, keeps a [`Person`](#person) per tracked skeleton, instantiates an [`AR51Character`](#ar51character) for each, and drives it with IK every frame.

## Skeleton

Moved to [`Skeleton`](/docs/sdk-api/unity-api/classes/skeleton).

## Joints

Moved to [`Joints`](/docs/sdk-api/unity-api/classes/joints).

## Person

Moved to [`Person`](/docs/sdk-api/unity-api/classes/person).

### PersonEventArgs

Moved to [`PersonEventArgs`](/docs/sdk-api/unity-api/classes/person).

## SkeletonConsumer

Moved to [`SkeletonConsumer`](/docs/sdk-api/unity-api/classes/skeletonconsumer).

## AR51Character

Moved to [`AR51Character`](/docs/sdk-api/unity-api/classes/ar51character).

### CharacterBones

Moved to [`CharacterBones`](/docs/sdk-api/unity-api/classes/ar51character).

### CharacterMapping

<Badge tone="type">serializable class</Badge>

Maps a `Name` (entity id or display name) to a `CharacterPrefab` ([`AR51Character`](#ar51character)). `CharacterMappingHelper.TryFind(...)` looks one up by name.

### AutoScaleMode

<Badge tone="type">enum</Badge>

`{ Disabled, NonUniform, Uniform, AdvancedNonUniform }` — how the character's bone lengths are rescaled to match the tracked person. (Also `HandAutoScaleMode { Disabled, Default, NonUniform }`.)

---

Next: [Object detection & transforms](/docs/sdk-api/unity-api/object-detection).
