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

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

Это руководство проведёт вас через процесс настройки 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

Плагин расширения стандартной модели

Если вы планируете использовать Стандартную (Быструю) Модель, вам потребуется установить плагин расширения:

  1. Скачайте Standard Lip Sync Extension plugin с Google Drive
  2. Распакуйте папку из скачанного архива в папку Plugins вашего проекта (создайте эту папку, если её нет)
  3. Убедитесь, что ваш проект настроен как C++ проект (даже если у вас нет C++ кода)
  4. Пересоберите проект
примечание
  • Это расширение требуется только если вы хотите использовать Стандартную Модель. Если вам нужна только Реалистичная Модель, этот шаг можно пропустить.
  • Для получения дополнительной информации о ручной сборке плагинов см. руководство по сборке плагинов

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

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

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

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

  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 во время захвата аудио

Шаг 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
    • Нода слоистого смешивания → финальная поза 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Время в секундах, после которого синхронизация губ сбрасывается. Полезно для остановки синхронизации после завершения аудио.

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

У ноды Blend Runtime MetaHuman Laughter есть свои параметры:

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

Выбор между моделями синхронизации губ

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

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

Совместимость с версиями движка

Проблема совместимости с UE 5.2

Если вы используете Unreal Engine 5.2, Реалистичная модель может работать некорректно из-за ошибки в библиотеке ресемплинга UE. Для пользователей UE 5.2, которым нужна надежная синхронизация губ, рекомендуется использовать Стандартную модель.

Эта проблема специфична для UE 5.2 и не затрагивает другие версии движка.

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