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:
- 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 para modelo estándar
Si planeas usar el Modelo Estándar (Más rápido), necesitarás instalar el plugin de extensión:
- Descarga el Standard Lip Sync Extension plugin 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 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 saltarte este paso.
- Para más información sobre cómo construir plugins manualmente, consulta el tutorial Building Plugins
Plugins adicionales
- Si planeas usar captura de audio (ej. entrada de micrófono), instala el plugin Runtime Audio Importer.
- Si planeas usar funcionalidad de texto a voz:
- Para TTS local, instala el plugin Runtime Text To Speech.
- Para proveedores externos de TTS (ElevenLabs, OpenAI), instala el plugin Runtime AI Chatbot Integrator.
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:
- Ve a Editar > Configuración del Proyecto
- Navega a Plataformas > Android
- 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
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
- UE 5.5 y versiones anteriores (o MetaHumans Legacy en UE 5.6+)
- Personajes de MetaHuman Creator en UE 5.6+
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
Tienes varias opciones para implementar la funcionalidad de Lip Sync:
- Editar Asset Predeterminado (Opción Más Simple)
- Crear un Duplicado
- Usar un 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 impactará a todos los personajes que usen el Animation Blueprint predeterminado.
- Duplica
Face_AnimBP
y asígnale un nombre descriptivo - Localiza la clase Blueprint de tu personaje (ej. 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 nuevo Animation Blueprint duplicado
Nota: Este enfoque te permite personalizar el Lip Sync para personajes específicos mientras dejas otros sin cambios.
Puedes implementar la mezcla de Lip Sync en cualquier Animation Blueprint que tenga acceso a los huesos faciales requeridos:
- Crea o usa 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 usado para cualquier personaje MetaHuman)
Nota: Este enfoque te da la máxima flexibilidad para integrarlo 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 facial ubicado en:
Content/LipSyncData/LipSync_Face_AnimBP
Este Animation Blueprint se encuentra en la carpeta de contenido del plugin y será sobrescrito con cada actualización del plugin. Para evitar perder tus personalizaciones, es altamente recomendado:
- Copiar este asset 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 de Runtime MetaHuman Lip Sync
Opciones Alternativas:
- Usar Instrucciones Legacy: Aún puedes seguir las instrucciones de UE 5.5 mencionadas arriba si estás trabajando con MetaHumans legacy o prefieres el flujo de trabajo tradicional
- Crear un 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 and Earlier" en su lugar.
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.
- 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 grafo
- 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 grafo
- (Opcional) Establece el Processing Chunk Size en el objeto Realistic MetaHuman Lip Sync Generator
Nota: El Modelo Realista está optimizado específicamente para Meta Los personajes humanos y no es compatible con tipos de personajes personalizados.
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 tasa 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 del lip sync
Para configurar 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.
Opciones de Optimización del Modelo
Por defecto, el Modelo Realista utiliza una versión cuantizada y altamente optimizada para mejorar significativamente el rendimiento y reducir el uso de CPU. Sin embargo, si deseas priorizar la máxima calidad visual posible sobre la optimización, puedes usar la versión original no optimizada del modelo.
Usando el Modelo Original No Optimizado:
En versiones futuras, habrá formas más automáticas y fáciles de usar para cambiar entre modelos optimizados y no optimizados a través de configuraciones. El método actual es una solución temporal pero funcional.
Para cambiar al modelo original no optimizado:
- Descarga el modelo original: Descargar desde Google Drive
- Localiza la carpeta del plugin en tu instalación del motor:
- Navega a tu directorio de instalación de UE, luego a
Engine\Plugins\Marketplace\
- Ejemplo (tu ruta será diferente):
F:\Epic Games\UE_5.6\Engine\Plugins\Marketplace\
- Busca una carpeta de plugin - el nombre exacto depende de tu versión del motor:
- Algunas versiones del motor usan nombres claros como
RuntimeMetaHumanLipSync
- Otras usan nombres ofuscados como
RuntimeM879a7d628ddcV1
- Algunas versiones del motor usan nombres claros como
- Navega a tu directorio de instalación de UE, luego a
- Navega a la carpeta de datos del modelo:
- Ve a
Content\RealisticModelData\
dentro de la carpeta del plugin - Deberías encontrar un archivo llamado
EpicMetaHumanLipSyncCpuModel.uasset
- Ve a
- Reemplaza el archivo del modelo:
- Extrae el archivo descargado
- Reemplaza el
EpicMetaHumanLipSyncCpuModel.uasset
existente con el del archivo descargado
- Reinicia tu proyecto para que los cambios surtan efecto Consideraciones de Rendimiento:
Versión del Modelo | Rendimiento | Calidad Visual | Casos de Uso Recomendados |
---|---|---|---|
Optimizado (Predeterminado) | Alto rendimiento, menor uso de CPU | Calidad excelente | La mayoría de proyectos, aplicaciones en tiempo real, escenarios críticos de rendimiento |
Original No Optimizado | Mayor uso de CPU | Máxima fidelidad visual | Producciones cinematográficas, renderizado offline, cuando la calidad es primordial |
Elige la versión que mejor se adapte a los requisitos de rendimiento y estándares de calidad de tu proyecto.
Para un funcionamiento fiable y consistente con el Modelo Realista, es requerido recrear el Generador de Lip Sync MetaHuman Realista cada vez que desees introducir nuevos datos de audio después de un periodo de inactividad. Esto se debe al comportamiento del runtime ONNX que puede hacer que el lip sync deje de funcionar al reutilizar generadores después de periodos de silencio.
Ejemplo de escenario: Si realizaste lip sync con TTS y luego lo detuviste, y más tarde deseas realizar lip sync nuevamente con nuevo audio, crea un nuevo Generador de Lip Sync MetaHuman Realista 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.
- Micrófono (Tiempo real)
- Micrófono (Reproducción)
- Texto-a-Voz (Local)
- Text-to-Speech (APIs Externas)
- Desde Archivo/Búfer de Audio
- Fuente de Audio Personalizada
Este enfoque realiza lip sync en tiempo real mientras se habla al micrófono:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Crea un Capturable Sound Wave usando Runtime Audio Importer
- Antes de comenzar a capturar audio, enlaza 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 usa 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
Este enfoque captura audio de un micrófono, luego lo reproduce con sincronización labial:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Crea un Capturable Sound Wave usando Runtime Audio Importer
- Inicia la captura de audio desde el micrófono
- Antes de reproducir el capturable sound wave, enlaza a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator
El Modelo Realista usa 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 tasa 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 desde texto y realiza sincronización labial:
- Modelo Estándar (Más Rápido)
- Realistic (Higher Quality) Model
- Usa Runtime Text To Speech para generar voz desde texto
- Usa Runtime Audio Importer para importar el audio sintetizado
- Antes de reproducir el sound wave importado, 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 Realista debido a conflictos con el runtime ONNX. Para la conversión de texto a voz con el modelo Realista, considera usar servicios externos de TTS (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o utiliza 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 tasa 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 síntesis de texto a voz en tiempo real con sincronización labial:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime Text To Speech para generar voz en tiempo real desde 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 Realista debido a conflictos con el runtime ONNX. Para la conversión de texto a voz con el modelo Realista, considera usar servicios externos de TTS (como OpenAI o ElevenLabs a través de Runtime AI Chatbot Integrator) o utiliza 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 tasa 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 utiliza el plugin Runtime AI Chatbot Integrator para generar voz sintetizada desde servicios de IA (OpenAI o ElevenLabs) y realizar lip sync:
- Modelo Estándar (Más Rápido)
- Modelo Realista (Mayor Calidad)
- Usa Runtime AI Chatbot Integrator para generar voz desde 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 usa 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 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.
Este enfoque utiliza el plugin Runtime AI Chatbot Integrator para generar habla sintetizada en streaming desde servicios de IA (OpenAI o ElevenLabs) y realizar lip sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Usa Runtime AI Chatbot Integrator para conectarte a APIs de TTS en streaming (como ElevenLabs Streaming API)
- Usa Runtime Audio Importer para importar los datos de audio sintetizados
- Antes de reproducir la onda de sonido en streaming, enlázate a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator
El Realistic Model utiliza el mismo flujo de trabajo de procesamiento de audio que el Standard Model, pero con la variable RealisticLipSyncGenerator
en lugar de VisemeGenerator
.
En cada uno de los ejemplos mostrados para el Standard Model, 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 un lip sync más receptivo, ajusta el cálculo en la función SetNumSamplesPerChunk
. Por ejemplo, dividir la tasa de muestreo por 150 (streaming cada ~6.67 ms) en lugar de 100 (streaming cada 10 ms) proporcionará actualizaciones de lip sync 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 disco o memoria
- Antes de reproducir el sonido importado, enlaza a su delegado
OnGeneratePCMData
- En la función enlazada, llama a
ProcessAudioData
desde tu Runtime Viseme Generator - Reproduce el sonido importado 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 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 tasa 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 una fuente de audio personalizada, necesitas:
- Modelo Estándar (Más Rápido)
- Realistic (Higher Quality) Model
- Datos de audio en formato PCM float (un array de muestras en punto flotante)
- La tasa de muestreo y número de canales
- Llama a
ProcessAudioData
desde tu Runtime Viseme Generator con estos parámetros
Aquí hay un ejemplo de transmisión de audio desde una fuente personalizada:
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.
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
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Localice la pose que contiene la cara del MetaHuman (típicamente de
Use cached pose 'Body Pose'
) - Añada el nodo
Blend Runtime MetaHuman Lip Sync
- Conecte la pose al
Source Pose
del nodoBlend Runtime MetaHuman Lip Sync
- Conecte su variable
RuntimeVisemeGenerator
al pinViseme Generator
- Conecte la salida del nodo
Blend Runtime MetaHuman Lip Sync
al pinResult
delOutput Pose
Cuando se detecte sincronización labial en el audio, su personaje se animará dinámicamente en consecuencia:
- Localice la pose que contiene la cara del MetaHuman (típicamente de
Use cached pose 'Body Pose'
) - Añada el nodo
Blend Realistic MetaHuman Lip Sync
- Conecte la pose al
Source Pose
del nodoBlend Realistic MetaHuman Lip Sync
- Conecte su variable
RealisticLipSyncGenerator
al pinLip Sync Generator
- Conecte 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 solo usas 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 detecte risa en el audio, tu personaje se animará dinámicamente de acuerdo a ello:
Combinación con Animaciones Corporales
Para aplicar lip sync y risa junto con animaciones corporales existentes sin sobrescribirlas:
- Añade un nodo
Layered blend per bone
entre tus animaciones corporales y la salida final. Asegúrate de queUse Attached Parent
sea verdadero. - 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 siguientesBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Añade 1 item al array
- Realiza las conexiones:
- Animaciones existentes (como
BodyPose
) → entradaBase 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
- Animaciones existentes (como
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
- 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 |
---|---|---|
Velocidad de Interpolación | 25 | Controla 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 Reinicio | 0.2 | La 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. |
El nodo Blend Realistic MetaHuman Lip Sync
tiene opciones de configuración en su panel de propiedades:
Propiedad | Valor por defecto | Descripción |
---|---|---|
Velocidad de Interpolación | 30 | Controla qué tan rápido transicionan los movimientos labiales entre posiciones. Valores más altos resultan en transiciones más rápidas y abruptas. |
Tiempo de Reinicio | 0.2 | La 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:
Propiedad | Valor por defecto | Descripción |
---|---|---|
Velocidad de Interpolación | 25 | Controla 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 Reinicio | 0.2 | La 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 Risa | 0.7 | Escala 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ón | Modelo Estándar | Modelo Realista |
---|---|---|
Compatibilidad con Personajes | MetaHumans y todos los tipos de personajes personalizados | Solo MetaHumans |
Calidad Visual | Buen lip sync con rendimiento eficiente | Realismo mejorado con movimientos bucales más naturales |
Rendimiento | Optimizado para todas las plataformas incluyendo móvil/VR | Requerimientos de recursos ligeramente mayores |
Casos de Uso | Aplicaciones generales, juegos, VR/AR, móvil | Experiencias cinemáticas, interacciones cercanas con personajes |
Compatibilidad con Versiones del Motor
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.