Animation Components
MetaHuman lipsync, body animation, and player-position streaming.
UEstuaryAnimationReceiver
UActorComponent — receives the ARKit-52 lipsync stream (bot_animation), buffers it, and plays it back in sync with the audio clock. Created automatically on AEstuaryCharacter. Blendshapes are delivered to your MetaHuman through a Live Link source — see Animation & Lipsync for face setup.
Properties
| Property | Default | Description |
|---|---|---|
| Remap Asset | — | Optional DataTable to remap curve names/axes for non-standard face rigs. Empty for standard MetaHuman faces. |
| First Frame Latency Compensation (ms) | 150 | Lead time aligning the first frame with audio start. |
| Enable Amplitude Jaw Fallback | true | Drive jawOpen from audio loudness when frames are momentarily absent. |
| Amplitude Jaw Scale | 1.0 | Strength of the amplitude jaw (0–2). |
| Amplitude Attack (ms) | 10 | Envelope follower attack. |
| Amplitude Release (ms) | 100 | Envelope follower release. |
| A2F Crossfade (ms) | 200 | Blend window between amplitude fallback and the full stream. |
Methods
| Function | Returns | Description |
|---|---|---|
SetEnableAnimation(bool bEnable) | void | Enable/disable applying the lipsync stream. |
GetDriftExceededCount() const | int32 | How many times audio/animation drift passed the threshold. |
GetLastDriftMs() const | float | Most recent measured drift. |
Project-wide defaults for the amplitude fallback live under Project Settings → Plugins → Estuary → Animation|Amplitude; the per-component values override them.
UEstuaryBodyAnimationReceiver
UActorComponent — receives the body-pose stream (bot_pose) and drives a target skeletal mesh.
:::caution Experimental Body animation is a preview feature and not production-ready. The API and content setup may change. :::
Properties
| Property | Default | Description |
|---|---|---|
| Bone Remap Asset | — | DataTable mapping the incoming skeleton to your mesh. |
| Finger Policy | Driven | How hand joints are driven (see enum). |
| First Frame Latency Compensation (ms) | 150 | Lead time aligning the first frame with audio. |
| Drive Skeletal Mesh Directly | true | Drive the target mesh directly vs. through Live Link. |
| Target Body Mesh | — | The skeletal mesh component to animate. |
Methods
| Function | Returns | Description |
|---|---|---|
GetDriftExceededCount() const | int32 | Drift-threshold breach count. |
GetLastDriftMs() const | float | Most recent measured drift. |
The project-wide default finger policy is Project Settings → Plugins → Estuary → Animation|Body → Default Finger Policy; the per-component value overrides it.
UEstuaryUserPositionComponent
UActorComponent — streams the player's floor-projected position to the server so body animation can condition on where the user is. Created automatically on AEstuaryCharacter. Only relevant when body animation is enabled.
Properties
| Property | Default | Description |
|---|---|---|
| Emit Rate Hz | 30 | How often the position is streamed. |
| Auto Emit | true | Stream automatically each tick while a session is active. |
| Reference Actor | owner | Actor whose transform defines the floor reference frame. Defaults to the owning actor when unset. |
| User Pawn | local player | Pawn tracked as the user. Defaults to the local player pawn when unset. |
Methods
| Function | Description |
|---|---|
EmitNow() | Send the current position immediately. |
By default the component uses its owning actor as the reference frame and the local player pawn as the tracked user.