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

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

Это руководство проведёт вас через процесс настройки 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. Вам нужно создать Runtime Viseme Generator, который будет обрабатывать аудиоданные и генерировать виземы.

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

Создание Runtime Viseme Generator

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

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

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

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

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

Синхронизация губ во время захвата аудио

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

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

Синхронизация губ

  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

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

Синхронизация губ

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

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

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

Blend Runtime MetaHuman Laughter

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

Смех

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

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

  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
    • Вывод лицевой анимации (из нод синхронизации губ и/или смеха) → вход Blend Poses 0
    • Нода Layered blend → финальная поза Result

Layered Blend Per Bone

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

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

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

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

Нода 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).