Skip to main content

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

PropertyDefaultDescription
Remap AssetOptional DataTable to remap curve names/axes for non-standard face rigs. Empty for standard MetaHuman faces.
First Frame Latency Compensation (ms)150Lead time aligning the first frame with audio start.
Enable Amplitude Jaw FallbacktrueDrive jawOpen from audio loudness when frames are momentarily absent.
Amplitude Jaw Scale1.0Strength of the amplitude jaw (0–2).
Amplitude Attack (ms)10Envelope follower attack.
Amplitude Release (ms)100Envelope follower release.
A2F Crossfade (ms)200Blend window between amplitude fallback and the full stream.

Methods

FunctionReturnsDescription
SetEnableAnimation(bool bEnable)voidEnable/disable applying the lipsync stream.
GetDriftExceededCount() constint32How many times audio/animation drift passed the threshold.
GetLastDriftMs() constfloatMost 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

PropertyDefaultDescription
Bone Remap AssetDataTable mapping the incoming skeleton to your mesh.
Finger PolicyDrivenHow hand joints are driven (see enum).
First Frame Latency Compensation (ms)150Lead time aligning the first frame with audio.
Drive Skeletal Mesh DirectlytrueDrive the target mesh directly vs. through Live Link.
Target Body MeshThe skeletal mesh component to animate.

Methods

FunctionReturnsDescription
GetDriftExceededCount() constint32Drift-threshold breach count.
GetLastDriftMs() constfloatMost 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

PropertyDefaultDescription
Emit Rate Hz30How often the position is streamed.
Auto EmittrueStream automatically each tick while a session is active.
Reference ActorownerActor whose transform defines the floor reference frame. Defaults to the owning actor when unset.
User Pawnlocal playerPawn tracked as the user. Defaults to the local player pawn when unset.

Methods

FunctionDescription
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.