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.

Observação: 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 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 (Observação: A partir do UE 5.6, esta etapa não é mais necessária, pois a funcionalidade MetaHuman está integrada diretamente ao motor)
  2. Você tem pelo menos um personagem MetaHuman baixado e disponível em seu projeto
  3. O plugin Runtime MetaHuman Lip Sync está instalado

Plugins Adicionais:

Configuração Específica por Plataforma

Configuração para Android / Meta Quest

Se você estiver 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:

  1. Vá para Editar > Configurações do Projeto
  2. Navegue até Plataformas > Android
  3. Em Plataformas - Android, seção Build, encontre Suportar x86_64 [também conhecido como x64] e certifique-se de que está desativado, conforme mostrado abaixo

Desativar Arquitetura Android x64

Isso ocorre porque o plugin atualmente suporta apenas 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 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

Face Animation Blueprint

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

Abra diretamente o Face_AnimBP padrão e faça suas modificações. Quaisquer alterações afetarão 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.

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.

  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 grafo

Criando Runtime Viseme Generator

Passo 3: Configurar o 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.

Esta abordagem realiza a sincronização labial em tempo real enquanto fala no microfone:

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

Nós copiáveis.

Sincronização Labial Durante Captura de Áudio

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:

Sincronização Labial

  1. Localize a pose que contém a face do MetaHuman (tipicamente 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

Misturar Runtime MetaHuman Lip Sync

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

Sincronização Labial

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á estiver 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

Misturar Runtime MetaHuman Laughter

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

Riso

Combinando com Animações Corporais

Para aplicar sincronização labial e riso junto com animações corporais existentes sem sobrescrevê-las:

  1. Adicione um nó Layered blend per bone entre suas animações corporais e a saída final. Certifique-se que Use Attached Parent esteja verdadeiro.
  2. Configure a camada:
    • Adicione 1 item ao array Layer Setup
    • Adicione 3 items aos Branch Filters para a camada, com os seguintes Bone Names:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Faça as conexões:
    • Animações existentes (como BodyPose) → entrada Base Pose
    • Saída de animação facial (dos nós de sincronização labial e/ou riso) → entrada Blend Poses 0
    • Nó de camada misturada → pose Result final

Mistura em Camada por Osso

Por que isso funciona: Os filtros de ramo isolam os ossos de animação facial, permitindo que a sincronização labial e o 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 sincronização labial 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 o 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 a sincronização labial/riso) ou depois delas (deixando a sincronização labial/riso se misturar sobre suas animações existentes). Essa flexibilidade permite combinar sincronização labial e riso com piscar de olhos, movimentos de sobrancelha, expressões emocionais e outras animações faciais sem conflitos.

Configuração

Configuração de Sincronização Labial

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

PropriedadePadrãoDescrição
Interpolation Speed25Controla a velocidade 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. Ú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 tem suas próprias opções de configuração:

PropriedadePadrãoDescrição
Interpolation Speed25Controla a velocidade 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. Ú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).