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:
- 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)
- Tienes al menos un personaje MetaHuman descargado y disponible en tu proyecto
- 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:
- Descarga el plugin de extensión Standard Lip Sync Extension desde Google Drive
- Extrae la carpeta del archivo descargado en la carpeta
Plugins
de tu proyecto (crea esta carpeta si no existe) - Asegúrate de que tu proyecto esté configurado como un proyecto C++ (incluso si no tienes ningún código C++)
- Reconstruye tu proyecto
- 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
- Si planeas usar captura de audio (por ejemplo, entrada de micrófono), instala el plugin Runtime Audio Importer.
- Si planeas usar funcionalidad de texto a voz con mis plugins (puedes tener tu propio TTS personalizado u otra entrada de audio), entonces, además del plugin Runtime Audio Importer, instala también:
- Para TTS local, el plugin Runtime Text To Speech.
- Para proveedores de TTS externos (ElevenLabs, OpenAI), el plugin Runtime AI Chatbot Integrator.
Proceso de Configuración
Paso 1: Localiza y modifica el Blueprint de animación facial
- UE 5.5 y anteriores (o MetaHumans Legacy en UE 5.6+)
- Personajes de MetaHuman Creator en UE 5.6+
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
Tienes varias opciones para implementar la funcionalidad de lip sync:
- Editar Asset Predeterminado (Opción Más Simple)
- Crear Duplicado
- Usar Animation Blueprint Personalizado
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.
- Duplica
Face_AnimBP
y dale un nombre descriptivo - Localiza la clase Blueprint de tu personaje (por ejemplo, para el personaje "Bryan", estaría en
Content/MetaHumans/Bryan/BP_Bryan
) - Abre el Blueprint del personaje y encuentra el componente Face
- Cambia la propiedad Anim Class a tu Animation Blueprint recién duplicado
Nota: Este enfoque te permite personalizar el lip sync para personajes específicos mientras dejas a otros sin cambios.
Puedes implementar la mezcla de lip sync en cualquier Animation Blueprint que tenga acceso a los huesos faciales requeridos:
- Crea o utiliza un Animation Blueprint personalizado existente
- Asegúrate de que tu Animation Blueprint funcione con un esqueleto que contenga los mismos huesos faciales que el
Face_Archetype_Skeleton
predeterminado de MetaHuman (que es el esqueleto estándar utilizado para cualquier personaje MetaHuman)
Nota: Este enfoque te brinda la máxima flexibilidad para la integración con sistemas de animación personalizados.
A partir de UE 5.6, se introdujo el nuevo sistema MetaHuman Creator, que crea personajes sin el asset tradicional Face_AnimBP
. Para estos personajes, el plugin proporciona un Animation Blueprint de cara ubicado en:
Content/LipSyncData/LipSync_Face_AnimBP
Este Animation Blueprint se encuentra en la carpeta de contenido del plugin y se sobrescribirá con cada actualización del plugin. Para evitar perder tus personalizaciones, es altamente recomendado:
- Copiar este activo a la carpeta Content de tu proyecto (por ejemplo, a
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - Usar tu versión copiada en la configuración de tu personaje
- Hacer todas tus modificaciones en la versión copiada
Esto asegura que tus configuraciones de lip sync persistirán a través de las actualizaciones del plugin.
Usando el Face Animation Blueprint del Plugin:
- Localiza la clase Blueprint de tu personaje de MetaHuman Creator
- Abre el Blueprint del personaje y encuentra el componente Face
- Cambia la propiedad Anim Class al
LipSync_Face_AnimBP
del plugin - Continúa con los Pasos 2-4 para configurar la funcionalidad Runtime MetaHuman Lip Sync
Opciones Alternativas:
- Usar Instrucciones Legacy: Aún puedes seguir las instrucciones de UE 5.5 anteriores si estás trabajando con MetaHumans legacy o prefieres el flujo de trabajo tradicional
- Crear Animation Blueprint Personalizado: Crea tu propio Animation Blueprint que funcione con la estructura de esqueleto de MetaHuman Creator
Nota: Si estás usando UE 5.6+ pero trabajando con MetaHumans legacy (no creados a través de MetaHuman Creator), usa las instrucciones de la pestaña "UE 5.5 y Earlier" en su lugar.
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.
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Añade el nodo
Event Blueprint Begin Play
si no existe ya - Añade el nodo
Create Runtime Viseme Generator
y conéctalo al evento Begin Play - Guarda la salida como una variable (ej. "VisemeGenerator") para usar en otras partes del gráfico
- Añade el nodo
Event Blueprint Begin Play
si no existe ya - Añade el nodo
Create Realistic MetaHuman Lip Sync Generator
y conéctalo al evento Begin Play - Guarda la salida como una variable (ej. "RealisticLipSyncGenerator") para usar en otras partes del gráfico
- (Opcional) Configura los ajustes del generador usando el parámetro Configuration
- (Opcional) Establece el Processing Chunk Size en el objeto Realistic MetaHuman Lip Sync Generator

Nota: El Modelo Realista está optimizado específicamente para personajes MetaHuman y no es compatible con tipos de personajes personalizados.
Opciones de Configuración
El nodo Create Realistic MetaHuman Lip Sync Generator
acepta un parámetro opcional de Configuration que te permite personalizar el comportamiento del generador:
Tipo de Modelo
El ajuste Model Type determina qué versión del modelo realista usar:
Tipo de Modelo | Rendimiento | Calidad Visual | Manejo de Ruido | Casos de Uso Recomendados |
---|---|---|---|---|
Highly Optimized (Predeterminado) | Máximo rendimiento, menor uso de CPU | Buena calidad | Puede mostrar movimientos de boca notorios con ruido de fondo o sonidos no vocales | Entornos de audio limpios, escenarios críticos de rendimiento |
Optimized | Buen rendimiento, uso moderado de CPU | Alta calidad | Mayor estabilidad con audio ruidoso | Rendimiento y calidad equilibrados, condiciones de audio mixtas |
Original Unoptimized | Adecuado para uso en tiempo real en CPUs modernas | Máxima calidad | Mayor estabilidad con ruido de fondo y sonidos no vocales | Producciones de alta calidad, entornos de audio ruidosos, cuando se necesita máxima precisión |
Ajustes de Rendimiento
Intra Op Threads: Controla el número de hilos utilizados para operaciones de procesamiento interno del modelo.
- 0 (Predeterminado/Automático): Usa detección automática (típicamente 1/4 de los núcleos de CPU disponibles, máximo 4)
- 1-16: Especifica manualmente el recuento de hilos. Valores más altos pueden mejorar el rendimiento en sistemas multi-núcleo pero usan más CPU
Inter Op Threads: Controla el número de hilos utilizados para la ejecución paralela de diferentes operaciones del modelo.
- 0 (Predeterminado/Automático): Usa detección automática (típicamente 1/8 de los núcleos de CPU disponibles, máximo 2)
- 1-8: Especifica manualmente el recuento de hilos. Normalmente se mantiene bajo para procesamiento en tiempo real
Usando la Configuración
Para configurar el generador:
- En el nodo
Create Realistic MetaHuman Lip Sync Generator
, expande el parámetro Configuration - Establece Model Type a tu opción preferida:
- Usa Highly Optimized para el mejor rendimiento (recomendado para la mayoría de usuarios)
- Usa Optimized para un equilibrio entre rendimiento y calidad
- Usa Original Unoptimized solo cuando la máxima calidad es esencial
- Ajusta Intra Op Threads e Inter Op Threads si es necesario (déjalos en 0 para detección automática en la mayoría de los casos) Recomendaciones de rendimiento:
- Para la mayoría de proyectos con audio limpio, usa Altamente Optimizado para el mejor rendimiento
- Si estás trabajando con audio que contiene ruido de fondo, música o sonidos que no son voz, considera usar los modelos Optimizado o Original No Optimizado para una mejor estabilidad
- El modelo Altamente Optimizado puede mostrar movimientos sutiles de la boca al procesar audio que no es voz debido a las técnicas de optimizaci ón aplicadas durante la creación del modelo
- El modelo Original No Optimizado, aunque requiere más recursos de CPU, sigue siendo adecuado para aplicaciones en tiempo real en hardware moderno y proporciona los resultados más precisos con condiciones de audio desafiantes
- Solo ajusta los recuentos de hilos si estás experimentando problemas de rendimiento o tienes requisitos de optimización específicos
- Mayores recuentos de hilos no siempre significan mejor rendimiento: los valores óptimos dependen de tu hardware específico y los requisitos del proyecto
Configuración del tamaño del fragmento de procesamiento: El Tamaño del Fragmento de Procesamiento determina cuántas muestras se procesan en cada paso de inferencia. El valor predeterminado es 160 muestras, que corresponde a 10ms de audio a 16kHz (la frecuencia de muestreo de procesamiento interno). Puedes ajustar este valor para equilibrar entre la frecuencia de actualización y el uso de CPU:
- Valores más pequeños proporcionan actualizaciones más frecuentes pero aumentan el uso de CPU
- Valores más grandes reducen la carga de CPU pero pueden disminuir la capacidad de respuesta de la sincronización labial
Para establecer el Tamaño del Fragmento de Procesamiento:
- Accede a tu objeto
Realistic MetaHuman Lip Sync Generator
- Localiza la propiedad
Processing Chunk Size
- Establece tu valor deseado
Se recomienda usar valores que sean múltiplos de 160. Esto se alinea con la estructura de procesamiento interna del modelo. Los valores recomendados incluyen:
160
(predeterminado, mínimo recomendado)320
480
640
- etc.
El Tamaño del Fragmento de Procesamiento predeterminado de 160
muestras corresponde a 10ms de audio a 16kHz. Usar múltiplos de 160 mantiene la alineación con esta unidad base, lo que puede ayudar a optimizar la eficiencia del procesamiento y mantener un comportamiento consistente en diferentes tamaños de fragmento.
Para un funcionamiento confiable y consistente con el Modelo Realista, es requerido recrear el Realistic MetaHuman Lip Sync Generator cada vez que quieras alimentar nuevos datos de audio después de un período de inactividad. Esto se debe al comportamiento del runtime de ONNX que puede hacer que la sincronización labial deje de funcionar al reutilizar generadores después de períodos de silencio.
Escenario de ejemplo: Si realizaste sincronización labial TTS y luego te detuviste, y más tarde quieres realizar sincronización labial nuevamente con audio nuevo, crea un nuevo Realistic MetaHuman Lip Sync Generator en lugar de reutilizar el existente.
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.
- Microphone (Real-time)
- Microphone (Playback)
- Texto a Voz (Local)
- Text-to-Speech (External APIs)
- Desde Archivo/Búfer de Audio
- Streaming Audio Buffer
Este enfoque realiza la sincronización de labios en tiempo real mientras se habla al micrófono:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Crea una Capturable Sound Wave usando Runtime Audio Importer
- Antes de comenzar a capturar audio, enlázate al delegado
OnPopulateAudioData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator - Comienza a capturar audio desde el micrófono
El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGenerator
con tu variableRealisticLipSyncGenerator
- Los nombres de las funciones y los parámetros permanecen idénticos entre ambos modelos
Este enfoque captura audio de un micrófono y luego lo reproduce con sincronización de labios:
- Standard (Faster) Model
- Modelo Realista (Mayor Calidad)
- Crea una Capturable Sound Wave usando Runtime Audio Importer
- Inicia la captura de audio desde el micrófono
- Antes de reproducir la capturable sound wave, enlázate a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator
El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGenerator
con tu variableRealisticLipSyncGenerator
- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
- Regular
- Streaming
Este enfoque sintetiza voz a partir de texto y realiza sincronización labial:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Usa Runtime Text To Speech para generar voz a partir de texto
- Usa Runtime Audio Importer para importar el audio sintetizado
- Antes de reproducir la onda de sonido importada, enlaza a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator
El TTS local proporcionado por el plugin Runtime Text To Speech actualmente no es compatible con el modelo Realista debido a conflictos del runtime ONNX. Para texto a voz con el modelo Realista, considera usar servicios TTS externos (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o usa el modelo Estándar en su lugar.
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza la síntesis de texto a voz en streaming con sincronización de labios en tiempo real:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime Text To Speech para generar voz en streaming a partir de texto
- Usa Runtime Audio Importer para importar el audio sintetizado
- Antes de reproducir la onda de sonido en streaming, enlaza a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator
El TTS local proporcionado por el plugin Runtime Text To Speech no es compatible actualmente con el modelo Realistic debido a conflictos del runtime ONNX. Para texto a voz con el modelo Realistic, considera usar servicios TTS externos (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o usa el modelo Standard en su lugar.
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización de labios más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (streaming cada ~6.67 ms) en lugar de 100 (streaming cada 10 ms) proporcionará actualizaciones de sincronización de labios más frecuentes.
- Regular
- Streaming
Este enfoque utiliza el plugin Runtime AI Chatbot Integrator para generar voz sintetizada desde servicios de IA (OpenAI o ElevenLabs) y realizar sincronización de labios:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime AI Chatbot Integrator para generar voz a partir de texto usando APIs externas (OpenAI, ElevenLabs, etc.)
- Usa Runtime Audio Importer para importar los datos de audio sintetizados
- Antes de reproducir la onda de sonido importada, enlaza a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator

El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplace:
VisemeGenerator
con su variableRealisticLipSyncGenerator
- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos
Nota: Si desea procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajuste el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza el plugin Runtime AI Chatbot Integrator para generar habla sintetizada en streaming desde servicios de IA (OpenAI o ElevenLabs) y realizar sincronización labial:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Use Runtime AI Chatbot Integrator para conectarse a APIs de TTS en streaming (como ElevenLabs Streaming API)
- Use Runtime Audio Importer para importar los datos de audio sintetizados
- Antes de reproducir la onda de sonido en streaming, vincúlese a su delegado
OnGeneratePCMData
- En la función vinculada, llame a
ProcessAudioData
desde su Runtime Viseme Generator
El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplace:
VisemeGenerator
con su variableRealisticLipSyncGenerator
- Los nombres de funciones y parámetros permanecen idénticos entre ambos modelos
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Este enfoque utiliza archivos de audio pregrabados o búferes de audio para la sincronización labial:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Usa Runtime Audio Importer para importar un archivo de audio desde el disco o la memoria
- Antes de reproducir la onda de sonido importada, vincúlate a su delegado
OnGeneratePCMData
- En la función vinculada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator - Reproduce la onda de sonido importada y observa la animación de sincronización labial
El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGenerator
con tu variableRealisticLipSyncGenerator
- Los nombres de las funciones y los parámetros permanecen idénticos entre ambos modelos
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para una sincronización labial más receptiva, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la frecuencia de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de sincronización labial más frecuentes.
Para transmitir datos de audio desde un búfer, necesitas:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Datos de audio en formato PCM flotante (un array de muestras de punto flotante) disponibles desde tu fuente de transmisión
- La tasa de muestreo y el número de canales
- Llama a
ProcessAudioData
desde tu Runtime Viseme Generator con estos parámetros a medida que los fragmentos de audio estén disponibles
Aquí tienes un ejemplo de procesamiento de lip sync a partir de datos de audio en streaming:
Nota: Al usar fuentes de audio en streaming, asegúrate de gestionar el tiempo de reproducción de audio adecuadamente para evitar una reproducción distorsionada. Consulta la documentación de Streaming Sound Wave para obtener más información sobre la gestión adecuada de audio en streaming.
El Modelo Realista utiliza el mismo flujo de trabajo de procesamiento de audio que el Modelo Estándar, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Modelo Estándar, simplemente reemplaza:
VisemeGenerator
con tu variableRealisticLipSyncGenerator
- Los nombres de las funciones y los parámetros permanecen idénticos entre ambos modelos
Nota: Al usar fuentes de audio en streaming, asegúrate de gestionar el tiempo de reproducción de audio adecuadamente para evitar una reproducción distorsionada. Consulta la documentación de Streaming Sound Wave para obtener más información sobre la gestión adecuada de audio en streaming.
Nota: Si deseas procesar datos de audio en fragmentos más pequeños para un lip sync más responsivo, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la tasa de muestreo por 150 (transmitiendo cada ~6.67 ms) en lugar de 100 (transmitiendo cada 10 ms) proporcionará actualizaciones de lip sync más frecuentes.
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
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Localiza la pose que contiene la cara del MetaHuman (normalmente de
Use cached pose 'Body Pose'
) - Añade el nodo
Blend Runtime MetaHuman Lip Sync
- Conecta la pose al
Source Pose
del nodoBlend Runtime MetaHuman Lip Sync
- Conecta tu variable
RuntimeVisemeGenerator
al pinViseme Generator
- Conecta la salida del nodo
Blend Runtime MetaHuman Lip Sync
al pinResult
delOutput Pose
Cuando se detecta lip sync en el audio, tu personaje se animará dinámicamente en consecuencia:
- Localiza la pose que contiene la cara del MetaHuman (normalmente de
Use cached pose 'Body Pose'
) - Añade el nodo
Blend Realistic MetaHuman Lip Sync
- Conecta la pose al
Source Pose
del nodoBlend Realistic MetaHuman Lip Sync
- Conecta tu variable
RealisticLipSyncGenerator
al pinLip Sync Generator
- Conecta la salida del nodo
Blend Realistic MetaHuman Lip Sync
al pinResult
delOutput Pose
El Modelo Realista proporciona una calidad visual mejorada con movimientos de boca más naturales:
Nota: El Modelo Realista está diseñado exclusivamente para personajes MetaHuman y no es compatible con tipos de personajes personalizados.
Animación de Risa
También puedes añadir animaciones de risa que responderán dinámicamente a la risa detectada en el audio:
- Añade el nodo
Blend Runtime MetaHuman Laughter
- Conecta tu variable
RuntimeVisemeGenerator
al pinViseme Generator
- Si ya estás usando lip sync:
- Conecta la salida del nodo
Blend Runtime MetaHuman Lip Sync
alSource Pose
del nodoBlend Runtime MetaHuman Laughter
- Conecta la salida del nodo
Blend Runtime MetaHuman Laughter
al pinResult
delOutput Pose
- Conecta la salida del nodo
- Si usas solo risa sin lip sync:
- Conecta tu pose fuente directamente al
Source Pose
del nodoBlend Runtime MetaHuman Laughter
- Conecta la salida al pin
Result
- Conecta tu pose fuente directamente al
Cuando se detecta risa en el audio, tu personaje se animará dinámicamente en consecuencia:
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:
- Agrega un nodo
Layered blend per bone
entre tus animaciones corporales y la salida final. Asegúrate de queUse Attached Parent
sea verdadero. - Configura la capa:
- Añade 1 elemento al array
Layer Setup
- Añade 3 elementos a
Branch Filters
para la capa, con los siguientesBone Name
:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Añade 1 elemento al array
- 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. - Realiza las conexiones:
- Animaciones existentes (como
BodyPose
) → entradaBase 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
- Animaciones existentes (como
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:
- Después de tu nodo
Blend Runtime MetaHuman Lip Sync
oBlend Realistic MetaHuman Lip Sync
, añade un nodoModify Curve
- Haz clic derecho en el nodo
Modify Curve
y selecciona Add Curve Pin - Añade un pin de curva con el nombre
CTRL_expressions_tongueOut
- Establece la propiedad Apply Mode del nodo en Scale
- 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:
- Después de tu nodo de mezcla de sincronización labial, añade un nodo
Modify Curve
- Haz clic derecho en el nodo
Modify Curve
y selecciona Add Curve Pin - Añade un pin de curva con el nombre
CTRL_expressions_jawOpen
- Establece la propiedad Apply Mode del nodo en Scale
- 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
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
El nodo Blend Runtime MetaHuman Lip Sync
tiene opciones de configuración en su panel de propiedades:
Propiedad | Valor por Defecto | Descripción |
---|---|---|
Interpolation Speed | 25 | Controla 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 Time | 0.2 | La 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. |
El nodo Blend Realistic MetaHuman Lip Sync
tiene opciones de configuración en su panel de propiedades:
Propiedad | Valor por Defecto | Descripción |
---|---|---|
Interpolation Speed | 30 | Controla la rapidez con la que los movimientos labiales transicionan entre posiciones. Valores más altos resultan en transiciones más rápidas y abruptas. |
Reset Time | 0.2 | La 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:
Propiedad | Valor por Defecto | Descripción |
---|---|---|
Interpolation Speed | 25 | Controla 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 Time | 0.2 | La 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 Weight | 0.7 | Escala 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ón | Modelo Estándar | Modelo Realista |
---|---|---|
Compatibilidad de Personajes | MetaHumans y todos los tipos de personajes personalizados | Solo MetaHumans |
Calidad Visual | Buena sincronización labial con rendimiento eficiente | Realismo mejorado con movimientos de boca más naturales |
Rendimiento | Optimizado para todas las plataformas incluyendo móvil/VR | Requisitos de recursos ligeramente superiores |
Casos de Uso | Aplicaciones generales, juegos, VR/AR, móvil | Experiencias cinematográficas, interacciones de personajes en primer plano |
Compatibilidad con Versiones del Motor
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.