Pular para o conteúdo principal

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 tanto com MetaHumans quanto com 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 do 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 de personagens personalizados.

Pré-requisitos

Antes de começar, certifique-se de que:

  1. O plugin MetaHuman está ativado em seu projeto (Nota: A partir do UE 5.6, esta etapa não é mais necessária, pois a funcionalidade MetaHuman está integrada diretamente no engine)
  2. Você tem pelo menos um personagem MetaHuman baixado e disponível em seu projeto
  3. O plugin Runtime MetaHuman Lip Sync está instalado

Plugin de Extensão do Modelo Padrão

Se você planeja usar o Modelo Padrão (Mais Rápido), você precisará instalar o plugin de extensão:

  1. Baixe o plugin de extensão Standard Lip Sync Extension no Google Drive
  2. Extraia a pasta do arquivo baixado para a pasta Plugins do seu projeto (crie esta pasta se ela não existir)
  3. Certifique-se de que seu projeto está configurado como um projeto C++ (mesmo que você não tenha nenhum código C++)
  4. Recompile seu projeto
nota
  • Esta extensão é necessária apenas se você quiser usar o Modelo Padrão. Se você só precisa do Modelo Realista, você pode pular esta etapa.
  • Para mais informações sobre como compilar plugins manualmente, consulte o tutorial Construindo Plugins

Plugins Adicionais

  • Se você planeja usar captura de áudio (por exemplo, entrada de microfone), instale o plugin Runtime Audio Importer.
  • Se você planeja usar funcionalidade de texto-para-voz com meus plugins (você pode ter seu próprio TTS personalizado ou outra entrada de áudio), então, além do plugin Runtime Audio Importer, instale também:

Processo de Configuração

Passo 1: Localize e modifique o Blueprint de animação facial

Você precisa modificar um Animation Blueprint que será usado para as animações faciais do seu personagem MetaHuman. O Animation Blueprint facial padrão do MetaHuman está localizado em:

Content/MetaHumans/Common/Face/Face_AnimBP

Blueprint de Animação Facial

Você tem várias opções para implementar a funcionalidade de lip sync:

Abra o Face_AnimBP padrão diretamente e faça suas modificações. Quaisquer alterações afetarão todos os personagens MetaHuman usando este Animation Blueprint.

Nota: Esta abordagem é conveniente, mas impactará todos os personagens usando o Animation Blueprint padrão.

Importante: A mesclagem do Runtime MetaHuman Lip Sync pode ser implementada em qualquer ativo 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 de implementação comuns.

Passo 2: Configuração do Event Graph

Abra seu Face Animation Blueprint e mude para o Event Graph. Você precisará criar um gerador que processará dados de áudio e gerará animação de lip sync.

  1. Adicione o nó Event Blueprint Begin Play se ele não existir ainda
  2. Adicione o nó Create Runtime Viseme Generator e conecte-o ao evento Begin Play
  3. Salve a saída como uma variável (ex: "VisemeGenerator") para uso em outras partes do gráfico

Criando Runtime Viseme Generator

Passo 3: Configure o processamento de entrada de áudio

Você precisa configurar um método para processar a entrada de áudio. Existem várias maneiras de fazer isso dependendo da sua fonte de áudio.

Esta abordagem executa lip sync em tempo real enquanto fala no microfone:

  1. Crie uma Capturable Sound Wave usando Runtime Audio Importer
  2. Antes de começar a capturar áudio, vincule-se ao delegado OnPopulateAudioData
  3. Na função vinculada, chame ProcessAudioData do seu Runtime Viseme Generator
  4. Inicie a captura de áudio do microfone

Nós copiáveis.

Lip Sync During Audio Capture

Passo 4: Configuração do Anim Graph

Após configurar o Event Graph, mude para o Anim Graph para conectar o gerador à animação do personagem:

Lip Sync

  1. Localize a pose que contém o rosto do MetaHuman (normalmente de Use cached pose 'Body Pose')
  2. Adicione o nó Blend Runtime MetaHuman Lip Sync
  3. Conecte a pose ao Source Pose do nó Blend Runtime MetaHuman Lip Sync
  4. Conecte sua variável RuntimeVisemeGenerator ao pino Viseme Generator
  5. Conecte a saída do nó Blend Runtime MetaHuman Lip Sync ao pino Result do Output Pose

Blend Runtime MetaHuman Lip Sync

Quando a sincronização labial é detectada no áudio, seu personagem animará dinamicamente de acordo:

Lip Sync

Animação de Riso

Você também pode adicionar animações de riso que responderão dinamicamente ao riso detectado no áudio:

  1. Adicione o nó Blend Runtime MetaHuman Laughter
  2. Conecte sua variável RuntimeVisemeGenerator ao pino Viseme Generator
  3. Se você já está usando sincronização labial:
    • Conecte a saída do nó Blend Runtime MetaHuman Lip Sync ao Source Pose do nó Blend Runtime MetaHuman Laughter
    • Conecte a saída do nó Blend Runtime MetaHuman Laughter ao pino Result do Output Pose
  4. Se usando apenas riso sem sincronização labial:
    • Conecte sua pose de origem diretamente ao Source Pose do nó Blend Runtime MetaHuman Laughter
    • Conecte a saída ao pino Result

Blend Runtime MetaHuman Laughter

Quando o riso é detectado no áudio, seu personagem animará dinamicamente de acordo:

Laughter

Combinando com Animações Faciais e Corporais

Para aplicar sincronização labial e risada juntamente com animações corporais existentes e animações faciais personalizadas (como expressões, emoções ou quaisquer outros movimentos faciais) sem substituí-las:

  1. Adicione um nó Layered blend per bone entre suas animações corporais e a saída final. Certifique-se de que Use Attached Parent esteja verdadeiro.
  2. Configure a estrutura de camadas:
    • Adicione 1 item ao array Layer Setup
    • Adicione 3 itens aos Branch Filters para a camada, com os seguintes Bone Names:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Importante para animações faciais personalizadas: Em Curve Blend Option, selecione "Use Max Value". Isso permite que animações faciais personalizadas (expressões, emoções, etc.) sejam adequadamente sobrepostas à sincronização labial.
  4. Faça as conexões:
    • Animações existentes (como BodyPose) → entrada Base Pose
    • Saída de animação facial (de nós de sincronização labial e/ou risada) → entrada Blend Poses 0
    • Nó de blend em camadas → pose Result final

Layered Blend Per Bone

Por que isso funciona: Os filtros de ramo isolam os ossos de animação facial, permitindo que sincronização labial e risada se misturem exclusivamente com movimentos faciais enquanto preservam as animações corporais originais. A opção de blend de curva "Use Max Value" pega o valor máximo de cada curva em vez de misturá-los aditivamente, permitindo que animações faciais personalizadas (como expressões e emoções) sejam adequadamente combinadas com sincronização labial sem conflitos. Isso corresponde à estrutura do rig facial do MetaHuman para integração natural.

Nota: Os recursos de sincronização labial e risada 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 substituam sincronização labial/risada) ou depois delas (deixando sincronização labial/risada se misturar sobre suas animações existentes). Essa flexibilidade permite que você combine sincronização labial e risada com piscar de olhos, movimentos de sobrancelhas, expressões emocionais e outras animações faciais sem conflitos.

Ajuste Fino do Comportamento de Sincronização Labial

Após configurar a funcionalidade básica de sincronização labial, você pode querer ajustar aspectos específicos do movimento da boca para melhor atender aos requisitos do seu projeto.

Controle de Protrusão da Língua

No modelo padrão de sincronização labial, você pode notar movimento excessivo da língua para frente durante certos fonemas. Para controlar a protrusão da língua:

  1. Após o nó Blend Runtime MetaHuman Lip Sync ou Blend Realistic MetaHuman Lip Sync, adicione um nó Modify Curve
  2. Clique com o botão direito no nó Modify Curve e selecione Add Curve Pin
  3. Adicione um pino de curva com o nome CTRL_expressions_tongueOut
  4. Defina a propriedade Apply Mode do nó para Scale
  5. Ajuste o parâmetro Value para controlar a extensão da língua (ex: 0.8 para reduzir a protrusão em 20%)

Controle de Abertura da Mandíbula

A sincronização labial realista pode produzir movimentos de mandíbula excessivamente responsivos dependendo do seu conteúdo de áudio e requisitos visuais. Para ajustar a intensidade da abertura da mandíbula:

  1. Após o nó de blend de sincronização labial, adicione um nó Modify Curve
  2. Clique com o botão direito no nó Modify Curve e selecione Add Curve Pin
  3. Adicione um pino de curva com o nome CTRL_expressions_jawOpen
  4. Defina a propriedade Apply Mode do nó para Scale
  5. Ajuste o parâmetro Value para controlar a amplitude de abertura da mandíbula (ex: 0.9 para reduzir o movimento da mandíbula em 10%)

Configuração

Configuração de Sincronização Labial

O nó Blend Runtime MetaHuman Lip Sync possui opções de configuração em seu painel de propriedades:

PropriedadePadrãoDescrição
Interpolation Speed25Controla a rapidez com que os movimentos labiais transitam entre visemas. Valores mais altos resultam em transições mais rápidas e abruptas.
Reset Time0.2A duração em segundos após a qual a sincronização labial é reiniciada. Isso é útil para evitar que a sincronização labial continue após o áudio ter parado.

Configuração de Riso

O nó Blend Runtime MetaHuman Laughter possui suas próprias opções de configuração:

PropriedadePadrãoDescrição
Interpolation Speed25Controla a rapidez com que os movimentos labiais transitam entre animações de riso. Valores mais altos resultam em transições mais rápidas e abruptas.
Reset Time0.2A duração em segundos após a qual o riso é reiniciado. Isso é útil para evitar que o riso continue após o áudio ter parado.
Max Laughter Weight0.7Escala a intensidade máxima da animação de riso (0.0 - 1.0).

Escolhendo Entre Modelos de Sincronização Labial

Ao decidir qual modelo de sincronização labial usar para seu projeto, considere estes fatores:

ConsideraçãoModelo PadrãoModelo Realista
Compatibilidade de PersonagensMetaHumans e todos os tipos de personagens personalizadosApenas MetaHumans
Qualidade VisualBoa sincronização labial com desempenho eficienteRealismo aprimorado com movimentos de boca mais naturais
DesempenhoOtimizado para todas as plataformas, incluindo mobile/VRRequisitos de recursos ligeiramente superiores
Casos de UsoAplicações gerais, jogos, VR/AR, mobileExperiências cinematográficas, interações de personagens em close-up

Compatibilidade com Versões do Engine

Problema de Compatibilidade com UE 5.2

Se você estiver usando Unreal Engine 5.2, o Modelo Realista pode não funcionar corretamente devido a um bug na biblioteca de reamostragem do UE. Para usuários do UE 5.2 que precisam de funcionalidade de sincronização labial confiável, por favor, use o Modelo Padrão em vez disso.

Este problema é específico do UE 5.2 e não afeta outras versões do engine.

Para a maioria dos projetos, o Modelo Padrão oferece um excelente equilíbrio entre qualidade e desempenho, enquanto suporta a mais ampla gama de tipos de personagens. O Modelo Realista é ideal quando você precisa da mais alta fidelidade visual especificamente para personagens MetaHuman em contextos onde a sobrecarga de desempenho é menos crítica.