Saltar al contenido principal

Cómo usar el plugin

Esta guía te lleva a través del proceso de configurar Runtime MetaHuman Lip Sync para tus personajes MetaHuman.

Nota: Runtime MetaHuman Lip Sync funciona tanto con MetaHuman como con personajes personalizados. El plugin admite varios tipos de personajes, incluyendo:

  • Personajes comerciales populares (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, etc)
  • Personajes con blendshapes basados en FACS
  • Modelos que utilizan estándares de blendshape ARKit
  • Personajes con conjuntos de fonemas Preston Blair
  • Sistemas de fonemas de 3ds Max
  • Cualquier personaje con objetivos de morph personalizados para expresiones faciales

Para instrucciones detalladas sobre cómo configurar personajes personalizados, incluyendo referencias de mapeo de visemas para todos los estándares anteriores, consulta la Guía de configuración de personajes personalizados.

Prerrequisitos

Antes de comenzar, asegúrate de:

  1. El plugin MetaHuman está habilitado en tu proyecto (Nota: A partir de UE 5.6, este paso ya no es necesario ya que la funcionalidad MetaHuman está integrada directamente en el motor)
  2. Tienes al menos un personaje MetaHuman descargado y disponible en tu proyecto
  3. El plugin Runtime MetaHuman Lip Sync está instalado

Plugin de extensión de modelo estándar

Si planeas usar el Modelo Estándar (Más rápido), necesitarás instalar el plugin de extensión:

  1. Descarga el plugin de extensión Standard Lip Sync Extension desde Google Drive
  2. Extrae la carpeta del archivo descargado en la carpeta Plugins de tu proyecto (crea esta carpeta si no existe)
  3. Asegúrate de que tu proyecto esté configurado como un proyecto C++ (incluso si no tienes ningún código C++)
  4. Reconstruye tu proyecto
nota
  • Esta extensión es solo necesaria si quieres usar el Modelo Estándar. Si solo necesitas el Modelo Realista, puedes omitir este paso.
  • Para más información sobre cómo construir plugins manualmente, consulta el tutorial Construyendo Plugins

Plugins adicionales

Proceso de Configuración

Paso 1: Localiza y modifica el Blueprint de animación facial

Necesitas modificar un Animation Blueprint que se usará para las animaciones faciales de tu personaje MetaHuman. El Animation Blueprint facial predeterminado de MetaHuman se encuentra en:

Content/MetaHumans/Common/Face/Face_AnimBP

Face Animation Blueprint

Tienes varias opciones para implementar la funcionalidad de lip sync:

Abre directamente el Face_AnimBP predeterminado y realiza tus modificaciones. Cualquier cambio afectará a todos los personajes MetaHuman que utilicen este Animation Blueprint.

Nota: Este enfoque es conveniente pero afectará a todos los personajes que utilicen el Animation Blueprint predeterminado.

Importante: La mezcla de Runtime MetaHuman Lip Sync puede implementarse en cualquier activo Animation Blueprint que tenga acceso a una pose que contenga los huesos faciales presentes en el Face_Archetype_Skeleton predeterminado del MetaHuman. No estás limitado a las opciones anteriores - estos son solo enfoques de implementación comunes.

Paso 2: Configuración del Event Graph

Abre tu Face Animation Blueprint y cambia al Event Graph. Necesitarás crear un generador que procese datos de audio y genere animación de lip sync.

  1. Añade el nodo Event Blueprint Begin Play si no existe ya
  2. Añade el nodo Create Runtime Viseme Generator y conéctalo al evento Begin Play
  3. Guarda la salida como una variable (ej. "VisemeGenerator") para usar en otras partes del gráfico

Creando Runtime Viseme Generator

Paso 3: Configurar el procesamiento de entrada de audio

Necesitas configurar un método para procesar la entrada de audio. Hay varias formas de hacerlo dependiendo de tu fuente de audio.

Este enfoque realiza la sincronización de labios en tiempo real mientras se habla al micrófono:

  1. Crea una Capturable Sound Wave usando Runtime Audio Importer
  2. Antes de comenzar a capturar audio, enlázate al delegado OnPopulateAudioData
  3. En la función enlazada, llama a ProcessAudioData desde tu Runtime Viseme Generator
  4. Comienza a capturar audio desde el micrófono

Copyable nodes.

Lip Sync During Audio Capture

Paso 4: Configuración del Anim Graph

Después de configurar el Event Graph, cambia al Anim Graph para conectar el generador a la animación del personaje:

Lip Sync

  1. Localiza la pose que contiene la cara del MetaHuman (normalmente de Use cached pose 'Body Pose')
  2. Añade el nodo Blend Runtime MetaHuman Lip Sync
  3. Conecta la pose al Source Pose del nodo Blend Runtime MetaHuman Lip Sync
  4. Conecta tu variable RuntimeVisemeGenerator al pin Viseme Generator
  5. Conecta la salida del nodo Blend Runtime MetaHuman Lip Sync al pin Result del Output Pose

Blend Runtime MetaHuman Lip Sync

Cuando se detecta lip sync en el audio, tu personaje se animará dinámicamente en consecuencia:

Lip Sync

Animación de Risa

También puedes añadir animaciones de risa que responderán dinámicamente a la risa detectada en el audio:

  1. Añade el nodo Blend Runtime MetaHuman Laughter
  2. Conecta tu variable RuntimeVisemeGenerator al pin Viseme Generator
  3. Si ya estás usando lip sync:
    • Conecta la salida del nodo Blend Runtime MetaHuman Lip Sync al Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Conecta la salida del nodo Blend Runtime MetaHuman Laughter al pin Result del Output Pose
  4. Si usas solo risa sin lip sync:
    • Conecta tu pose fuente directamente al Source Pose del nodo Blend Runtime MetaHuman Laughter
    • Conecta la salida al pin Result

Blend Runtime MetaHuman Laughter

Cuando se detecta risa en el audio, tu personaje se animará dinámicamente en consecuencia:

Laughter

Combinando con Animaciones Faciales y Corporales

Para aplicar la sincronización labial y la risa junto con animaciones corporales existentes y animaciones faciales personalizadas (como expresiones, emociones o cualquier otro movimiento facial) sin sobrescribirlas:

  1. Agrega un nodo Layered blend per bone entre tus animaciones corporales y la salida final. Asegúrate de que Use Attached Parent sea verdadero.
  2. Configura la capa:
    • Añade 1 elemento al array Layer Setup
    • Añade 3 elementos a Branch Filters para la capa, con los siguientes Bone Name:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Importante para animaciones faciales personalizadas: En Curve Blend Option, selecciona "Use Max Value". Esto permite que las animaciones faciales personalizadas (expresiones, emociones, etc.) se superpongan correctamente sobre la sincronización labial.
  4. Realiza las conexiones:
    • Animaciones existentes (como BodyPose) → entrada Base Pose
    • Salida de animación facial (desde nodos de sincronización labial y/o risa) → entrada Blend Poses 0
    • Nodo de mezcla en capas → Result pose final

Layered Blend Per Bone

Por qué funciona: Los filtros de rama aíslan los huesos de animación facial, permitiendo que la sincronización labial y la risa se mezclen exclusivamente con los movimientos faciales mientras se preservan las animaciones corporales originales. La opción de mezcla de curvas "Use Max Value" toma el valor máximo de cada curva en lugar de mezclarlas de forma aditiva, permitiendo que las animaciones faciales personalizadas (como expresiones y emociones) se combinen correctamente con la sincronización labial sin conflictos. Esto coincide con la estructura del rig facial de MetaHuman para una integración natural.

Nota: Las características de sincronización labial y risa están diseñadas para funcionar de forma no destructiva con tu configuración de animación existente. Solo afectan a los huesos faciales específicos necesarios para el movimiento de la boca, dejando intactas otras animaciones faciales. Esto significa que puedes integrarlas de forma segura en cualquier punto de tu cadena de animación, ya sea antes de otras animaciones faciales (permitiendo que esas animaciones sobrescriban la sincronización labial/risa) o después de ellas (dejando que la sincronización labial/risa se mezcle sobre tus animaciones existentes). Esta flexibilidad te permite combinar la sincronización labial y la risa con parpadeos, movimientos de cejas, expresiones emocionales y otras animaciones faciales sin conflictos.

Ajuste fino del comportamiento de la sincronización labial

Después de configurar la funcionalidad básica de sincronización labial, es posible que desees ajustar aspectos específicos del movimiento de la boca para que se adapten mejor a los requisitos de tu proyecto.

Control de protrusión de la lengua

En el modelo estándar de sincronización labial, puedes notar un movimiento excesivo de la lengua hacia adelante durante ciertos fonemas. Para controlar la protrusión de la lengua:

  1. Después de tu nodo Blend Runtime MetaHuman Lip Sync o Blend Realistic MetaHuman Lip Sync, añade un nodo Modify Curve
  2. Haz clic derecho en el nodo Modify Curve y selecciona Add Curve Pin
  3. Añade un pin de curva con el nombre CTRL_expressions_tongueOut
  4. Establece la propiedad Apply Mode del nodo en Scale
  5. Ajusta el parámetro Value para controlar la extensión de la lengua (por ejemplo, 0.8 para reducir la protrusión en un 20%)

Control de Apertura de Mandíbula

La sincronización labial realista puede producir movimientos de mandíbula excesivamente sensibles dependiendo de tu contenido de audio y requisitos visuales. Para ajustar la intensidad de apertura de mandíbula:

  1. Después de tu nodo de mezcla de sincronización labial, añade un nodo Modify Curve
  2. Haz clic derecho en el nodo Modify Curve y selecciona Add Curve Pin
  3. Añade un pin de curva con el nombre CTRL_expressions_jawOpen
  4. Establece la propiedad Apply Mode del nodo en Scale
  5. Ajusta el parámetro Value para controlar el rango de apertura de mandíbula (por ejemplo, 0.9 para reducir el movimiento de mandíbula en un 10%)

Configuración

Configuración de Sincronización Labial

El nodo Blend Runtime MetaHuman Lip Sync tiene opciones de configuración en su panel de propiedades:

PropiedadValor por DefectoDescripción
Interpolation Speed25Controla la rapidez con la que los movimientos labiales transicionan entre visemas. Valores más altos resultan en transiciones más rápidas y abruptas.
Reset Time0.2La duración en segundos después de la cual se reinicia la sincronización labial. Esto es útil para evitar que la sincronización labial continúe después de que el audio se haya detenido.

Configuración de Risa

El nodo Blend Runtime MetaHuman Laughter tiene sus propias opciones de configuración:

PropiedadValor por DefectoDescripción
Interpolation Speed25Controla la rapidez con la que los movimientos labiales transicionan entre animaciones de risa. Valores más altos resultan en transiciones más rápidas y abruptas.
Reset Time0.2La duración en segundos después de la cual se reinicia la risa. Esto es útil para evitar que la risa continúe después de que el audio se haya detenido.
Max Laughter Weight0.7Escala la intensidad máxima de la animación de risa (0.0 - 1.0).

Elección Entre Modelos de Sincronización Labial

Al decidir qué modelo de sincronización labial usar para tu proyecto, considera estos factores:

ConsideraciónModelo EstándarModelo Realista
Compatibilidad de PersonajesMetaHumans y todos los tipos de personajes personalizadosSolo MetaHumans
Calidad VisualBuena sincronización labial con rendimiento eficienteRealismo mejorado con movimientos de boca más naturales
RendimientoOptimizado para todas las plataformas incluyendo móvil/VRRequisitos de recursos ligeramente superiores
Casos de UsoAplicaciones generales, juegos, VR/AR, móvilExperiencias cinematográficas, interacciones de personajes en primer plano

Compatibilidad con Versiones del Motor

Problema de Compatibilidad con UE 5.2

Si estás usando Unreal Engine 5.2, el Modelo Realista puede no funcionar correctamente debido a un error en la librería de remuestreo de UE. Para usuarios de UE 5.2 que necesiten una funcionalidad de sincronización labial confiable, por favor usa el Modelo Estándar en su lugar.

Este problema es específico de UE 5.2 y no afecta a otras versiones del motor.

Para la mayoría de proyectos, el Modelo Estándar ofrece un excelente equilibrio entre calidad y rendimiento, además de soportar la gama más amplia de tipos de personajes. El Modelo Realista es ideal cuando necesitas la máxima fidelidad visual específicamente para personajes MetaHuman en contextos donde la sobrecarga de rendimiento es menos crítica.