Saltar al contenido principal

Cómo usar el plugin

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

Nota: Runtime MetaHuman Lip Sync funciona tanto con MetaHuman como con personajes personalizados. El plugin soporta 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 usan 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 mencionados, consulta la Guía de configuración de personajes personalizados.

Requisitos previos

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 para 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 Standard Lip Sync Extension plugin 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 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 saltarte este paso.
  • Para más información sobre cómo construir plugins manualmente, consulta el tutorial Building Plugins

Plugins adicionales

Configuración específica por plataforma

Configuración para Android / Meta Quest

Si estás desarrollando para plataformas Android o Meta Quest y encuentras errores de compilación con este plugin, necesitarás deshabilitar la arquitectura x86_64 (x64) para Android en la configuración de tu proyecto:

  1. Ve a Editar > Configuración del Proyecto
  2. Navega a Plataformas > Android
  3. Dentro de Plataformas - Android, en la sección Compilación, busca Soporte para x86_64 [también conocido como x64] y asegúrate de que esté deshabilitado, como se muestra a continuación

Deshabilitar Arquitectura x64 para Android

Esto se debe a que el plugin actualmente solo soporta las arquitecturas arm64-v8a y armeabi-v7a para plataformas Android / Meta Quest.

Proceso de Configuración

Paso 1: Localizar y modificar el Blueprint de animación facial

Necesitas modificar un Animation Blueprint que será utilizado 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 impactará a todos los personajes que usen el Animation Blueprint predeterminado.

Importante: La mezcla de Runtime MetaHuman Lip Sync puede implementarse en cualquier asset de Animation Blueprint que tenga acceso a una pose que contenga los huesos faciales presentes en el Face_Archetype_Skeleton predeterminado de 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 grafo

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 lip sync en tiempo real mientras se habla al micrófono:

  1. Crea un Capturable Sound Wave usando Runtime Audio Importer
  2. Antes de comenzar a capturar audio, enlaza 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

Nodos copiables.

Lip Sync Durante Captura de Audio

Paso 4: Configuración del Anim Graph

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

Sincronización Labial

  1. Localice la pose que contiene la cara del MetaHuman (típicamente de Use cached pose 'Body Pose')
  2. Añada el nodo Blend Runtime MetaHuman Lip Sync
  3. Conecte la pose al Source Pose del nodo Blend Runtime MetaHuman Lip Sync
  4. Conecte su variable RuntimeVisemeGenerator al pin Viseme Generator
  5. Conecte la salida del nodo Blend Runtime MetaHuman Lip Sync al pin Result del Output Pose

Blend Runtime MetaHuman Lip Sync

Cuando se detecte sincronización labial en el audio, su 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 solo usas 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 detecte risa en el audio, tu personaje se animará dinámicamente de acuerdo a ello:

Laughter

Combinación con Animaciones Corporales

Para aplicar lip sync y risa junto con animaciones corporales existentes sin sobrescribirlas:

  1. Añade 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 el layer setup:
    • Añade 1 item al array Layer Setup
    • Añade 3 items a los Branch Filters para el layer, con los siguientes Bone Names:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Realiza las conexiones:
    • Animaciones existentes (como BodyPose) → entrada Base Pose
    • Salida de animación facial (de los nodos de lip sync y/o risa) → entrada Blend Poses 0
    • Nodo de layered blend → pose Result final

Layered Blend Per Bone

Por qué funciona: Los branch filters aíslan los huesos de animación facial, permitiendo que el lip sync y la risa se mezclen exclusivamente con movimientos faciales mientras se preservan las animaciones corporales originales. Esto coincide con la estructura del rig facial de MetaHuman, asegurando una integración natural.

Nota: Las características de lip sync y risa están diseñadas para funcionar de manera 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 integrarlos de manera segura en cualquier punto de tu cadena de animación, ya sea antes de otras animaciones faciales (permitiendo que esas animaciones sobrescriban el lip sync/risa) o después de ellas (dejando que el lip sync/risa se mezcle encima de tus animaciones existentes). Esta flexibilidad te permite combinar lip sync y risa con parpadeos, movimientos de cejas, expresiones emocionales y otras animaciones faciales sin conflictos.

Configuración

Configuración de Lip Sync

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

PropiedadValor por defectoDescripción
Velocidad de Interpolación25Controla qué tan rápido transicionan los movimientos labiales entre visemas. Valores más altos resultan en transiciones más rápidas y abruptas.
Tiempo de Reinicio0.2La duración en segundos después de la cual se reinicia el lip sync. Es útil para evitar que el lip sync 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
Velocidad de Interpolación25Controla qué tan rápido transicionan los movimientos labiales entre animaciones de risa. Valores más altos resultan en transiciones más rápidas y abruptas.
Tiempo de Reinicio0.2La duración en segundos después de la cual se reinicia la risa. Es útil para evitar que la risa continúe después de que el audio se haya detenido.
Peso Máximo de Risa0.7Escala la intensidad máxima de la animación de risa (0.0 - 1.0).

Elección Entre Modelos de Lip Sync

Al decidir qué modelo de lip sync usar para tu proyecto, considera estos factores:

ConsideraciónModelo EstándarModelo Realista
Compatibilidad con PersonajesMetaHumans y todos los tipos de personajes personalizadosSolo MetaHumans
Calidad VisualBuen lip sync con rendimiento eficienteRealismo mejorado con movimientos bucales más naturales
RendimientoOptimizado para todas las plataformas incluyendo móvil/VRRequerimientos de recursos ligeramente mayores
Casos de UsoAplicaciones generales, juegos, VR/AR, móvilExperiencias cinemáticas, interacciones cercanas con personajes

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 bug en la biblioteca de resampling de UE. Para usuarios de UE 5.2 que necesiten funcionalidad confiable de lip sync, 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 los proyectos, el Modelo Estándar ofrece un excelente equilibrio entre calidad y rendimiento, además de soportar la mayor variedad de tipos de personajes. El Modelo Realista es ideal cuando se necesita la máxima fidelidad visual, específicamente para personajes MetaHuman en contextos donde la sobrecarga de rendimiento es menos crítica.