AVATARDIRECTOR
AvatarDirector — Real-time avatar control
Unreal Engine 5.7 plugin · MetaHuman ready

Real-time avatar control.
Seamless performance.

Drive a MetaHuman from any backend over a single TCP socket. PCM audio in, lip-sync, emotion, and full-body gestures out — sequenced through one deterministic state machine.

48 kHz
PCM in
8 × 22
emotions × micro
~100 ms
lookahead
port 4500
single TCP
AvatarDirector MetaHuman portrait
Connected · 4500
PCM stream · 48 kHz
Active emotion
Joy · 0.78
What it does

Backend speaks. Avatar performs.

Six guarantees the plugin makes — so your backend stays simple and your avatar stays in character.

01
Single TCP socket
One connection on port 4500 carries both binary PCM frames and JSON command frames. No additional ports, no WebSockets.
02
On-device ML lip-sync
Bundled ONNX runtime drives MetaHuman face animation directly from PCM. No external service, no per-phoneme tagging.
03
8 emotions × 22 microexpressions
Layered facial expression system blends primary emotions with subtle eye, brow, and mouth modulation.
04
Body gesture library
Named, sequenceable montages — greet, affirm, deny, point, shrug. Drive from JSON, blend with talking-head animation.
05
Non-intrusive integration
No modification to the MetaHuman face animation Blueprint. Drop the plugin in, expose the socket, ship.
06
Game-thread safe
All dispatches marshaled onto the game thread. Authors write integrations without reasoning about UE threading rules.
How it works

One socket. Two frame types.
Zero engine code.

Stream audio in. Stream commands in. The avatar performs in real time — no Blueprint plumbing, no rebuilds, no per-character integration work.

TCP · PORT 4500
~30ms
p50 voice → mouth
Your backend
TYPE 0 · AUDIO
2880 B
48 kHz · 16-bit · mono · 30 ms chunk
TYPE 1 · JSON
92 B
{ "type": "emotion",
  "name": "joy",
  "intensity": 0.78 }
AvatarDirector plugin
STAGE 1 · DECODE HEADER
5-byte read · type + LE length
STAGE 2 · ROUTE
Lip-sync
Animator
STAGE 3 · DISPATCH @ 30 FPS
MetaHuman avatar
LIVE · 30 fps
VISEME
EMOTION
01 Audio + commands
Your backend speaks TCP. Send PCM and JSON over a single socket — no SDK lock-in.
02 Decode → route → blend
The plugin parses, dispatches to lip-sync or animator on the game thread, and blends safely.
03 MetaHuman performs
Face + body update at 30 FPS, in-engine. Drop-in for Unreal projects, no Blueprint edits.
UE 5.3+
Tested on 5.3 / 5.4 / 5.5
MetaHuman
Face + body, all rigs
Cross-platform
Win · Mac · Linux client
Fab Marketplace
Commercial license · soon
Expression system

8 emotions × 22 microexpressions.

Set primary emotion blends with intensity 0–1. Layer microexpressions on top — eye narrowing, lip tightening, brow raise, blink rate. The state machine handles cross-fades and recovery.

Active blend
Joy · 0.78
Cross-fade 240ms
Neutral
0.42
Joy
0.78
Sadness
0.10
Anger
0.05
Fear
0.18
Surprise
0.55
Disgust
0.02
Trust
0.66
Microexpressions · 22 channels
Body gestures

Full-body montages, not just talking heads.

Trigger named gestures by string. Sequence them, blend with talking-head animation, and override gaze targets mid-performance.

cmd_gesture.json · Type 1
{
  "type"    : "gesture",
  "name"    : "greet",
  "blend"   : 0.85,
  "gaze"    : "camera",
  "queue"   : true
}