Como usar o plugin
Este guia orienta você através do processo de configuração do Runtime MetaHuman Lip Sync para seus personagens MetaHuman.
Nota: O Runtime MetaHuman Lip Sync funciona com MetaHumans e personagens personalizados. O plugin suporta vários tipos de personagens, incluindo:
- Personagens comerciais populares (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, etc)
- Personagens com blendshapes baseados em FACS
- Modelos que usam os padrões de blendshape ARKit
- Personagens com conjuntos de fonemas Preston Blair
- Sistemas de fonemas do 3ds Max
- Qualquer personagem com morph targets personalizados para expressões faciais
Para instruções detalhadas sobre como configurar personagens personalizados, incluindo referências de mapeamento de visemas para todos os padrões acima, consulte o Guia de configuração para personagens personalizados.
Pré-requisitos
Antes de começar, certifique-se de que:
- O plugin MetaHuman está ativado em seu projeto
- Você tem pelo menos um personagem MetaHuman baixado e disponível em seu projeto
- O plugin Runtime MetaHuman Lip Sync está instalado
Plugins adicionais:
- Se você planeja usar captura de áudio (por exemplo, entrada de microfone), instale o plugin Runtime Audio Importer.
- Se você planeja usar a funcionalidade texto-para-voz, instale o plugin Runtime Text To Speech.
Configuração específica por plataforma
Configuração para Android / Meta Quest
Se você está direcionando para plataformas Android ou Meta Quest e encontrar erros de compilação com este plugin, será necessário desativar a arquitetura Android x86_64 (x64) nas configurações do seu projeto:
- Vá para Editar > Configurações do Projeto
- Navegue até Plataformas > Android
- Em Plataformas - Android, seção Build, encontre Suportar x86_64 [também conhecido como x64] e certifique-se de que está desativado, como mostrado abaixo
Isso ocorre porque o plugin atualmente só suporta as arquiteturas arm64-v8a e armeabi-v7a para plataformas Android / Meta Quest.
Processo de configuração
Passo 1: Localizar e modificar o Blueprint de animação facial
Você precisa modificar um Blueprint de animação que será usado para as animações faciais do seu personagem MetaHuman. O Blueprint de animação facial padrão do MetaHuman está localizado em:
Content/MetaHumans/Common/Face/Face_AnimBP
Você tem várias opções para implementar a funcionalidade de lip sync:
- Editar Asset Padrão (Opção Mais Simples)
- Criar Duplicata
- Usar Animation Blueprint Personalizado
Abra diretamente o Face_AnimBP
padrão e faça suas modificações. Qualquer alteração afetará todos os personagens MetaHuman que usam este Animation Blueprint.
Observação: Esta abordagem é conveniente, mas impactará todos os personagens que usam o Animation Blueprint padrão.
- Duplique
Face_AnimBP
e dê um nome descritivo - Localize a classe Blueprint do seu personagem (por exemplo, para o personagem "Bryan", estaria em
Content/MetaHumans/Bryan/BP_Bryan
) - Abra o Blueprint do personagem e encontre o componente Face
- Altere a propriedade Anim Class para seu novo Animation Blueprint duplicado
Observação: Esta abordagem permite personalizar o lip sync para personagens específicos enquanto mantém outros inalterados.
Você pode implementar a mistura de lip sync em qualquer Animation Blueprint que tenha acesso aos ossos faciais necessários:
- Crie ou use um Animation Blueprint personalizado existente
- Certifique-se de que seu Animation Blueprint funcione com um esqueleto que contenha os mesmos ossos faciais do
Face_Archetype_Skeleton
padrão do MetaHuman (que é o esqueleto padrão usado para qualquer personagem MetaHuman)
Observação: Esta abordagem oferece máxima flexibilidade para integração com sistemas de animaç ão personalizados.
Importante: A mistura do Runtime MetaHuman Lip Sync pode ser implementada em qualquer asset de Animation Blueprint que tenha acesso a uma pose contendo os ossos faciais presentes no Face_Archetype_Skeleton
padrão do MetaHuman. Você não está limitado às opções acima - estas são apenas abordagens comuns de implementação.
Passo 2: Configuração do Event Graph
Abra seu Face Animation Blueprint e mude para o Event Graph
. Você precisará criar um Runtime Viseme Generator que processará dados de áudio e gerará visemas.
- Adicione o nó
Event Blueprint Begin Play
se ele não existir - Adicione o nó
Create Runtime Viseme Generator
e conecte-o ao evento Begin Play - Salve a saída como uma variável (ex: "VisemeGenerator") para uso em outras partes do grafo
Passo 3: Configurar processamento de entrada de áudio
Você precisa configurar um método para processar a entrada de áudio. Há várias maneiras de fazer isso dependendo da sua fonte de áudio.
- Microfone (Tempo real)
- Microfone (Reprodução)
- Text-to-Speech (Local)
- Text-to-Speech (APIs Externas)
- De Arquivo/Buffer de Áudio
- Fonte de Áudio Personalizada
Esta abordagem realiza lip sync em tempo real enquanto fala no microfone:
- Crie um Capturable Sound Wave usando Runtime Audio Importer
- Antes de começar a capturar áudio, vincule ao delegate
OnPopulateAudioData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator - Comece a capturar áudio do microfone
Esta abordagem captura áudio de um microfone, depois o reproduz com lip sync:
- Crie um Capturable Sound Wave usando Runtime Audio Importer
- Comece a captura de áudio do microfone
- Antes de reproduzir o capturable sound wave, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator
- Regular
- Streaming
Esta abordagem sintetiza fala a partir de texto e realiza lip sync:
- Use Runtime Text To Speech para gerar fala a partir de texto
- Use Runtime Audio Importer para importar o áudio sintetizado
- Antes de reproduzir o sound wave importado, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator
Esta abordagem usa síntese de text-to-speech em streaming com lip sync em tempo real:
- Use Runtime Text To Speech para gerar fala em streaming a partir de texto
- Use Runtime Audio Importer para importar o áudio sintetizado
- Antes de reproduzir o sound wave de streaming, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator
- Regular
- Streaming
Esta abordagem usa o plugin Runtime AI Chatbot Integrator para gerar fala sintetizada de serviços de IA e realizar lip sync:
- Use Runtime AI Chatbot Integrator para gerar fala a partir de texto usando APIs externas (OpenAI, ElevenLabs, etc.)
- Use Runtime Audio Importer para importar os dados de áudio sintetizados
- Antes de reproduzir o sound wave importado, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator
Esta abordagem usa o plugin Runtime AI Chatbot Integrator para gerar fala em streaming de serviços de IA e realizar lip sync:
- Use Runtime AI Chatbot Integrator para conectar-se a APIs de TTS em streaming (como ElevenLabs Streaming API)
- Use Runtime Audio Importer para importar os dados de áudio sintetizados
- Antes de reproduzir o sound wave de streaming, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator
Esta abordagem usa arquivos de áudio pré-gravados ou buffers de áudio para lip sync:
- Use Runtime Audio Importer para importar um arquivo de áudio do disco ou memória
- Antes de reproduzir o sound wave importado, vincule ao seu delegate
OnGeneratePCMData
- Na função vinculada, chame
ProcessAudioData
do seu Runtime Viseme Generator - Reproduza o sound wave importado e observe a animação de lip sync
Para uma fonte de áudio personalizada, você precisa:
- Dados de áudio em formato PCM float (um array de amostras em ponto flutuante)
- A taxa de amostragem e número de canais
- Chame
ProcessAudioData
do seu Runtime Viseme Generator com estes parâmetros
Aqui está um exemplo de streaming de áudio de uma fonte personalizada:
Passo 4: Configuração do Anim Graph
Após configurar o Event Graph, mude para o Anim Graph
para conectar o viseme generator à animação do personagem:
Lip Sync
- Localize a pose que contém o rosto do MetaHuman (tipicamente de
Use cached pose 'Body Pose'
) - Adicione o nó
Blend Runtime MetaHuman Lip Sync
- Conecte a pose ao
Source Pose
do nóBlend Runtime MetaHuman Lip Sync
- Conecte sua variável
RuntimeVisemeGenerator
ao pinoViseme Generator
- Conecte a saída do nó
Blend Runtime MetaHuman Lip Sync
ao pinoResult
doOutput Pose
Quando lip sync for detectado no áudio, seu personagem animará dinamicamente de acordo:
Animação de Riso
Você também pode adicionar animações de riso que responderão dinamicamente ao riso detectado no áudio:
- Adicione o nó
Blend Runtime MetaHuman Laughter
- Conecte sua variável
RuntimeVisemeGenerator
ao pinoViseme Generator
- Se você já estiver usando lip sync:
- Conecte a saída do nó
Blend Runtime MetaHuman Lip Sync
aoSource Pose
do nóBlend Runtime MetaHuman Laughter
- Conecte a saída do nó
Blend Runtime MetaHuman Laughter
ao pinoResult
doOutput Pose
- Conecte a saída do nó
- Se usando apenas riso sem lip sync:
- Conecte sua pose fonte diretamente ao
Source Pose
do nóBlend Runtime MetaHuman Laughter
- Conecte a saída ao pino
Result
- Conecte sua pose fonte diretamente ao
Quando riso for detectado no áudio, seu personagem animará dinamicamente de acordo:
Combinando com Animações Corporais
Para aplicar lip sync e riso junto com animações corporais existentes sem sobrescrevê-las:
- Adicione um nó
Layered blend per bone
entre suas animações corporais e a saída final. Certifique-se queUse Attached Parent
esteja ativado. - Configure a camada:
- Adicione 1 item ao array
Layer Setup
- Adicione 3 items aos
Branch Filters
para a camada, com os seguintesBone Name
s:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Adicione 1 item ao array
- Faça as conexões:
- Animações existentes (como
BodyPose
) → entradaBase Pose
- Saída de animação facial (dos nós de lip sync e/ou riso) → entrada
Blend Poses 0
- Nó de layered blend → pose
Result
final
- Animações existentes (como
Por que isso funciona: Os branch filters isolam os ossos de animação facial, permitindo que lip sync e riso se misturem exclusivamente com movimentos faciais enquanto preservam as animações corporais originais. Isso corresponde à estrutura do rig facial do MetaHuman, garantindo integração natural.
Observação: Os recursos de lip sync e riso são projetados para funcionar de forma não destrutiva com sua configuração de animação existente. Eles afetam apenas os ossos faciais específicos necessários para movimento da boca, deixando outras animações faciais intactas. Isso significa que você pode integrá-los com segurança em qualquer ponto da sua cadeia de animação - seja antes de outras animações faciais (permitindo que essas animações sobrescrevam lip sync/riso) ou depois delas (deixando lip sync/riso se misturar sobre suas animações existentes). Essa flexibilidade permite combinar lip sync e riso com piscar de olhos, movimentos de sobrancelhas, expressões emocionais e outras animações faciais sem conflitos.
Configuração
Configuração de Lip Sync
O nó Blend Runtime MetaHuman Lip Sync
tem opções de configuração em seu painel de propriedades:
Propriedade | Padrão | Descrição |
---|---|---|
Interpolation Speed | 25 | Controla a velocidade das transições entre visemas. Valores maiores resultam em transições mais rápidas e abruptas. |
Reset Time | 0.2 | A duração em segundos após a qual o lip sync é reiniciado. Útil para evitar que o lip sync continue após o áudio parar. |
Configuração de Riso
O nó