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 Asset—Optional 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 Asset—DataTable 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 Mesh—The 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.