Pular para o conteúdo principal

Auxiliares de Animação dos Olhos

Além da sincronização labial, o plugin Runtime MetaHuman Lip Sync inclui dois utilitários auxiliares opcionais para animar os olhos de MetaHumans:

  • Auto Blink: um auxiliar que produz piscadas naturais e aleatórias em um MetaHuman
  • Eyes Aim: um nó de Animation Blueprint que faz os olhos de um MetaHuman olharem para uma localização no espaço do mundo

Esses recursos são completamente independentes da sincronização labial e podem ser usados sozinhos, juntos ou combinados com os nós de sincronização labial. Eles foram projetados como auxiliares leves e prontos para uso, adicionando comportamento ocular realista sem a necessidade de criá-lo manualmente.

Pré-visualizações dos Recursos

Piscada Automática: piscadas automáticas dos olhos
Eyes Aim: rastreando a câmera do jogador
Eyes Aim: seguindo um alvo em movimento
Quando usar esses helpers

Se seu pipeline de animação facial já inclui piscadas e olhar dinâmico, você pode pular esta página. Esses helpers existem para casos onde você deseja um comportamento ocular realista sem precisar criá-lo manualmente, por exemplo, quando suas sequências de animação não incluem piscadas, ou quando você precisa que os olhos sigam dinamicamente um alvo em movimento (algo que sequências de animação estáticas não conseguem fazer). Eles também podem ser sobrepostos sobre animações faciais existentes para adicionar peças faltantes, como piscadas sobre uma sequência que apenas anima a boca.

O helper Auto Blink produz piscadas aleatórias e de aparência natural, acionando as curvas CTRL_L_eye_blink e CTRL_R_eye_blink do Control Rig da Face MetaHuman.

Como Funciona

A cada frame, você chama Update MetaHuman Auto Blink do Event Graph do seu Face Animation Blueprint e passa o delta time do frame. A função:

  1. Rastreia o estado por personagem (próximo tempo de piscada, fase atual de aberto/fechado, etc.) indexado pelo AnimInstance que a chamou
  2. Retorna dois valores float no intervalo 0..1, um para o olho esquerdo e outro para o direito, representando o quão fechado cada olho está atualmente
  3. Você então armazena esses valores em variáveis do Blueprint e os alimenta no nó Control Rig no Anim Graph

Configuração

Dois passos: adicione a chamada de piscada ao seu Event Graph, então alimente os valores em um nó Control Rig no Anim Graph.

1. Event Graph: acione os valores de piscada a cada frame

No seu Face Animation Blueprint (ex: Face_AnimBP ou sua versão duplicada/copiada, veja Guia de Configuração), abra o Event Graph e adicione o seguinte ao Event Blueprint Update Animation:

  1. Chame Update MetaHuman Auto Blink
  2. Conecte Delta Time X (do evento) a Delta Seconds
  3. (Opcional) Configure o struct Config. Os padrões já parecem naturais
  4. Promova Left Blink Value e Right Blink Value para variáveis do Blueprint (ex: LeftBlinkValue, RightBlinkValue)

Configuração do Event Graph do Auto Blink

2. Anim Graph: alimente os valores no Face Control Rig

No Anim Graph do mesmo Animation Blueprint:

  1. Coloque um nó Control Rig após toda outra lógica facial que possa escrever nas curvas de piscada (ex: após Blend Runtime MetaHuman Lip Sync e quaisquer camadas de animação facial personalizadas)
  2. No painel Details do nó, defina Control Rig Class para o Control Rig da face do seu MetaHuman. O caminho é tipicamente:
    • /All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig
    • Seu projeto pode ter um caminho diferente dependendo de como o MetaHuman foi importado.
  3. No painel Details, expanda a seção Input e habilite Use Pin para:
    • CTRL_L_eye_blink
    • CTRL_R_eye_blink
  4. Conecte sua variável LeftBlinkValue a CTRL_L_eye_blink
  5. Conecte sua variável RightBlinkValue a CTRL_R_eye_blink

Configuração do Anim Graph do Auto Blink

A colocação é importante

Coloque o nó Control Rig após os nós de blend de lip sync (e quaisquer outros nós de animação facial) para que os valores de piscada não sejam sobrescritos por outra lógica.

Configuração

O nó Update MetaHuman Auto Blink aceita um struct Config opcional. Os padrões já parecem naturais para a maioria dos personagens, expanda abaixo se quiser ajustar o comportamento.

Propriedades do Config

Temporização

PropriedadePadrãoDescrição
Min Time Between Blinks2.0 sIntervalo mínimo entre piscadas enquanto os olhos estão totalmente abertos.
Max Time Between Blinks4.0 sIntervalo máximo entre piscadas. O intervalo real é aleatório entre o mínimo e o máximo.
Min Closed Hold Time0.04 sTempo mínimo que os olhos permanecem totalmente fechados.
Max Closed Hold Time0.08 sTempo máximo que os olhos permanecem totalmente fechados.

Interpolação

PropriedadePadrãoDescrição
Close Interp Speed35.0Velocidade ao fechar os olhos. Humanos fecham os olhos mais rápido do que os abrem, então isso é intencionalmente maior que a velocidade de abertura.
Open Interp Speed18.0Velocidade ao abrir os olhos.
Closed Threshold0.97Valor no qual a piscada é considerada "totalmente fechada" e a fase de espera começa.
Open Threshold0.02Valor no qual a piscada é considerada "totalmente aberta" e a próxima piscada é agendada.

Diversos

PropriedadePadrãoDescrição
Independent EyesfalseQuando true, o olho esquerdo e o direito piscam independentemente com temporizações separadas. Quando false (padrão), ambos os olhos piscam em sincronia perfeita.
bEnabled (pino da função)trueQuando false, os olhos se abrem suavemente e as piscadas param. Útil para cutscenes, sono, morte, etc.

Controle em Tempo de Execução

Você também pode chamar Reset Auto Blink State para limpar explicitamente o estado interno de um determinado AnimInstance (ex: ao renascer um personagem ou alternar estados cinematográficos).

Eyes Aim

O helper Eyes Aim é um nó do Animation Blueprint (Runtime MetaHuman Eyes Aim) que faz os olhos do personagem rastrearem uma localização no espaço do mundo — por exemplo, a câmera do jogador, outro ator, ou qualquer alvo em movimento. Ele suporta clamping de yaw/pitch, suavização, proteção anti-flip quando o alvo passa atrás da cabeça e micro-sacadas opcionais para maior realismo.

Escolhendo um Modo

O nó suporta dois modos, selecionados através do menu suspenso Mode no painel Details do nó:

ModoO que ele acionaOnde colocá-lo
Curves (padrão)As curvas de olhar do Control Rig da Face (CTRL_expressions_eyeLook*)No Face Animation Blueprint (ex: Face_AnimBP), antes do nó Control Rig
BonesOs ossos FACIAL_L_Eye / FACIAL_R_Eye diretamente, ignorando o Control RigNo Face Post Process Animation Blueprint (ex: Face_PostProcess_AnimBP), após o nó AnimNode_RigLogic

O modo Curves é o padrão recomendado. Ele se compõe de forma limpa com outros sistemas faciais baseados em curvas (lip sync, expressões, blendshapes ARKit, etc.), já que os valores são combinados através da avaliação normal do Control Rig, em vez de disputar as transformações dos ossos.

Quando o modo Curves não funciona, use o modo Bones

Em algumas variantes do MetaHuman (notadamente rigs mais antigos, incluindo alguns baixados via Quixel Bridge), as curvas de olhar não acionam os olhos de fato. O sintoma visível é que os olhos olham para baixo com as pupilas quase escondidas quando o nó no modo Curves está ativo, independentemente da localização do alvo.

Se você vir isso, mude para o modo Bones. O modo Bones rotaciona diretamente os ossos dos olhos, então funciona em todas as variantes do MetaHuman, independentemente de como o Control Rig está configurado. Veja a aba Bones em Configuração abaixo.

Configuração

A configuração padrão. O nó reside no Face Animation Blueprint padrão e aciona as curvas de olhar do Control Rig da Face.

Dois passos: adicione o nó ao seu Anim Graph, então alimente-o com uma localização alvo do Event Graph.

1. Anim Graph: adicione o nó

No Anim Graph do seu Face Animation Blueprint:

  1. Adicione um nó Runtime MetaHuman Eyes Aim
  2. Deixe Mode definido como Curves no painel Details
  3. Coloque-o após toda outra lógica facial que possa escrever nas curvas de olhar (lip sync, animações personalizadas, etc.), mesmo princípio do nó Control Rig do Auto Blink
  4. Conecte a pose existente a Source Pose
  5. Conecte a saída ao próximo nó em sua cadeia (ou Output Pose)
  6. Crie uma variável Vector do Blueprint (ex: TargetWorldLocation) e conecte-a ao pino Target World Location do nó. Você atualizará esta variável do Event Graph no próximo passo.

Configuração do Anim Graph do Eyes Aim

2. Event Graph: alimente uma localização alvo

O pino Target World Location espera um FVector no espaço do mundo. Um caso comum é fazer o MetaHuman olhar para a câmera do jogador. Em Event Blueprint Update Animation:

  1. Obtenha Player Camera Manager (Player Index 0)
  2. Verifique Is Valid
  3. Se válido, chame Get Camera Location
  4. Armazene-o na variável do Blueprint TargetWorldLocation

Eyes Aim, rastreando a câmera

Para rastrear um ator arbitrário (NPC, item, ponto de interesse), obtenha a localização desse ator a cada frame e armazene-a na mesma variável. Para um ponto de olhar fixo, defina Target World Location uma vez ou como uma constante no painel Details do nó.

Configuração

Todas as configurações estão expostas no painel Details do nó Runtime MetaHuman Eyes Aim.

Mira & Clamp

Mira

PropriedadePadrãoDescrição
ModeCurvesSeleciona como os olhos são acionados. Veja Escolhendo um Modo.
Target World Location(0,0,0)Ponto no espaço do mundo para o qual os olhos olham. Exposto como um pino por padrão.
bEnabledtrueQuando false, os olhos retornam suavemente para a frente e ignoram o alvo. Exposto como um pino por padrão.

Clamp

PropriedadePadrãoDescrição
Max Yaw Degrees35°Deflexão horizontal máxima (yaw) da direção frontal da cabeça. Limitado de 0 a 80.
Max Pitch Degrees25°Deflexão vertical máxima (pitch) da direção frontal da cabeça. Limitado de 0 a 80.
Anti Flip BehindtruePrevine que os olhos virem quando o alvo passa atrás da cabeça.
Suavização & Sacadas

Suavização

PropriedadePadrãoDescrição
Interp Speed12.0Velocidade de suavização para o movimento dos olhos. Maior = mais rápido, menor = mais lânguido.

Sacadas

Micro-sacadas são pequenos desvios de olhar aleatórios que os olhos reais realizam constantemente. Adicioná-las evita a aparência de "olho morto" de um rastreamento perfeitamente suave.

PropriedadePadrãoDescrição
Enable SaccadestrueAtiva/desativa micro-sacadas.
Saccade Yaw Amplitude Deg1.5°Máximo tremor horizontal por sacada. Valores pequenos (1–2°) parecem naturais; valores maiores parecem nervosos.
Saccade Pitch Amplitude Deg1.0°Máximo tremor vertical por sacada. Geralmente ligeiramente menor que a amplitude de yaw.
Min Saccade Interval0.6 sTempo mínimo entre sacadas.
Max Saccade Interval2.5 sTempo máximo entre sacadas. Valores maiores parecem mais calmos, valores menores parecem mais inquietos.
Bones (apenas modo Bones)
PropriedadePadrãoDescrição
Left Eye BoneFACIAL_L_EyeNome do osso do olho esquerdo. Corresponde ao esqueleto facial padrão do MetaHuman.
Right Eye BoneFACIAL_R_EyeNome do osso do olho direito. Corresponde ao esqueleto facial padrão do MetaHuman.
Calibração (apenas modo Curves)

Esses valores definem como os ângulos do espaço da cabeça mapeiam para os valores das curvas de olhar do CR da Face MetaHuman. Os padrões são ajustados para o CR da Face MetaHuman padrão e raramente precisam ser alterados.

PropriedadePadrãoDescrição
Yaw Degrees Per Unit Curve30°Ângulo que mapeia para um valor de curva de 1.0 para curvas de olhar de yaw.
Pitch Degrees Per Unit Curve25°Ângulo que mapeia para um valor de curva de 1.0 para curvas de olhar de pitch.

Combinando com Lip Sync e Outras Animações

Ambos os helpers são projetados para coexistir com os nós de lip sync do plugin e qualquer animação facial personalizada que você já tenha. A regra geral: coloque os nós Eyes Aim e Control Rig (auto-blink) após o lip sync e qualquer animação facial personalizada, para que seus valores não sejam sobrescritos downstream.

Ver Fluxograma de Execução Detalhado (Modo Curves vs. Modo Bones)

Dependendo se seu rig MetaHuman usa o Modo Curves recomendado ou o Modo Bones alternativo, a colocação da sua lógica de execução mudará. Expanda o gráfico abaixo para ver a ordem exata de execução para ambos os pipelines:

O Auto Blink e a lip sync ainda residem no Face AnimBP normal em ambos os modos.

Para detalhes sobre camadas com animações corporais, consulte Combining with Existing Animations.

Notas e Limitações

Esses helpers são específicos do MetaHuman. Eles dependem dos nomes de curvas padrão do Control Rig facial do MetaHuman (CTRL_L_eye_blink, CTRL_R_eye_blink, CTRL_expressions_eyeLook*) e dos ossos oculares padrão (FACIAL_L_Eye, FACIAL_R_Eye). Eles não são destinados a personagens personalizados que não sejam MetaHuman.

Precisa de Ajuda?

Join our Discord
online · support

Para solicitações de desenvolvimento personalizado, entre em contato com [email protected].