Files
virtual-banker/avatar/unreal/README.md

2.5 KiB

Unreal Engine Avatar Setup

This directory contains the Unreal Engine project for the Virtual Banker avatar.

Prerequisites

  • Unreal Engine 5.3+ (or 5.4+ recommended)
  • PixelStreaming plugin enabled
  • Digital human character asset (Ready Player Me, MetaHuman, or custom)

Setup Instructions

1. Create Unreal Project

  1. Open Unreal Engine Editor
  2. Create new project:
    • Template: Blank
    • Blueprint or C++: Blueprint (or C++ if custom code needed)
    • Target Platform: Desktop
    • Quality: Maximum
    • Raytracing: Enabled (optional, for better quality)

2. Enable PixelStreaming

  1. Edit → Plugins
  2. Search for "Pixel Streaming"
  3. Enable the plugin
  4. Restart Unreal Editor

3. Import Digital Human

  1. Import your digital human character:

    • Ready Player Me: Use their Unreal plugin
    • MetaHuman: Use MetaHuman Creator
    • Custom: Import FBX/glTF with blendshapes
  2. Set up blendshapes for visemes:

    • Import viseme blendshapes (aa, ee, oh, ou, mbp, etc.)
    • Map to animation system

4. Configure PixelStreaming

  1. Edit → Project Settings → Plugins → Pixel Streaming
  2. Configure:
    • Streamer Port: 8888
    • WebRTC Port Range: 8888-8897
    • Enable WebRTC

5. Set Up Animation Blueprint

  1. Create Animation Blueprint for avatar

  2. Set up state machine:

    • Idle
    • Speaking (viseme-driven)
    • Gesturing
    • Expressions
  3. Connect viseme blendshapes to animation graph

6. Create Control Blueprint

  1. Create Blueprint Actor for avatar control
  2. Add functions:
    • SetVisemes(VisemeData)
    • SetExpression(Valence, Arousal)
    • SetGesture(GestureType)
    • SetGaze(Target)

7. Build and Package

  1. Package project for Linux (for server deployment):
    • File → Package Project → Linux
    • Or use command line:
      UnrealEditor-Cmd.exe -run=UnrealVersionSelector -project="path/to/project.uproject" -game -cook -package -build
      

Deployment

The packaged Unreal project should be deployed to a GPU-enabled server with:

  • NVIDIA GPU (RTX 3090+ recommended)
  • CUDA drivers
  • Sufficient VRAM (8GB+ per instance)

Integration

The renderer service (avatar/renderer/service.go) controls Unreal instances via:

  • Process management (start/stop instances)
  • WebSocket communication (animation parameters)
  • PixelStreaming WebRTC streams

Notes

  • Each active session requires one Unreal instance
  • GPU resources should be allocated per instance
  • Consider using Unreal's multi-instance support for scaling