Passa al contenuto principale

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:

  1. 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)
  2. Hai almeno un personaggio MetaHuman scaricato e disponibile nel tuo progetto
  3. 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:

  1. Scarica il plugin di estensione Standard Lip Sync da Google Drive
  2. Estrai la cartella dall'archivio scaricato nella cartella Plugins del tuo progetto (crea questa cartella se non esiste)
  3. Assicurati che il tuo progetto sia configurato come un progetto C++ (anche se non hai alcun codice C++)
  4. Ricompila il tuo progetto
note
  • 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

Processo di Configurazione

Passo 1: Individua e modifica la Blueprint per l'animazione del volto

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

Blueprint per l'Animazione del Volto

Hai diverse opzioni per implementare la funzionalità di lip sync:

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.

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.

  1. Aggiungi il nodo Event Blueprint Begin Play se non esiste già
  2. Aggiungi il nodo Create Runtime Viseme Generator e collegalo all'evento Begin Play
  3. Salva l'output come una variabile (es. "VisemeGenerator") per l'uso in altre parti del grafico

Creazione del Runtime Viseme Generator

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.

Questo approccio esegue la sincronizzazione labiale in tempo reale mentre si parla nel microfono:

  1. Crea un'Onda Sonora Catturabile utilizzando Runtime Audio Importer
  2. Prima di iniziare a catturare l'audio, collega il delegato OnPopulateAudioData
  3. Nella funzione collegata, chiama ProcessAudioData dal tuo Runtime Viseme Generator
  4. Inizia a catturare l'audio dal microfono

Nodi copiabili.

Sincronizzazione Labiale Durante la Cattura Audio

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

  1. Individua la posa che contiene il volto MetaHuman (tipicamente da Use cached pose 'Body Pose')
  2. Aggiungi il nodo Blend Runtime MetaHuman Lip Sync
  3. Collega la posa al pin Source Pose del nodo Blend Runtime MetaHuman Lip Sync
  4. Collega la tua variabile RuntimeVisemeGenerator al pin Viseme Generator
  5. Collega l'output del nodo Blend Runtime MetaHuman Lip Sync al pin Result dell'Output Pose

Blend Runtime MetaHuman Lip Sync

Quando viene rilevato lip sync nell'audio, il tuo personaggio si animerà dinamicamente di conseguenza:

Lip Sync

Animazione della Risata

Puoi anche aggiungere animazioni della risata che risponderanno dinamicamente alla risata rilevata nell'audio:

  1. Aggiungi il nodo Blend Runtime MetaHuman Laughter
  2. Collega la tua variabile RuntimeVisemeGenerator al pin Viseme Generator
  3. Se stai già utilizzando il lip sync:
    • Collega l'output dal nodo Blend Runtime MetaHuman Lip Sync al pin Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Collega l'output del nodo Blend Runtime MetaHuman Laughter al pin Result dell'Output Pose
  4. Se utilizzi solo la risata senza lip sync:
    • Collega la tua posa sorgente direttamente al pin Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Collega l'output al pin Result

Blend Runtime MetaHuman Laughter

Quando viene rilevata la risata nell'audio, il tuo personaggio si animerà dinamicamente di conseguenza:

Laughter

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:

  1. Aggiungi un nodo Layered blend per bone tra le tue animazioni del corpo e l'output finale. Assicurati che Use Attached Parent sia impostato su true.
  2. Configura l'impostazione dei layer:
    • Aggiungi 1 elemento all'array Layer Setup
    • Aggiungi 3 elementi ai Branch Filters per il layer, con i seguenti Bone Name:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. 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.
  4. Effettua le connessioni:
    • Animazioni esistenti (come BodyPose) → input Base Pose
    • Output dell'animazione facciale (dai nodi di sincronizzazione labiale e/o risate) → input Blend Poses 0
    • Nodo di layered blend → posa Result finale

Layered Blend Per Bone

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:

  1. Dopo il nodo Blend Runtime MetaHuman Lip Sync o Blend Realistic MetaHuman Lip Sync, aggiungi un nodo Modify Curve
  2. Fai clic con il tasto destro sul nodo Modify Curve e seleziona Aggiungi Pin Curva
  3. Aggiungi un pin curva con il nome CTRL_expressions_tongueOut
  4. Imposta la proprietà Modalità Applicazione del nodo su Scala
  5. 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:

  1. Dopo il nodo di blend della sincronizzazione labiale, aggiungi un nodo Modify Curve
  2. Fai clic con il tasto destro sul nodo Modify Curve e seleziona Aggiungi Pin Curva
  3. Aggiungi un pin curva con il nome CTRL_expressions_jawOpen
  4. Imposta la proprietà Modalità Applicazione del nodo su Scala
  5. 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

Il nodo Blend Runtime MetaHuman Lip Sync ha opzioni di configurazione nel suo pannello delle proprietà:

ProprietàPredefinitoDescrizione
Velocità Interpolazione25Controlla la rapidità con cui i movimenti labiali transitano tra i visemi. Valori più alti risultano in transizioni più veloci e brusche.
Tempo Reset0.2La 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àPredefinitoDescrizione
Velocità Interpolazione25Controlla la rapidità con cui i movimenti labiali transitano tra le animazioni di risata. Valori più alti risultano in transizioni più veloci e brusche.
Tempo Reset0.2La 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 Riso0.7Scala 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:

ConsiderazioneModello StandardModello Realistico
Compatibilità con i PersonaggiMetaHumans e tutti i tipi di personaggi personalizzatiSolo MetaHumans
Qualità VisivaBuona sincronizzazione labiale con prestazioni efficientiRealismo potenziato con movimenti della bocca più naturali
PrestazioniOttimizzato per tutte le piattaforme inclusi mobile/VRRequisiti di risorse leggermente superiori
Casi d'UsoApplicazioni generali, giochi, VR/AR, mobileEsperienze cinematografiche, interazioni ravvicinate con i personaggi

Compatibilità con la Versione del Motore

Problema di Compatibilità con UE 5.2

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.