Come usare il plugin
Questa guida ti accompagna attraverso il processo di configurazione di Runtime MetaHuman Lip Sync per i tuoi personaggi MetaHuman.
Nota: Runtime MetaHuman Lip Sync funziona sia con MetaHuman che con personaggi personalizzati. Il plugin supporta vari tipi di personaggi, inclusi:
- Personaggi commerciali popolari (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, ecc.)
- Personaggi con blendshapes basati su FACS
- Modelli che utilizzano gli standard di blendshape ARKit
- Personaggi con set di fonemi Preston Blair
- Sistemi di fonemi 3ds Max
- Qualsiasi personaggio con morph target personalizzati per le espressioni facciali
Per istruzioni dettagliate sulla configurazione di personaggi personalizzati, inclusi i riferimenti per il mapping dei visemi per tutti gli standard sopra elencati, consulta la Guida alla configurazione di personaggi personalizzati.
Prerequisiti
Prima di iniziare, assicurati che:
- Il plugin MetaHuman sia abilitato nel tuo progetto (Nota: a partire da UE 5.6, questo passaggio non è più necessario poiché la funzionalità MetaHuman è integrata direttamente nel motore)
- Hai almeno un personaggio MetaHuman scaricato e disponibile nel tuo progetto
- Il plugin Runtime MetaHuman Lip Sync sia installato
Plugin di estensione del modello standard
Se prevedi di utilizzare il Modello Standard (Più Veloce), dovrai installare il plugin di estensione:
- Scarica il plugin di estensione Standard Lip Sync da Google Drive
- Estrai la cartella dall'archivio scaricato nella cartella
Plugins
del tuo progetto (crea questa cartella se non esiste) - Assicurati che il tuo progetto sia configurato come un progetto C++ (anche se non hai alcun codice C++)
- Ricompila il tuo progetto
- Questa estensione è richiesta solo se vuoi utilizzare il Modello Standard. Se hai bisogno solo del Modello Realistico, puoi saltare questo passaggio.
- Per maggiori informazioni su come compilare manualmente i plugin, consulta il tutorial sulla compilazione dei plugin
Plugin aggiuntivi
- Se prevedi di utilizzare la cattura audio (ad esempio, input del microfono), installa il plugin Runtime Audio Importer.
- Se prevedi di utilizzare la funzionalità text-to-speech con i miei plugin (potresti avere un tuo TTS personalizzato o altri input audio), allora oltre al plugin Runtime Audio Importer, installa anche:
- Per TTS locale, il plugin Runtime Text To Speech.
- Per provider TTS esterni (ElevenLabs, OpenAI), il plugin Runtime AI Chatbot Integrator.
Processo di Configurazione
Passo 1: Individua e modifica la Blueprint per l'animazione del volto
- UE 5.5 e Precedenti (o MetaHumans Legacy in UE 5.6+)
- Personaggi di MetaHuman Creator UE 5.6+
Devi modificare una Blueprint di Animazione che verrà utilizzata per le animazioni facciali del tuo personaggio MetaHuman. La Blueprint di Animazione facciale predefinita per MetaHuman si trova in:
Content/MetaHumans/Common/Face/Face_AnimBP
Hai diverse opzioni per implementare la funzionalità di lip sync:
- Modifica l'Asset Predefinito (Opzione Più Semplice)
- Crea un Duplicato
- Usa un Animation Blueprint Personalizzato
Apri direttamente il Face_AnimBP
predefinito e apporta le tue modifiche. Qualsiasi cambiamento influenzerà tutti i personaggi MetaHuman che utilizzano questo Animation Blueprint.
Nota: Questo approccio è conveniente ma avrà impatto su tutti i personaggi che utilizzano l'Animation Blueprint predefinito.
- Duplica
Face_AnimBP
e dagli un nome descrittivo - Localizza la classe Blueprint del tuo personaggio (ad esempio, per il personaggio "Bryan", si troverebbe in
Content/MetaHumans/Bryan/BP_Bryan
) - Apri il Blueprint del personaggio e trova il componente Face
- Cambia la proprietà Anim Class con il tuo Animation Blueprint appena duplicato
Nota: Questo approccio ti permette di personalizzare il lip sync per personaggi specifici lasciando gli altri invariati.
Puoi implementare la fusione del lip sync in qualsiasi Animation Blueprint che abbia accesso alle ossa facciali richieste:
- Crea o utilizza un Animation Blueprint personalizzato esistente
- Assicurati che il tuo Animation Blueprint funzioni con uno scheletro che contenga le stesse ossa facciali dello
Face_Archetype_Skeleton
predefinito di MetaHuman (che è lo scheletro standard utilizzato per qualsiasi personaggio MetaHuman)
Nota: Questo approccio ti dà la massima flessibilità per l'integrazione con sistemi di animazione personalizzati.
A partire da UE 5.6, è stato introdotto il nuovo sistema MetaHuman Creator, che crea personaggi senza il tradizionale asset Face_AnimBP
. Per questi personaggi, il plugin fornisce un Animation Blueprint per il volto situato in:
Content/LipSyncData/LipSync_Face_AnimBP
Questa Animation Blueprint si trova nella cartella dei contenuti del plugin e verrà sovrascritta ad ogni aggiornamento del plugin. Per evitare di perdere le tue personalizzazioni, è altamente consigliato:
- Copiare questa risorsa nella cartella Content del tuo progetto (ad esempio in
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - Utilizzare la tua versione copiata nella configurazione del personaggio
- Apportare tutte le modifiche alla versione copiata
Questo assicura che le tue configurazioni di lip sync persisteranno attraverso gli aggiornamenti del plugin.
Utilizzo della Face Animation Blueprint del Plugin:
- Individua la classe Blueprint del tuo personaggio di MetaHuman Creator
- Apri la Blueprint del personaggio e trova il componente Face
- Cambia la proprietà Anim Class con la
LipSync_Face_AnimBP
del plugin - Prosegui con i Passi 2-4 per configurare la funzionalità Runtime MetaHuman Lip Sync
Opzioni Alternative:
- Utilizza Istruzioni Legacy: Puoi ancora seguire le istruzioni per UE 5.5 sopra se stai lavorando con MetaHumans legacy o preferisci il flusso di lavoro tradizionale
- Crea una Animation Blueprint Personalizzata: Crea la tua Animation Blueprint che funziona con la struttura scheletrica di MetaHuman Creator
Nota: Se stai usando UE 5.6+ ma lavori con MetaHumans legacy (non creati tramite MetaHuman Creator), utilizza invece le istruzioni della scheda "UE 5.5 e Precedenti".
Importante: La fusione del Runtime MetaHuman Lip Sync può essere implementata in qualsiasi risorsa Animation Blueprint che abbia accesso a una posa contenente le ossa facciali presenti nello Face_Archetype_Skeleton
predefinito del MetaHuman. Non sei limitato alle opzioni sopra - queste sono solo approcci di implementazione comuni.
Passo 2: Configurazione del Grafico degli Eventi
Apri la tua Face Animation Blueprint e passa al Grafico degli Eventi
. Dovrai creare un generatore che elaborerà i dati audio e genererà l'animazione di lip sync.
- Modello Standard (Più Veloce)
- Modello Realistico (Qualità Superiore)
- Aggiungi il nodo
Event Blueprint Begin Play
se non esiste già - Aggiungi il nodo
Create Runtime Viseme Generator
e collegalo all'evento Begin Play - Salva l'output come una variabile (es. "VisemeGenerator") per l'uso in altre parti del grafico
- Aggiungi il nodo
Event Blueprint Begin Play
se non esiste già - Aggiungi il nodo
Create Realistic MetaHuman Lip Sync Generator
e collegalo all'evento Begin Play - Salva l'output come una variabile (es. "RealisticLipSyncGenerator") per l'uso in altre parti del grafico
- (Opzionale) Configura le impostazioni del generatore usando il parametro Configuration
- (Opzionale) Imposta la Processing Chunk Size sull'oggetto Realistic MetaHuman Lip Sync Generator

Nota: Il Modello Realistico è ottimizzato specificamente per i personaggi MetaHuman e non è compatibile con tipi di personaggi personalizzati.
Opzioni di Configurazione
Il nodo Create Realistic MetaHuman Lip Sync Generator
accetta un parametro opzionale Configuration che ti permette di personalizzare il comportamento del generatore:
Tipo di Modello
L'impostazione Model Type determina quale versione del modello realistico utilizzare:
Tipo di Modello | Prestazioni | Qualità Visiva | Gestione del Rumore | Casi d'Uso Consigliati |
---|---|---|---|---|
Altamente Ottimizzato (Predefinito) | Prestazioni più elevate, utilizzo CPU più basso | Buona qualità | Può mostrare movimenti della bocca evidenti con rumore di fondo o suoni non vocali | Ambienti audio puliti, scenari critici per le prestazioni |
Ottimizzato | Buone prestazioni, utilizzo CPU moderato | Alta qualità | Maggiore stabilità con audio rumoroso | Prestazioni e qualità bilanciate, condizioni audio miste |
Originale Non Ottimizzato | Adatto per l'uso in tempo reale su CPU moderne | Qualità più elevata | Maggiore stabilità con rumore di fondo e suoni non vocali | Produzioni di alta qualità, ambienti audio rumorosi, quando è necessaria la massima precisione |
Impostazioni delle Prestazioni
Intra Op Threads: Controlla il numero di thread utilizzati per le operazioni di elaborazione interne del modello.
- 0 (Predefinito/Automatico): Utilizza il rilevamento automatico (tipicamente 1/4 dei core CPU disponibili, massimo 4)
- 1-16: Specifica manualmente il conteggio dei thread. Valori più alti possono migliorare le prestazioni su sistemi multi-core ma utilizzano più CPU
Inter Op Threads: Controlla il numero di thread utilizzati per l'esecuzione parallela di diverse operazioni del modello.
- 0 (Predefinito/Automatico): Utilizza il rilevamento automatico (tipicamente 1/8 dei core CPU disponibili, massimo 2)
- 1-8: Specifica manualmente il conteggio dei thread. Di solito mantenuto basso per l'elaborazione in tempo reale
Utilizzo della Configurazione
Per configurare il generatore:
- Nel nodo
Create Realistic MetaHuman Lip Sync Generator
, espandi il parametro Configuration - Imposta Model Type sull'opzione preferita:
- Utilizza Highly Optimized per le migliori prestazioni (consigliato per la maggior parte degli utenti)
- Utilizza Optimized per prestazioni e qualità bilanciate
- Utilizza Original Unoptimized solo quando la qualità massima è essenziale
- Regola Intra Op Threads e Inter Op Threads se necessario (lascia a 0 per il rilevamento automatico nella maggior parte dei casi) Raccomandazioni sulle Prestazioni:
- Per la maggior parte dei progetti con audio pulito, utilizza Altamente Ottimizzato per le migliori prestazioni
- Se stai lavorando con audio che contiene rumore di fondo, musica o suoni non vocali, considera l'uso dei modelli Ottimizzato o Originale Non Ottimizzato per una maggiore stabilità
- Il modello Altamente Ottimizzato potrebbe mostrare movimenti sottili della bocca durante l'elaborazione di audio non vocale a causa delle tecniche di ottimizzazione applicate durante la creazione del modello
- Il modello Originale Non Ottimizzato, sebbene richieda più risorse della CPU, è comunque adatto per applicazioni in tempo reale su hardware moderno e fornisce i risultati più accurati con condizioni audio difficili
- Modifica il conteggio dei thread solo se stai riscontrando problemi di prestazioni o hai requisiti specifici di ottimizzazione
- Conteggi di thread più elevati non sempre significano prestazioni migliori - i valori ottimali dipendono dal tuo hardware specifico e dai requisiti del progetto
Configurazione della Dimensione del Blocco di Elaborazione: La Dimensione del Blocco di Elaborazione determina quanti campioni vengono elaborati in ogni passo di inferenza. Il valore predefinito è 160 campioni, che corrisponde a 10ms di audio a 16kHz (la frequenza di campionamento interna di elaborazione). Puoi regolare questo valore per bilanciare tra frequenza di aggiornamento e utilizzo della CPU:
- Valori più piccoli forniscono aggiornamenti più frequenti ma aumentano l'utilizzo della CPU
- Valori più grandi riducono il carico della CPU ma possono diminuire la reattività del lip sync
Per impostare la Dimensione del Blocco di Elaborazione:
- Accedi al tuo oggetto
Realistic MetaHuman Lip Sync Generator
- Individua la proprietà
Processing Chunk Size
- Imposta il valore desiderato
Si consiglia di utilizzare valori che siano multipli di 160. Questo si allinea con la struttura interna di elaborazione del modello. I valori consigliati includono:
160
(predefinito, minimo consigliato)320
480
640
- ecc.
La Dimensione del Blocco di Elaborazione predefinita di 160
campioni corrisponde a 10ms di audio a 16kHz. L'uso di multipli di 160 mantiene l'allineamento con questa unità di base, il che può aiutare a ottimizzare l'efficienza di elaborazione e mantenere un comportamento coerente tra diverse dimensioni di blocco.
Per un funzionamento affidabile e coerente con il Modello Realistico, è necessario ricreare il Realistic MetaHuman Lip Sync Generator ogni volta che si desidera fornire nuovi dati audio dopo un periodo di inattività. Ciò è dovuto al comportamento del runtime ONNX che può causare l'arresto del lip sync quando si riutilizzano i generatori dopo periodi di silenzio.
Scenario di esempio: Se hai eseguito il lip sync TTS e poi hai interrotto, e successivamente vuoi eseguire nuovamente il lip sync con nuovo audio, crea un nuovo Realistic MetaHuman Lip Sync Generator invece di riutilizzare quello esistente.
Passo 3: Configura l'elaborazione dell'input audio
Devi configurare un metodo per elaborare l'input audio. Ci sono diversi modi per farlo a seconda della tua fonte audio.
- Microfono (Tempo reale)
- Microfono (Riproduzione)
- Text-to-Speech (Locale)
- Text-to-Speech (API Esterne)
- Da File/Buffer Audio
- Streaming Audio Buffer
Questo approccio esegue la sincronizzazione labiale in tempo reale mentre si parla nel microfono:
- Modello Standard (Più Veloce)
- Modello Realistico (Qualità Superiore)
- Crea un'Onda Sonora Catturabile utilizzando Runtime Audio Importer
- Prima di iniziare a catturare l'audio, collega il delegato
OnPopulateAudioData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator - Inizia a catturare l'audio dal microfono
Il Modello Realistico utilizza lo stesso flusso di lavoro di elaborazione audio del Modello Standard, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ciascuno degli esempi mostrati per il Modello Standard, sostituisci semplicemente:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Questo approccio cattura l'audio da un microfono, quindi lo riproduce con sincronizzazione labiale:
- Modello Standard (Più Veloce)
- Realistic (Higher Quality) Model
- Crea un'Onda Sonora Catturabile utilizzando Runtime Audio Importer
- Inizia la cattura audio dal microfono
- Prima di riprodurre l'onda sonora catturabile, collega il suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator
Il Modello Realistico utilizza lo stesso flusso di lavoro di elaborazione audio del Modello Standard, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ognuno degli esempi mostrati per il Modello Standard, è sufficiente sostituire:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Nota: Se desideri elaborare i dati audio in blocchi più piccoli per un lip sync più reattivo, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6,67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti del lip sync più frequenti.
- Regolare
- Streaming
Questo approccio sintetizza il parlato dal testo ed esegue il lip sync:
- Standard (Più Veloce) Model
- Realistic (Higher Quality) Model
- Usa Runtime Text To Speech per generare parlato dal testo
- Usa Runtime Audio Importer per importare l'audio sintetizzato
- Prima di riprodurre l'onda sonora importata, collegati al suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator
Il TTS locale fornito dal plugin Runtime Text To Speech non è attualmente supportato con il modello Realistico a causa di conflitti con il runtime ONNX. Per il text-to-speech con il modello Realistico, considera l'uso di servizi TTS esterni (come OpenAI o ElevenLabs tramite Runtime AI Chatbot Integrator) o utilizza invece il modello Standard.
Nota: Se desideri elaborare i dati audio in blocchi più piccoli per un lip sync più reattivo, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6,67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti del lip sync più frequenti.
Questo approccio utilizza la sintesi vocale in streaming con lip sync in tempo reale:
- Standard (Modello Più Veloce)
- Realistic (Modello di Qualità Superiore)
- Usa Runtime Text To Speech per generare discorso in streaming dal testo
- Usa Runtime Audio Importer per importare l'audio sintetizzato
- Prima di riprodurre l'onda sonora in streaming, collegati al suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator
Il TTS locale fornito dal plugin Runtime Text To Speech non è attualmente supportato con il modello Realistic a causa di conflitti con il runtime ONNX. Per il text-to-speech con il modello Realistic, considera di utilizzare servizi TTS esterni (come OpenAI o ElevenLabs tramite Runtime AI Chatbot Integrator) oppure utilizza il modello Standard.
Nota: Se vuoi processare i dati audio in blocchi più piccoli per un lip sync più reattivo, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6.67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti del lip sync più frequenti.
- Regolare
- Streaming
Questo approccio utilizza il plugin Runtime AI Chatbot Integrator per generare discorso sintetizzato da servizi AI (OpenAI o ElevenLabs) ed eseguire il lip sync:
- Standard (Modello Più Veloce)
- Realistic (Higher Quality) Model
- Usa Runtime AI Chatbot Integrator per generare discorso dal testo utilizzando API esterne (OpenAI, ElevenLabs, ecc.)
- Usa Runtime Audio Importer per importare i dati audio sintetizzati
- Prima di riprodurre l'onda sonora importata, collegati al suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator

Il Modello Realistico utilizza lo stesso flusso di lavoro di elaborazione audio del Modello Standard, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ciascuno degli esempi mostrati per il Modello Standard, sostituisci semplicemente:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Nota: Se desideri elaborare i dati audio in blocchi più piccoli per un lip sync più reattivo, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6.67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti del lip sync più frequenti.
Questo approccio utilizza il plugin Runtime AI Chatbot Integrator per generare sintesi vocale in streaming da servizi AI (OpenAI o ElevenLabs) ed eseguire il lip sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime AI Chatbot Integrator per connetterti alle API TTS in streaming (come ElevenLabs Streaming API)
- Usa Runtime Audio Importer per importare i dati audio sintetizzati
- Prima di riprodurre l'onda sonora in streaming, collegati al suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator
Il Modello Realistico utilizza lo stesso flusso di lavoro di elaborazione audio del Modello Standard, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ciascuno degli esempi mostrati per il Modello Standard, sostituisci semplicemente:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Nota: Se desideri elaborare i dati audio in blocchi più piccoli per una sincronizzazione labiale più reattiva, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6,67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti della sincronizzazione labiale più frequenti.
Questo approccio utilizza file audio preregistrati o buffer audio per la sincronizzazione labiale:
- Modello Standard (Più Veloce)
- Modello Realistico (Qualità Superiore)
- Usa Runtime Audio Importer per importare un file audio dal disco o dalla memoria
- Prima di riprodurre l'onda sonora importata, collegati al suo delegato
OnGeneratePCMData
- Nella funzione collegata, chiama
ProcessAudioData
dal tuo Runtime Viseme Generator - Riproduci l'onda sonora importata e osserva l'animazione della sincronizzazione labiale
Il Modello Realistico utilizza lo stesso flusso di lavoro di elaborazione audio del Modello Standard, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ciascuno degli esempi mostrati per il Modello Standard, sostituisci semplicemente:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Nota: Se desideri elaborare i dati audio in blocchi più piccoli per una sincronizzazione labiale più reattiva, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividere la frequenza di campionamento per 150 (streaming ogni ~6,67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti della sincronizzazione labiale più frequenti.
Per trasmettere in streaming dati audio da un buffer, hai bisogno di:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Dati audio in formato PCM float (un array di campioni in virgola mobile) disponibili dalla tua sorgente di streaming
- La frequenza di campionamento e il numero di canali
- Chiama
ProcessAudioData
dal tuo Runtime Viseme Generator con questi parametri man mano che i chunk audio diventano disponibili
Ecco un esempio di elaborazione della sincronizzazione labiale da dati audio in streaming:
Nota: Quando si utilizzano sorgenti audio in streaming, assicurati di gestire correttamente i tempi di riproduzione audio per evitare una riproduzione distorta. Consulta la documentazione Streaming Sound Wave per maggiori informazioni sulla corretta gestione dell'audio in streaming.
Il Realistic Model utilizza lo stesso flusso di lavoro di elaborazione audio dello Standard Model, ma con la variabile RealisticLipSyncGenerator
invece di VisemeGenerator
.
In ciascuno degli esempi mostrati per lo Standard Model, sostituisci semplicemente:
VisemeGenerator
con la tua variabileRealisticLipSyncGenerator
- I nomi delle funzioni e i parametri rimangono identici tra entrambi i modelli
Nota: Quando si utilizzano sorgenti audio in streaming, assicurati di gestire correttamente i tempi di riproduzione audio per evitare una riproduzione distorta. Consulta la documentazione Streaming Sound Wave per maggiori informazioni sulla corretta gestione dell'audio in streaming.
Nota: Se desideri elaborare i dati audio in chunk più piccoli per una sincronizzazione labiale più reattiva, modifica il calcolo nella funzione SetNumSamplesPerChunk
. Ad esempio, dividendo la frequenza di campionamento per 150 (streaming ogni ~6,67 ms) invece di 100 (streaming ogni 10 ms) fornirà aggiornamenti della sincronizzazione labiale più frequenti.
Step 4: Configurazione Anim Graph
Dopo aver configurato l'Event Graph, passa all'Anim Graph
per collegare il generatore all'animazione del personaggio:
Lip Sync
- Modello Standard (Più Veloce)
- Modello Realistico (Qualità Superiore)
- Individua la posa che contiene il volto MetaHuman (tipicamente da
Use cached pose 'Body Pose'
) - Aggiungi il nodo
Blend Runtime MetaHuman Lip Sync
- Collega la posa al pin
Source Pose
del nodoBlend Runtime MetaHuman Lip Sync
- Collega la tua variabile
RuntimeVisemeGenerator
al pinViseme Generator
- Collega l'output del nodo
Blend Runtime MetaHuman Lip Sync
al pinResult
dell'Output Pose
Quando viene rilevato lip sync nell'audio, il tuo personaggio si animerà dinamicamente di conseguenza:
- Individua la posa che contiene il volto MetaHuman (tipicamente da
Use cached pose 'Body Pose'
) - Aggiungi il nodo
Blend Realistic MetaHuman Lip Sync
- Collega la posa al pin
Source Pose
del nodoBlend Realistic MetaHuman Lip Sync
- Collega la tua variabile
RealisticLipSyncGenerator
al pinLip Sync Generator
- Collega l'output del nodo
Blend Realistic MetaHuman Lip Sync
al pinResult
dell'Output Pose
Il Modello Realistico offre una qualità visiva migliorata con movimenti della bocca più naturali:
Nota: Il Modello Realistico è progettato esclusivamente per personaggi MetaHuman e non è compatibile con tipi di personaggi personalizzati.
Animazione della Risata
Puoi anche aggiungere animazioni della risata che risponderanno dinamicamente alla risata rilevata nell'audio:
- Aggiungi il nodo
Blend Runtime MetaHuman Laughter
- Collega la tua variabile
RuntimeVisemeGenerator
al pinViseme Generator
- Se stai già utilizzando il lip sync:
- Collega l'output dal nodo
Blend Runtime MetaHuman Lip Sync
al pinSource Pose
del nodoBlend Runtime MetaHuman Laughter
- Collega l'output del nodo
Blend Runtime MetaHuman Laughter
al pinResult
dell'Output Pose
- Collega l'output dal nodo
- Se utilizzi solo la risata senza lip sync:
- Collega la tua posa sorgente direttamente al pin
Source Pose
del nodoBlend Runtime MetaHuman Laughter
- Collega l'output al pin
Result
- Collega la tua posa sorgente direttamente al pin
Quando viene rilevata la risata nell'audio, il tuo personaggio si animerà dinamicamente di conseguenza:
Combinazione con Animazioni Facciali e Corporee
Per applicare la sincronizzazione labiale e le risate insieme alle animazioni del corpo esistenti e alle animazioni facciali personalizzate (come espressioni, emozioni o qualsiasi altro movimento facciale) senza sovrascriverle:
- Aggiungi un nodo
Layered blend per bone
tra le tue animazioni del corpo e l'output finale. Assicurati cheUse Attached Parent
sia impostato su true. - Configura l'impostazione dei layer:
- Aggiungi 1 elemento all'array
Layer Setup
- Aggiungi 3 elementi ai
Branch Filters
per il layer, con i seguentiBone Name
:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Aggiungi 1 elemento all'array
- Importante per le animazioni facciali personalizzate: In
Curve Blend Option
, seleziona "Use Max Value". Questo permette alle animazioni facciali personalizzate (espressioni, emozioni, ecc.) di essere stratificate correttamente sopra la sincronizzazione labiale. - Effettua le connessioni:
- Animazioni esistenti (come
BodyPose
) → inputBase Pose
- Output dell'animazione facciale (dai nodi di sincronizzazione labiale e/o risate) → input
Blend Poses 0
- Nodo di layered blend → posa
Result
finale
- Animazioni esistenti (come
Perché funziona: I filtri di branch isolano le ossa dell'animazione facciale, permettendo alla sincronizzazione labiale e alle risate di fondersi esclusivamente con i movimenti facciali preservando le animazioni originali del corpo. L'opzione di fusione curve "Use Max Value" prende il valore massimo da ogni curva invece di combinarle in modo additivo, permettendo alle animazioni facciali personalizzate (come espressioni ed emozioni) di essere combinate correttamente con la sincronizzazione labiale senza conflitti. Questo corrisponde alla struttura del rig facciale MetaHuman per un'integrazione naturale.
Nota: Le funzionalità di sincronizzazione labiale e risate sono progettate per funzionare in modo non distruttivo con la tua configurazione di animazione esistente. Influenzano solo le specifiche ossa facciali necessarie per il movimento della bocca, lasciando intatte le altre animazioni facciali. Questo significa che puoi integrarle in sicurezza in qualsiasi punto della tua catena di animazione - sia prima di altre animazioni facciali (permettendo a quelle animazioni di sovrascrivere la sincronizzazione labiale/risate) che dopo di esse (lasciando che la sincronizzazione labiale/risate si fonda sopra le tue animazioni esistenti). Questa flessibilità ti permette di combinare la sincronizzazione labiale e le risate con ammiccamenti, movimenti delle sopracciglia, espressioni emotive e altre animazioni facciali senza conflitti.
Ottimizzazione del Comportamento della Sincronizzazione Labiale
Dopo aver configurato la funzionalità base della sincronizzazione labiale, potresti voler ottimizzare aspetti specifici del movimento della bocca per adattarli meglio ai requisiti del tuo progetto.
Controllo della Protrusione della Lingua
Nel modello standard di sincronizzazione labiale, potresti notare un eccessivo movimento in avanti della lingua durante certi fonemi. Per controllare la protrusione della lingua:
- Dopo il nodo
Blend Runtime MetaHuman Lip Sync
oBlend Realistic MetaHuman Lip Sync
, aggiungi un nodoModify Curve
- Fai clic con il tasto destro sul nodo
Modify Curve
e seleziona Aggiungi Pin Curva - Aggiungi un pin curva con il nome
CTRL_expressions_tongueOut
- Imposta la proprietà Modalità Applicazione del nodo su Scala
- Regola il parametro Valore per controllare l'estensione della lingua (ad esempio, 0.8 per ridurre la protrusione del 20%)
Controllo Apertura Mascella
La sincronizzazione labiale realistica può produrre movimenti della mascella eccessivamente reattivi a seconda del contenuto audio e delle esigenze visive. Per regolare l'intensità dell'apertura della mascella:
- Dopo il nodo di blend della sincronizzazione labiale, aggiungi un nodo
Modify Curve
- Fai clic con il tasto destro sul nodo
Modify Curve
e seleziona Aggiungi Pin Curva - Aggiungi un pin curva con il nome
CTRL_expressions_jawOpen
- Imposta la proprietà Modalità Applicazione del nodo su Scala
- Regola il parametro Valore per controllare l'ampiezza dell'apertura della mascella (ad esempio, 0.9 per ridurre il movimento della mascella del 10%)
Configurazione
Configurazione Sincronizzazione Labiale
- Modello Standard (Più Veloce)
- Modello Realistico (Qualità Superiore)
Il nodo Blend Runtime MetaHuman Lip Sync
ha opzioni di configurazione nel suo pannello delle proprietà:
Proprietà | Predefinito | Descrizione |
---|---|---|
Velocità Interpolazione | 25 | Controlla la rapidità con cui i movimenti labiali transitano tra i visemi. Valori più alti risultano in transizioni più veloci e brusche. |
Tempo Reset | 0.2 | La durata in secondi dopo la quale la sincronizzazione labiale viene resettata. Utile per evitare che la sincronizzazione labiale continui dopo che l'audio si è fermato. |
Il nodo Blend Realistic MetaHuman Lip Sync
ha opzioni di configurazione nel suo pannello delle proprietà:
Proprietà | Predefinito | Descrizione |
---|---|---|
Velocità Interpolazione | 30 | Controlla la rapidità con cui i movimenti labiali transitano tra le posizioni. Valori più alti risultano in transizioni più veloci e brusche. |
Tempo Reset | 0.2 | La durata in secondi dopo la quale la sincronizzazione labiale viene resettata. Utile per evitare che la sincronizzazione labiale continui dopo che l'audio si è fermato. |
Configurazione Riso
Il nodo Blend Runtime MetaHuman Laughter
ha le sue opzioni di configurazione:
Proprietà | Predefinito | Descrizione |
---|---|---|
Velocità Interpolazione | 25 | Controlla la rapidità con cui i movimenti labiali transitano tra le animazioni di risata. Valori più alti risultano in transizioni più veloci e brusche. |
Tempo Reset | 0.2 | La durata in secondi dopo la quale la risata viene resettata. Utile per evitare che la risata continui dopo che l'audio si è fermato. |
Peso Massimo Riso | 0.7 | Scala l'intensità massima dell'animazione di risata (0.0 - 1.0). |
Scelta tra Modelli di Sincronizzazione Labiale
Quando decidi quale modello di sincronizzazione labiale utilizzare per il tuo progetto, considera questi fattori:
Considerazione | Modello Standard | Modello Realistico |
---|---|---|
Compatibilità con i Personaggi | MetaHumans e tutti i tipi di personaggi personalizzati | Solo MetaHumans |
Qualità Visiva | Buona sincronizzazione labiale con prestazioni efficienti | Realismo potenziato con movimenti della bocca più naturali |
Prestazioni | Ottimizzato per tutte le piattaforme inclusi mobile/VR | Requisiti di risorse leggermente superiori |
Casi d'Uso | Applicazioni generali, giochi, VR/AR, mobile | Esperienze cinematografiche, interazioni ravvicinate con i personaggi |
Compatibilità con la Versione del Motore
Se stai utilizzando Unreal Engine 5.2, il Modello Realistico potrebbe non funzionare correttamente a causa di un bug nella libreria di ricampionamento di UE. Per gli utenti di UE 5.2 che necessitano di una funzionalità di sincronizzazione labiale affidabile, si prega di utilizzare il Modello Standard invece.
Questo problema è specifico per UE 5.2 e non influisce su altre versioni del motore.
Per la maggior parte dei progetti, il Modello Standard offre un eccellente equilibrio tra qualità e prestazioni supportando la più ampia gamma di tipi di personaggi. Il Modello Realistico è ideale quando si necessita della massima fedeltà visiva specificamente per personaggi MetaHuman in contesti dove l'overhead prestazionale è meno critico.