Перейти к основному содержимому

Как использовать плагин

Это руководство проведёт вас через процесс настройки Runtime MetaHuman Lip Sync для ваших MetaHuman персонажей.

Примечание: Runtime MetaHuman Lip Sync работает как с MetaHuman, так и с пользовательскими персонажами. Плагин поддерживает различные типы персонажей, включая:

  • Популярных коммерческих персонажей (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe и др.)
  • Персонажей с FACS-based блендшейпами
  • Модели, использующие стандарты блендшейпов ARKit
  • Персонажей с наборами фонем Preston Blair
  • Системы фонем 3ds Max
  • Любых персонажей с пользовательскими морф-таргетами для мимики

Подробные инструкции по настройке пользовательских персонажей, включая справочники по маппингу визем для всех перечисленных стандартов, см. в руководстве по настройке пользовательских персонажей.

Требования

Перед началом убедитесь, что:

  1. Плагин MetaHuman включён в вашем проекте
  2. У вас есть хотя бы один MetaHuman персонаж, загруженный и доступный в проекте
  3. Установлен плагин Runtime MetaHuman Lip Sync

Дополнительные плагины:

  • Если вы планируете использовать захват аудио (например, ввод с микрофона), установите плагин Runtime Audio Importer.
  • Если вы планируете использовать текст-в-речь, установите плагин Runtime Text To Speech.

Процесс настройки

Шаг 1: Найдите и измените Blueprint анимации лица

Вам нужно модифицировать Animation Blueprint, который будет использоваться для лицевой анимации вашего MetaHuman персонажа. Стандартный Animation Blueprint лица MetaHuman находится по пути:

Content/MetaHumans/Common/Face/Face_AnimBP

Face Animation Blueprint

У вас есть несколько вариантов реализации функциональности Lip Sync:

Откройте стандартный Face_AnimBP напрямую и внесите изменения. Любые модификации повлияют на всех персонажей MetaHuman, использующих этот Animation Blueprint.

Примечание: Этот подход удобен, но затронет всех персонажей, использующих стандартный Animation Blueprint.

Важно: Смешивание Runtime MetaHuman Lip Sync может быть реализовано в любом ассете Animation Blueprint, имеющем доступ к позе, содержащей лицевые кости, присутствующие в стандартном Face_Archetype_Skeleton MetaHuman. Вы не ограничены указанными выше вариантами — это лишь распространенные подходы к реализации.

Шаг 2: Настройка Event Graph

Откройте ваш Face Animation Blueprint и переключитесь на Event Graph. Вам нужно создать Runtime Viseme Generator, который будет обрабатывать аудиоданные и генерировать виземы.

  1. Добавьте ноду Event Blueprint Begin Play, если она еще не существует
  2. Добавьте ноду Create Runtime Viseme Generator и подключите ее к событию Begin Play
  3. Сохраните вывод в переменную (например, "VisemeGenerator") для использования в других частях графа

Creating Runtime Viseme Generator

Шаг 3: Настройка обработки аудиовхода

Вам нужно настроить метод обработки аудиовхода. Есть несколько способов сделать это в зависимости от источника аудио.

Этот подход выполняет Lip Sync в реальном времени при разговоре в микрофон:

  1. Создайте Capturable Sound Wave используя Runtime Audio Importer
  2. Перед началом захвата аудио привяжитесь к делегату OnPopulateAudioData
  3. В привязанной функции вызовите ProcessAudioData из вашего Runtime Viseme Generator
  4. Начните захват аудио с микрофона

Копируемые ноды.

Lip Sync During Audio Capture

Шаг 4: Настройка Anim Graph

После настройки Event Graph переключитесь на Anim Graph, чтобы подключить генератор визем к анимации персонажа:

Lip Sync

  1. Найдите позу, содержащую лицо MetaHuman (обычно из Use cached pose 'Body Pose')
  2. Добавьте ноду Blend Runtime MetaHuman Lip Sync
  3. Подключите позу к Source Pose ноды Blend Runtime MetaHuman Lip Sync
  4. Подключите вашу переменную RuntimeVisemeGenerator к пину Viseme Generator
  5. Подключите вывод ноды Blend Runtime MetaHuman Lip Sync к пину Result ноды Output Pose

Blend Runtime MetaHuman Lip Sync

Когда в аудио будет обнаружен Lip Sync, ваш персонаж будет динамически анимироваться соответствующим образом:

Lip Sync

Анимация смеха

Вы также можете добавить анимации смеха, которые будут динамически реагировать на смех, обнаруженный в аудио:

  1. Добавьте ноду Blend Runtime MetaHuman Laughter
  2. Подключите вашу переменную RuntimeVisemeGenerator к пину Viseme Generator
  3. Если вы уже используете Lip Sync:
    • Подключите вывод из ноды Blend Runtime MetaHuman Lip Sync к Source Pose ноды Blend Runtime MetaHuman Laughter
    • Подключите вывод ноды Blend Runtime MetaHuman Laughter к пину Result ноды Output Pose
  4. Если используете только смех без Lip Sync:
    • Подключите вашу исходную позу напрямую к Source Pose ноды Blend Runtime MetaHuman Laughter
    • Подключите вывод к пину Result

Blend Runtime MetaHuman Laughter

Когда в аудио будет обнаружен смех, ваш персонаж будет динамически анимироваться соответствующим образом:

Laughter

Комбинация с анимациями тела

Чтобы применить Lip Sync и смех вместе с существующими анимациями тела без их перезаписи:

  1. Добавьте ноду Layered blend per bone между анимациями тела и финальным выводом. Убедитесь, что Use Attached Parent включен.
  2. Настройте слой:
    • Добавьте 1 элемент в массив Layer Setup
    • Добавьте 3 элемента в Branch Filters для слоя, со следующими Bone Name:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Сделайте подключения:
    • Существующие анимации (например, BodyPose) → вход Base Pose
    • Вывод лицевой анимации (из нод Lip Sync и/или смеха) → вход Blend Poses 0
    • Нода Layered blend → финальная поза Result

Layered Blend Per Bone

Почему это работает: Фильтры ветвей изолируют кости лицевой анимации, позволяя Lip Sync и смеху смешиваться исключительно с движениями лица, сохраняя оригинальные анимации тела. Это соответствует структуре лицевого рига MetaHuman, обеспечивая естественную интеграцию.

Примечание: Функции Lip Sync и смеха разработаны для работы недеструктивно с вашей существующей настройкой анимации. Они влияют только на специфические лицевые кости, необходимые для движения рта, оставляя другие лицевые анимации нетронутыми. Это означает, что вы можете безопасно интегрировать их в любой точке вашей анимационной цепочки — либо перед другими лицевыми анимациями (позволяя этим анимациям переопределять Lip Sync/смех), либо после них (позволяя Lip Sync/смеху смешиваться поверх ваших существующих анимаций). Эта гибкость позволяет комбинировать Lip Sync и смех с морганием глаз, движениями бровей, эмоциональными выражениями и другими лицевыми анимациями без конфликтов.

Конфигурация

Настройка Lip Sync

Нода Blend Runtime MetaHuman Lip Sync имеет параметры конфигурации в панели свойств:

СвойствоПо умолчаниюОписание
Interpolation Speed25Контролирует скорость перехода движений губ между виземами. Более высокие значения приводят к более быстрым и резким переходам.
Reset Time0.2Длительность в секундах, после которой Lip Sync сбрасывается. Полезно для предотвращения продолжения Lip Sync после остановки аудио.

Настройка смеха

Нода Blend Runtime MetaHuman Laughter имеет свои параметры конфигурации:

СвойствоПо умолчаниюОписание
Interpolation Speed25Контролирует скорость перехода движений губ между анимациями смеха. Более высокие значения приводят к более быстрым и резким переходам.
Reset Time0.2Длительность в секундах, после которой смех сбрасывается. Полезно для предотвращения продолжения смеха после остановки аудио.
Max Laughter Weight0.7Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0).