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

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

Это руководство проведет вас через процесс настройки 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 включен в вашем проекте (Примечание: Начиная с UE 5.6, этот шаг больше не требуется, так как функциональность MetaHuman интегрирована непосредственно в движок)
  2. У вас есть хотя бы один персонаж MetaHuman, загруженный и доступный в проекте
  3. Установлен плагин Runtime MetaHuman Lip Sync

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

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

Конфигурация для конкретных платформ

Конфигурация для Android / Meta Quest

Если вы ориентируетесь на платформы Android или Meta Quest и сталкиваетесь с ошибками сборки при использовании этого плагина, вам необходимо отключить архитектуру x86_64 (x64) для Android в настройках проекта:

  1. Перейдите в Edit > Project Settings
  2. Перейдите в раздел Platforms > Android
  3. В разделе Platforms - Android, секция Build, найдите Support x86_64 [aka x64] и убедитесь, что она отключена, как показано ниже

Отключение архитектуры x64 для Android

Это связано с тем, что плагин в настоящее время поддерживает только архитектуры arm64-v8a и armeabi-v7a для платформ Android / Meta Quest.

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

Шаг 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. Вам потребуется создать генератор, который будет обрабатывать аудиоданные и генерировать анимацию lip sync.

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

Создание Runtime Viseme Generator

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

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

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

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

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

Lip Sync во время захвата аудио

Шаг 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 установлен в true.
  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

Почему это работает: Branch filters изолируют кости лицевой анимации, позволяя 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).

Выбор между моделями Lip Sync

При выборе модели lip sync для вашего проекта учитывайте следующие факторы:

КритерийStandard ModelRealistic Model
Совместимость с персонажамиMetaHumans и все пользовательские типы персонажейТолько MetaHumans
Визуальное качествоХороший lip sync с эффективной производительностьюУлучшенный реализм с более естественными движениями рта
ПроизводительностьОптимизирована для всех платформ, включая мобильные/VRНесколько более высокие требования к ресурсам
Сценарии использованияОбщие приложения, игры, VR/AR, мобильныеКинематографические сцены, близкие взаимодействия с персонажами

Для большинства проектов Standard Model обеспечивает отличный баланс качества и производительности при поддержке самого широкого диапазона типов персонажей. Realistic Model идеален, когда требуется максимальная визуальная точность специально для персонажей MetaHuman в контекстах, где накладные расходы на производительность менее критичны.