Wie man das Plugin verwendet
Diese Anleitung führt Sie durch den Prozess der Einrichtung von Runtime MetaHuman Lip Sync für Ihre MetaHuman-Charaktere.
Hinweis: Runtime MetaHuman Lip Sync funktioniert sowohl mit MetaHuman- als auch mit benutzerdefinierten Charakteren. Das Plugin unterstützt verschiedene Charaktertypen, darunter:
- Beliebte kommerzielle Charaktere (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, etc.)
- Charaktere mit FACS-basierten Blendshapes
- Modelle, die ARKit-Blendshape-Standards verwenden
- Charaktere mit Preston Blair-Phonemsätzen
- 3ds Max-Phonemsysteme
- Jeder Charakter mit benutzerdefinierten Morph Targets für Gesichtsausdrücke
Detaillierte Anleitungen zur Einrichtung benutzerdefinierter Charaktere, einschließlich Viseme-Mapping-Referenzen für alle oben genannten Standards, finden Sie im Benutzerdefinierter Charakter-Setup-Leitfaden.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher:
- Das MetaHuman-Plugin ist in Ihrem Projekt aktiviert
- Sie haben mindestens einen MetaHuman-Charakter heruntergeladen und in Ihrem Projekt verfügbar
- Das Runtime MetaHuman Lip Sync-Plugin ist installiert
Zusätzliche Plugins:
- Wenn Sie Audioaufnahme (z.B. Mikrofoneingang) verwenden möchten, installieren Sie das Runtime Audio Importer-Plugin.
- Wenn Sie Text-zu-Sprache-Funktionalität verwenden möchten, installieren Sie das Runtime Text To Speech-Plugin.
Plattformspezifische Konfiguration
Android / Meta Quest Konfiguration
Wenn Sie Android- oder Meta Quest-Plattformen anvisieren und Build-Fehler mit diesem Plugin erhalten, müssen Sie die x86_64 (x64)-Android-Architektur in Ihren Projekteinstellungen deaktivieren:
- Gehen Sie zu Bearbeiten > Projekteinstellungen
- Navigieren Sie zu Plattformen > Android
- Unter Plattformen - Android, Build-Abschnitt, finden Sie Support x86_64 [aka x64] und stellen Sie sicher, dass es deaktiviert ist, wie unten gezeigt
Dies liegt daran, dass das Plugin derzeit nur arm64-v8a- und armeabi-v7a-Architekturen für Android- / Meta Quest-Plattformen unterstützt.
Einrichtungsprozess
Schritt 1: Suchen und modifizieren Sie das Face Animation Blueprint
Sie müssen ein Animation Blueprint modifizieren, das für die Gesichtsanimationen Ihres MetaHuman-Charakters verwendet wird. Das standardmäßige MetaHuman Face Animation Blueprint befindet sich unter:
Content/MetaHumans/Common/Face/Face_AnimBP
Sie haben mehrere Möglichkeiten, die Lip-Sync-Funktionalität zu implementieren:
- Standard-Asset direkt bearbeiten (einfachste Option)
- Duplikat erstellen
- Benutzerdefiniertes Animation Blueprint verwenden
Öffnen Sie die standardmäßige Face_AnimBP
direkt und nehmen Sie Ihre Änderungen vor. Alle Änderungen wirken sich auf alle MetaHuman-Charaktere aus, die dieses Animation Blueprint verwenden.
Hinweis: Dieser Ansatz ist bequem, betrifft jedoch alle Charaktere, die das Standard-Animation Blueprint verwenden.
- Duplizieren Sie
Face_AnimBP
und geben Sie ihm einen beschreibenden Namen - Suchen Sie die Blueprint-Klasse Ihres Charakters (z.B. für den Charakter "Bryan" unter
Content/MetaHumans/Bryan/BP_Bryan
) - Öffnen Sie die Charakter-Blueprint und finden Sie die Face-Komponente
- Ändern Sie die Anim Class-Eigenschaft auf Ihr neu dupliziertes Animation Blueprint
Hinweis: Dieser Ansatz ermöglicht es Ihnen, den Lip Sync für bestimmte Charaktere anzupassen, während andere unverändert bleiben.
Sie können die Lip-Sync-Blending in jedem Animation Blueprint implementieren, das Zugriff auf die erforderlichen Gesichtsknochen hat:
- Erstellen Sie oder verwenden Sie ein bestehendes benutzerdefiniertes Animation Blueprint
- Stellen Sie sicher, dass Ihr Animation Blueprint mit einem Skelett arbeitet, das die gleichen Gesichtsknochen wie das standardmäßige MetaHuman-
Face_Archetype_Skeleton
enthält (das Standardskelett für jeden MetaHuman-Charakter)
Hinweis: Dieser Ansatz bietet maximale Flexibilität für die Integration mit benutzerdefinierten Animationssystemen.
Wichtig: Das Runtime MetaHuman Lip Sync-Blending kann in jedem Animation Blueprint-Asset implementiert werden, das Zugriff auf eine Pose mit den Gesichtsknochen des standardmäßigen MetaHuman-Face_Archetype_Skeleton
hat. Sie sind nicht auf die oben genannten Optionen beschränkt - dies sind nur gängige Implementierungsansätze.
Schritt 2: Event Graph einrichten
Öffnen Sie Ihr Face Animation Blueprint und wechseln Sie zum Event Graph
. Sie müssen einen Runtime Viseme Generator erstellen, der Audiodaten verarbeitet und Viseme generiert.
- Fügen Sie den
Event Blueprint Begin Play
-Knoten hinzu, falls er noch nicht existiert - Fügen Sie den
Create Runtime Viseme Generator
-Knoten hinzu und verbinden Sie ihn mit dem Begin Play-Event - Speichern Sie die Ausgabe als Variable (z.B. "VisemeGenerator") für die Verwendung in anderen Teilen des Graphs
Schritt 3: Audio-Eingabeverarbeitung einrichten
Sie müssen eine Methode zur Verarbeitung der Audioeingabe einrichten. Es gibt mehrere Möglichkeiten, abhängig von Ihrer Audioquelle.
- Mikrofon (Echtzeit)
- Mikrofon (Wiedergabe)
- Text-to-Speech (Lokal)
- Text-to-Speech (Externe APIs)
- Von Audio-Datei/Puffer
- Benutzerdefinierte Audioquelle
Dieser Ansatz führt den Lip Sync in Echtzeit durch, während in das Mikrofon gesprochen wird:
- Erstellen Sie eine Capturable Sound Wave mit Runtime Audio Importer
- Binden Sie sich vor dem Start der Audioaufnahme an das
OnPopulateAudioData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf - Starten Sie die Audioaufnahme vom Mikrofon
Dieser Ansatz nimmt Audio vom Mikrofon auf und spielt es dann mit Lip Sync ab:
- Erstellen Sie eine Capturable Sound Wave mit Runtime Audio Importer
- Starten Sie die Audioaufnahme vom Mikrofon
- Binden Sie sich vor der Wiedergabe der aufgenommenen Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
- Regulär
- Streaming
Dieser Ansatz synthetisiert Sprache aus Text und führt Lip Sync durch:
- Verwenden Sie Runtime Text To Speech zur Sprachsynthese aus Text
- Verwenden Sie Runtime Audio Importer zum Import der synthetisierten Audio
- Binden Sie sich vor der Wiedergabe der importierten Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Dieser Ansatz verwendet Streaming-Text-to-Speech-Synthese mit Echtzeit-Lip-Sync:
- Verwenden Sie Runtime Text To Speech zur Streaming-Sprachsynthese aus Text
- Verwenden Sie Runtime Audio Importer zum Import der synthetisierten Audio
- Binden Sie sich vor der Wiedergabe der Streaming-Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
- Regulär
- Streaming
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator-Plugin zur Sprachsynthese aus AI-Diensten und führt Lip Sync durch:
- Verwenden Sie Runtime AI Chatbot Integrator zur Sprachsynthese aus Text mit externen APIs (OpenAI, ElevenLabs, etc.)
- Verwenden Sie Runtime Audio Importer zum Import der synthetisierten Audiodaten
- Binden Sie sich vor der Wiedergabe der importierten Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Dieser Ansatz verwendet das Runtime AI Chatbot Integrator-Plugin zur Streaming-Sprachsynthese aus AI-Diensten und führt Lip Sync durch:
- Verwenden Sie Runtime AI Chatbot Integrator zur Verbindung mit Streaming-TTS-APIs (wie ElevenLabs Streaming API)
- Verwenden Sie Runtime Audio Importer zum Import der synthetisierten Audiodaten
- Binden Sie sich vor der Wiedergabe der Streaming-Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf
Dieser Ansatz verwendet voraufgenommene Audio-Dateien oder Audio-Puffer für Lip Sync:
- Verwenden Sie Runtime Audio Importer zum Import einer Audio-Datei von der Festplatte oder aus dem Speicher
- Binden Sie sich vor der Wiedergabe der importierten Sound Wave an ihr
OnGeneratePCMData
-Delegate - Rufen Sie in der gebundenen Funktion
ProcessAudioData
von Ihrem Runtime Viseme Generator auf - Spielen Sie die importierte Sound Wave ab und beobachten Sie die Lip-Sync-Animation
Für eine benutzerdefinierte Audioquelle benötigen Sie:
- Audiodaten im Float-PCM-Format (ein Array von Fließkomma-Samples)
- Die Abtastrate und Anzahl der Kanäle
- Rufen Sie
ProcessAudioData
von Ihrem Runtime Viseme Generator mit diesen Parametern auf
Hier ist ein Beispiel für Streaming-Audio von einer benutzerdefinierten Quelle:
Schritt 4: Anim Graph einrichten
Nachdem Sie das Event Graph eingerichtet haben, wechseln Sie zum Anim Graph
, um den Viseme-Generator mit der Animation des Charakters zu verbinden:
Lip Sync
- Suchen Sie die Pose, die das MetaHuman-Gesicht enthält (typischerweise von
Use cached pose 'Body Pose'
) - Fügen Sie den
Blend Runtime MetaHuman Lip Sync
-Knoten hinzu - Verbinden Sie die Pose mit dem
Source Pose
desBlend Runtime MetaHuman Lip Sync
-Knotens - Verbinden Sie Ihre
RuntimeVisemeGenerator
-Variable mit demViseme Generator
-Pin - Verbinden Sie die Ausgabe des
Blend Runtime MetaHuman Lip Sync
-Knotens mit demResult
-Pin desOutput Pose
-Knotens
Wenn Lip Sync im Audio erkannt wird, animiert sich Ihr Charakter dynamisch entsprechend:
Laughter Animation
Sie können auch Lachen-Animationen hinzufügen, die dynamisch auf im Audio erkanntes Lachen reagieren:
- Fügen Sie den
Blend Runtime MetaHuman Laughter
-Knoten hinzu - Verbinden Sie Ihre
RuntimeVisemeGenerator
-Variable mit demViseme Generator
-Pin - Wenn Sie bereits Lip Sync verwenden:
- Verbinden Sie die Ausgabe des
Blend Runtime MetaHuman Lip Sync
-Knotens mit demSource Pose
desBlend Runtime MetaHuman Laughter
-Knotens - Verbinden Sie die Ausgabe des
Blend Runtime MetaHuman Laughter
-Knotens mit demResult
-Pin desOutput Pose
-Knotens
- Verbinden Sie die Ausgabe des
- Wenn Sie nur Lachen ohne Lip Sync verwenden:
- Verbinden Sie Ihre Quellpose direkt mit dem
Source Pose
desBlend Runtime MetaHuman Laughter
-Knotens - Verbinden Sie die Ausgabe mit dem
Result
-Pin
- Verbinden Sie Ihre Quellpose direkt mit dem
Wenn Lachen im Audio erkannt wird, animiert sich Ihr Charakter dynamisch entsprechend:
Kombination mit Körperanimationen
Um Lip Sync und Lachen neben bestehenden Körperanimationen anzuwenden, ohne sie zu überschreiben:
- Fügen Sie einen
Layered blend per bone
-Knoten zwischen Ihren Körperanimationen und der finalen Ausgabe hinzu. Stellen Sie sicher, dassUse Attached Parent
aktiviert ist. - Konfigurieren Sie das Layer-Setup:
- Fügen Sie 1 Item zum
Layer Setup
-Array hinzu - Fügen Sie 3 Items zu den
Branch Filters
für die Layer hinzu, mit folgendenBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Fügen Sie 1 Item zum
- Stellen Sie die Verbindungen her:
- Bestehende Animationen (wie
BodyPose
) →Base Pose
-Eingang - Gesichtsanimation-Ausgabe (von Lip-Sync- und/oder Laughter-Knoten) →
Blend Poses 0
-Eingang - Layered blend-Knoten → Finale
Result
-Pose
- Bestehende Animationen (wie
Warum das funktioniert: Die Branch-Filter isolieren die Gesichtsanimation-Knochen, sodass Lip Sync und Lachen ausschließlich mit Gesichtsbewegungen geblendet werden, während die ursprünglichen Körperanimationen erhalten bleiben. Dies entspricht der MetaHuman-Gesichtsrig-Struktur und gewährleistet eine natürliche Integration.
Hinweis: Die Lip-Sync- und Laughter-Funktionen sind so konzipiert, dass sie nicht-destruktiv mit Ihrem bestehenden Animations-Setup arbeiten. Sie beeinflussen nur die spezifischen Gesichtsknochen, die für Mundbewegungen benötigt werden, und lassen