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

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

Это руководство проведет вас через процесс настройки 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 Диска
  2. Извлеките папку из скачанного архива в папку Plugins вашего проекта (создайте эту папку, если её не существует)
  3. Убедитесь, что ваш проект настроен как C++ проект (даже если у вас нет кода на C++)
  4. Пересоберите ваш проект
примечание
  • Это расширение требуется только если вы хотите использовать Стандартную Модель. Если вам нужна только Реалистичная Модель, вы можете пропустить этот шаг.
  • Для получения дополнительной информации о том, как собирать плагины вручную, см. туториал по сборке плагинов

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

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

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

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

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

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

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

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

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

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

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

Content/MetaHumans/Common/Face/Face_AnimBP

Блюпринт анимации лица

У вас есть несколько вариантов для реализации функции синхронизации губ:

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

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

Важно: Смешивание 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: Настройка обработки аудиовхода

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

Этот подход выполняет синхронизацию губ в реальном времени во время разговора в микрофон:

  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

Комбинирование с лицевой и телесной анимацией

Чтобы применить синхронизацию губ и смех вместе с существующими анимациями тела и пользовательскими лицевыми анимациями (такими как выражения, эмоции или любые другие движения лица) без их перезаписи:

  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. Важно для пользовательских лицевых анимаций: В Curve Blend Option выберите "Use Max Value". Это позволяет корректно накладывать пользовательские лицевые анимации (выражения, эмоции и т.д.) поверх синхронизации губ.
  4. Сделайте соединения:
    • Существующие анимации (например, BodyPose) → вход Base Pose
    • Выход лицевой анимации (от узлов синхронизации губ и/или смеха) → вход Blend Poses 0
    • Узел Layered blend → финальная поза Result

Layered Blend Per Bone

Почему это работает: Фильтры ветвей изолируют кости лицевой анимации, позволяя синхронизации губ и смеху смешиваться исключительно с движениями лица, сохраняя при этом оригинальные анимации тела. Опция смешивания кривых "Use Max Value" берет максимальное значение из каждой кривой вместо их аддитивного смешивания, что позволяет корректно комбинировать пользовательские лицевые анимации (как выражения и эмоции) с синхронизацией губ без конфликтов. Это соответствует структуре лицевого рига MetaHuman для естественной интеграции.

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

Тонкая настройка поведения синхронизации губ

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

Управление выдвижением языка

В стандартной модели синхронизации губ вы можете заметить чрезмерное выдвижение языка вперед во время определенных фонем. Чтобы контролировать выдвижение языка:

  1. После узла Blend Runtime MetaHuman Lip Sync или Blend Realistic MetaHuman Lip Sync добавьте узел Modify Curve
  2. Щелкните правой кнопкой мыши на узле Modify Curve и выберите Add Curve Pin
  3. Добавьте пин кривой с именем CTRL_expressions_tongueOut
  4. Установите свойство Apply Mode узла в значение Scale
  5. Настройте параметр Value для управления высовыванием языка (например, 0.8 для уменьшения выступания на 20%)

Управление открытием челюсти

Реалистичная синхронизация губ может создавать чрезмерно отзывчивые движения челюсти в зависимости от вашего аудиоконтента и визуальных требований. Для регулировки интенсивности открытия челюсти:

  1. После узла смешивания синхронизации губ добавьте узел Modify Curve
  2. Щелкните правой кнопкой мыши на узле Modify Curve и выберите Add Curve Pin
  3. Добавьте пин кривой с именем CTRL_expressions_jawOpen
  4. Установите свойство Apply Mode узла в значение Scale
  5. Настройте параметр Value для управления диапазоном открытия челюсти (например, 0.9 для уменьшения движения челюсти на 10%)

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

Конфигурация синхронизации губ

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

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

Конфигурация смеха

Узел Blend Runtime MetaHuman Laughter имеет собственные параметры конфигурации:

СвойствоПо умолчаниюОписание
Скорость интерполяции25Управляет тем, насколько быстро движения губ переходят между анимациями смеха. Более высокие значения приводят к более быстрым и резким переходам.
Время сброса0.2Продолжительность в секундах, после которой смех сбрасывается. Это полезно для предотвращения продолжения смеха после остановки аудио.
Максимальный вес смеха0.7Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0).

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

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

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

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

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

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

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

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