Как использовать плагин
Это руководство проведёт вас через процесс настройки 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
- Любых персонажей с пользовательскими морф-таргетами для мимики
Подробные инструкции по настройке пользовательских персонажей, включая справочники по маппингу визем для всех перечисленных стандартов, см. в руководстве по настройке пользовательских персонажей.
Требования
Перед началом убедитесь, что:
- Плагин MetaHuman активирован в вашем проекте (Примечание: Начиная с UE 5.6, этот шаг больше не требуется, так как функциональность MetaHuman интегрирована непосредственно в движок)
- У вас есть хотя бы один персонаж MetaHuman, загруженный и доступный в проекте
- Установлен плагин Runtime MetaHuman Lip Sync
Плагин расширения стандартной модели
Если вы планируете использовать Стандартную (Более быструю) Модель, вам потребуется установить плагин расширения:
- Скачайте Standard Lip Sync Extension plugin с Google Drive
- Распакуйте папку из скачанного архива в папку
Plugins
вашего проекта (создайте эту папку, если её нет) - Убедитесь, что ваш проект настроен как C++ проект (даже если у вас нет C++ кода)
- Пересоберите проект
- Это расширение требуется только если вы хотите использовать Стандартную Модель. Если вам нужна только Реалистичная Модель, этот шаг можно пропустить.
- Для получения дополнительной информации о ручной сборке плагинов см. руководство по сборке плагинов
Дополнительные плагины
- Если вы планируете использовать захват аудио (например, ввод с микрофона), установите плагин Runtime Audio Importer.
- Если вы планируете использовать функционал преобразования текста в речь с моими плагинами (у вас может быть собственное кастомное TTS или другой источник аудио), то в дополнение к плагину Runtime Audio Importer также установите:
- Для локального TTS - плагин Runtime Text To Speech.
- Для внешних TTS-провайдеров (ElevenLabs, OpenAI) - плагин Runtime AI Chatbot Integrator.
Платформо-специфичная конфигурация
Конфигурация для Android / Meta Quest
Если вы работаете с платформами Android или Meta Quest и сталкиваетесь с ошибками сборки при использовании этого плагина, вам потребуется отключить архитектуру x86_64 (x64) для Android в настройках проекта:
- Перейдите в Edit > Project Settings
- Откройте раздел Platforms > Android
- В секции Platforms - Android, раздел Build, найдите опцию Support x86_64 [aka x64] и убедитесь, что она отключена, как показано ниже
Это связано с тем, что плагин в настоящее время поддерживает только архитектуры arm64-v8a и armeabi-v7a для платформ Android / Meta Quest.
Процесс настройки
Шаг 1: Найдите и модифицируйте Blueprint анимации лица
- UE 5.5 и более ранние (или Legacy MetaHumans в UE 5.6+)
- Персонажи MetaHuman Creator в UE 5.6+
Вам необходимо модифицировать Animation Blueprint, который будет использоваться для лицевой анимации вашего MetaHuman персонажа. Стандартный Animation Blueprint для лица MetaHuman находится по пути:
Content/MetaHumans/Common/Face/Face_AnimBP
У вас есть несколько вариантов реализации функции синхронизации губ (Lip Sync):
- Редактирование стандартного ассета (Самый простой вариант)
- Создание дубликата
- Использование кастомного Animation Blueprint
Откройте стандартный Face_AnimBP
напрямую и внесите изменения. Любые модификации будут влиять на всех персонажей MetaHuman, использующих этот Animation Blueprint.
Примечание: Этот подход удобен, но затронет всех персонажей, использующих стандартный Animation Blueprint.
- Дублируйте
Face_AnimBP
и дайте ему описательное имя - Найдите Blueprint класса вашего персонажа (например, для персонажа "Bryan" он будет расположен по пути
Content/MetaHumans/Bryan/BP_Bryan
) - Откройте Blueprint персонажа и найдите компонент Face
- Измените свойство Anim Class на ваш новый дублированный Animation Blueprint
Примечание: Этот подход позволяет кастомизировать синхронизацию губ для конкретных персонажей, оставляя других неизменными.
Вы можете реализовать смешивание синхронизации губ в любом Animation Blueprint, имеющем доступ к необходимым лицевым костям:
- Создайте или используйте существующий кастомный Animation Blueprint
- Убедитесь, что ваш Animation Blueprint работает со скелетом, содержащим те же лицевые кости, что и стандартный
Face_Archetype_Skeleton
MetaHuman (который является стандартным скелетом для любого персонажа MetaHuman)
Примечание: Этот подход дает максимальную гибкость для интеграции с кастомными системами анимации.
Начиная с UE 5.6, была представлена новая система MetaHuman Creator, которая создает персонажей без традиционного ассета Face_AnimBP
. Для таких персонажей плагин предоставляет Animation Blueprint лица, расположенный по пути:
Content/LipSyncData/LipSync_Face_AnimBP
Этот Animation Blueprint находится в папке контента плагина и будет перезаписываться при каждом обновлении плагина. Чтобы избежать потери ваших изменений, настоятельно рекомендуется:
- Скопировать этот ассет в папку Content вашего проекта (например, в
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - Использовать вашу копию в настройках персонажа
- Вносить все изменения в скопированную версию
Это гарантирует, что ваши настройки синхронизации губ сохранятся при обновлениях плагина.
Использование Face Animation Blueprint плагина:
- Найдите Blueprint класс вашего персонажа из MetaHuman Creator
- Откройте Blueprint персонажа и найдите компонент Face
- Измените свойство Anim Class на
LipSync_Face_AnimBP
плагина - Продолжите с Шагами 2-4 для настройки функциональности Runtime MetaHuman Lip Sync
Альтернативные варианты:
- Использовать устаревшие инструкции: Вы можете следовать инструкциям для UE 5.5 выше, если работаете с устаревшими MetaHumans или предпочитаете традиционный подход
- Создать собственный Animation Blueprint: Создайте свой собственный Animation Blueprint, совместимый со структурой скелета MetaHuman Creator
Примечание: Если вы используете UE 5.6+, но работаете с устаревшими MetaHumans (не созданными через MetaHuman Creator), используйте инструкции из вкладки "UE 5.5 and Earlier".
Важно: Смешивание Runtime MetaHuman Lip Sync может быть реализовано в любом ассете Animation Blueprint, который имеет доступ к позе, содержащей лицевые кости из стандартного Face_Archetype_Skeleton
MetaHuman. Вы не ограничены приведёнными выше вариантами - это просто распространённые подходы к реализации.
Шаг 2: Настройка Event Graph
Откройте ваш Face Animation Blueprint и переключитесь на Event Graph
. Вам нужно создать генератор, который будет обрабатывать аудиоданные и создавать анимацию синхронизации губ.
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Добавьте ноду
Event Blueprint Begin Play
, если её ещё нет - Добавьте ноду
Create Runtime Viseme Generator
и подключите её к событию Begin Play - Сохраните вывод в переменную (например, "VisemeGenerator") для использования в других частях графа
- Добавьте ноду
Event Blueprint Begin Play
, если её ещё нет - Добавьте ноду
Create Realistic MetaHuman Lip Sync Generator
и подключите её к событию Begin Play - Сохраните вывод в переменную (например, "RealisticLipSyncGenerator") для использования в других частях графа
- (Опционально) Настройте параметры генератора через параметр Configuration
- (Опционально) Установите Processing Chunk Size на объекте Realistic MetaHuman Lip Sync Generator

Примечание: Реалистичная модель оптимизирована специально для персонажей MetaHuman и не совместима с пользовательскими типами персонажей.
Настройки конфигурации
Узел Create Realistic MetaHuman Lip Sync Generator
принимает необязательный параметр Configuration, позволяющий настроить поведение генератора:
Тип модели
Настройка Model Type определяет, какая версия реалистичной модели будет использоваться:
Тип модели | Производительность | Визуальное качество | Обработка шума | Рекомендуемые сценарии использования |
---|---|---|---|---|
Highly Optimized (По умолчанию) | Наивысшая производительность, минимальная нагрузка на CPU | Хорошее качество | Могут быть заметны движения рта при фоновом шуме или неголосовых звуках | Чистые аудио окружения, сценарии с критичной производительностью |
Optimized | Хорошая производительность, умеренная нагрузка на CPU | Высокое качество | Лучшая стабильность с шумным аудио | Сбалансированная производительность и качество, смешанные аудио условия |
Original Unoptimized | Подходит для работы в реальном времени на современных CPU | Наивысшее качество | Наиболее стабильна с фоновым шумом и неголосовыми звуками | Высококачественные проекты, шумные аудио окружения, когда требуется максимальная точность |
Настройки производительности
Intra Op Threads: Контролирует количество потоков, используемых для внутренних операций обработки модели.
- 0 (По умолчанию/Автоматически): Использует автоматическое определение (обычно 1/4 доступных ядер CPU, максимум 4)
- 1-16: Ручное указание количества потоков. Большие значения могут улучшить производительность на многопроцессорных системах, но увеличивают нагрузку на CPU
Inter Op Threads: Контролирует количество потоков, используемых для параллельного выполнения различных операций модели.
- 0 (По умолчанию/Автоматически): Использует автоматическое определение (обычно 1/8 доступных ядер CPU, максимум 2)
- 1-8: Ручное указание количества потоков. Обычно поддерживается на низком уровне для обработки в реальном времени
Использование конфигурации
Для настройки генератора:
- В узле
Create Realistic MetaHuman Lip Sync Generator
раскройте параметр Configuration - Установите Model Type на предпочитаемый вариант:
- Используйте Highly Optimized для лучшей производительности (рекомендуется для большинства пользователей)
- Используйте Optimized для сбалансированной производительности и качества
- Используйте Original Unoptimized только когда критично максимальное качество
- При необходимости настройте Intra Op Threads и Inter Op Threads (в большинстве случаев оставьте 0 для автоматического определения) Рекомендации по производительности:
- Для большинства проектов с чистым аудио используйте Highly Optimized для наилучшей производительности
- Если вы работаете с аудио, содержащим фоновый шум, музыку или неголосовые звуки, рассмотрите использование моделей Optimized или Original Unoptimized для большей стабильности
- Модель Highly Optimized может показывать небольшие движения рта при обработке неголосового аудио из-за техник оптимизации, применённых при создании модели
- Модель Original Unoptimized, хоть и требует больше ресурсов CPU, всё ещё подходит для приложений реального времени на современном оборудовании и обеспечивает наиболее точные результаты при сложных аудиоусловиях
- Настраивайте количество потоков только если у вас есть проблемы с производительностью или специфические требования к оптимизации
- Большее количество потоков не всегда означает лучшую производительность - оптимальные значения зависят от вашего оборудования и требований проекта
Настройка размера блока обработки: Параметр Processing Chunk Size определяет, сколько сэмплов обрабатывается на каждом шаге инференса. Значение по умолчанию - 160 сэмплов, что соответствует 10мс аудио при 16кГц (внутренняя частота дискретизации обработки). Вы можете настроить это значение для баланса между частотой обновления и нагрузкой на CPU:
- Меньшие значения обеспечивают более частые обновления, но увеличивают нагрузку на CPU
- Большие значения снижают нагрузку на CPU, но могут уменьшить отзывчивость Lip Sync
Чтобы установить Processing Chunk Size:
- Откройте ваш объект
Realistic MetaHuman Lip Sync Generator
- Найдите свойство
Processing Chunk Size
- Установите желаемое значение
Рекомендуется использовать значения, кратные 160. Это соответствует внутренней структуре обработки модели. Рекомендуемые значения включают:
160
(по умолчанию, минимальное рекомендуемое)320
480
640
- и т.д.
Значение по умолчанию 160
сэмплов соответствует 10мс аудио при 16кГц. Использование значений, кратных 160, помогает сохранить выравнивание с этой базовой единицей, что может оптимизировать эффективность обработки и сохранить стабильное поведение при разных размерах блоков.
Для стабильной и предсказуемой работы с Realistic Model необходимо воссоздавать Realistic MetaHuman Lip Sync Generator каждый раз, когда вы хотите подать новые аудиоданные после периода бездействия. Это связано с поведением ONNX runtime, которое может привести к прекращению работы Lip Sync при повторном использовании генераторов после периодов тишины.
Пример сценария: Если вы выполнили Lip Sync для TTS и остановили его, а позже хотите выполнить Lip Sync снова с новым аудио, создайте новый Realistic MetaHuman Lip Sync Generator вместо повторного использования существующего.
Шаг 3: Настройка обработки аудиовхода
Вам необходимо настроить метод обработки аудиовхода. Существует несколько способов сделать это в зависимости от источника аудио.
- Микрофон (Реальное время)
- Микрофон (Воспроизведение)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- Из аудиофайла/буфера
- Streaming Audio Buffer
Этот подход выполняет Lip Sync в реальном времени во время разговора в микрофон:
- Стандартная (Быстрая) Модель
- Реалистичная (Высокое качество) Модель
- Создайте Capturable Sound Wave используя Runtime Audio Importer
- Перед началом захвата аудио, привяжитесь к делегату
OnPopulateAudioData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator - Начните захват аудио с микрофона
Реалистичная Модель использует тот же рабочий процесс обработки аудио, что и Стандартная Модель, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Стандартной Модели, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Названия функций и параметры остаются идентичными для обеих моделей
Этот подход захватывает аудио с микрофона, затем воспроизводит его с Lip Sync:
- Стандартная (Быстрая) Модель
- Realistic (Higher Quality) Model
- Создайте Capturable Sound Wave используя Runtime Audio Importer
- Начните захват аудио с микрофона
- Перед воспроизведением capturable sound wave, привяжитесь к его делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator
Модель Realistic использует тот же рабочий процесс обработки аудио, что и Standard Model, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Standard Model, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Имена функций и параметры остаются идентичными для обеих моделей
Примечание: Если вы хотите обрабатывать аудиоданные меньшими порциями для более отзывчивой Lip Sync, измените расчет в функции SetNumSamplesPerChunk
. Например, разделив частоту дискретизации на 150 (стриминг каждые ~6.67 мс) вместо 100 (стриминг каждые 10 мс), вы получите более частые обновления Lip Sync.
- Regular
- Streaming
Этот подход синтезирует речь из текста и выполняет Lip Sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Используйте Runtime Text To Speech для генерации речи из текста
- Используйте Runtime Audio Importer для импорта синтезированного аудио
- Перед воспроизведением импортированной звуковой волны привяжитесь к её делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator
Локальный TTS, предоставляемый плагином Runtime Text To Speech, в настоящее время не поддерживается с моделью Realistic из-за конфликтов с ONNX runtime. Для text-to-speech с моделью Realistic рассмотрите использование внешних TTS-сервисов (таких как OpenAI или ElevenLabs через Runtime AI Chatbot Integrator) или используйте Standard model.
Примечание: Если вы хотите обрабатывать аудиоданные меньшими порциями для более отзывчивой Lip Sync, измените расчет в функции SetNumSamplesPerChunk
. Например, разделив частоту дискретизации на 150 (стриминг каждые ~6.67 мс) вместо 100 (стриминг каждые 10 мс), вы получите более частые обновления Lip Sync.
Этот подход использует потоковый синтез речи с синхронизацией губ в реальном времени:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Используйте Runtime Text To Speech для генерации потоковой речи из текста
- Используйте Runtime Audio Importer для импорта синтезированного аудио
- Перед воспроизведением потокового звукового сигнала привяжитесь к его делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator
Локальный TTS, предоставляемый плагином Runtime Text To Speech, в настоящее время не поддерживается с моделью Realistic из-за конфликтов с ONNX runtime. Для синтеза речи с моделью Realistic рассмотрите использование внешних TTS-сервисов (таких как OpenAI или ElevenLabs через Runtime AI Chatbot Integrator) или используйте Standard модель.
Примечание: Если вы хотите обрабатывать аудиоданные меньшими порциями для более отзывчивой синхронизации губ, отрегулируйте расчет в функции SetNumSamplesPerChunk
. Например, деление частоты дискретизации на 150 (потоковая передача каждые ~6.67 мс) вместо 100 (потоковая передача каждые 10 мс) обеспечит более частые обновления синхронизации губ.
- Regular
- Streaming
Этот подход использует плагин Runtime AI Chatbot Integrator для генерации синтезированной речи из AI-сервисов (OpenAI или ElevenLabs) и выполнения синхронизации губ:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Используйте Runtime AI Chatbot Integrator для генерации речи из текста с использованием внешних API (OpenAI, ElevenLabs и т.д.)
- Используйте Runtime Audio Importer для импорта синтезированных аудиоданных
- Перед воспроизведением импортированного звукового сигнала привяжитесь к его делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator
Модель Realistic использует тот же рабочий процесс обработки аудио, что и Standard Model, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Standard Model, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Названия функций и параметры остаются идентичными для обеих моделей
Примечание: Если вы хотите обрабатывать аудиоданные меньшими частями для более отзывчивой Lip Sync, измените расчет в функции SetNumSamplesPerChunk
. Например, деление частоты дискретизации на 150 (стриминг каждые ~6.67 мс) вместо 100 (стриминг каждые 10 мс) обеспечит более частые обновления Lip Sync.
Этот подход использует плагин Runtime AI Chatbot Integrator для генерации синтезированной потоковой речи от AI-сервисов (OpenAI или ElevenLabs) и выполнения Lip Sync:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Используйте Runtime AI Chatbot Integrator для подключения к потоковым TTS API (например ElevenLabs Streaming API)
- Используйте Runtime Audio Importer для импорта синтезированных аудиоданных
- Перед воспроизведением потокового звука привяжитесь к его делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator
Модель Realistic использует тот же рабочий процесс обработки аудио, что и Standard Model, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Standard Model, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Названия функций и параметры остаются идентичными для обеих моделей
Примечание: Если вам нужно обрабатывать аудиоданные меньшими фрагментами для более отзывчивой синхронизации губ, измените расчет в функции SetNumSamplesPerChunk
. Например, деление частоты дискретизации на 150 (стриминг каждые ~6.67 мс) вместо 100 (стриминг каждые 10 мс) обеспечит более частые обновления синхронизации губ.
Этот подход использует предварительно записанные аудиофайлы или аудиобуферы для синхронизации губ:
- Стандартная (быстрая) модель
- Реалистичная (высококачественная) модель
- Используйте Runtime Audio Importer для импорта аудиофайла с диска или из памяти
- Перед воспроизведением импортированного звукового файла привяжитесь к его делегату
OnGeneratePCMData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator - Воспроизведите импортированный звуковой файл и наблюдайте анимацию синхронизации губ
Реалистичная модель использует тот же рабочий процесс обработки аудио, что и стандартная модель, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для стандартной модели, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Названия функций и параметры остаются идентичными для обеих моделей
Примечание: Если вам нужно обрабатывать аудиоданные меньшими фрагментами для более отзывчивой синхронизации губ, измените расчет в функции SetNumSamplesPerChunk
. Например, деление частоты дискретизации на 150 (стриминг каждые ~6.67 мс) вместо 100 (стриминг каждые 10 мс) обеспечит более частые обновления синхронизации губ.
Для потоковой передачи аудиоданных из буфера вам потребуется:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Аудиоданные в формате float PCM (массив сэмплов с плавающей запятой), доступные из вашего потокового источника
- Частота дискретизации и количество каналов
- Вызов
ProcessAudioData
из вашего Runtime Viseme Generator с этими параметрами по мере поступления аудиофрагментов
Вот пример обработки Lip Sync из потоковых аудиоданных:
Примечание: При использовании потоковых аудиоисточников убедитесь, что правильно управляете временем воспроизведения аудио, чтобы избежать искажений. Подробнее о правильном управлении потоковым аудио см. в документации Streaming Sound Wave.
Realistic Model использует тот же рабочий процесс обработки аудио, что и Standard Model, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Standard Model, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Названия функций и параметров остаются идентичными для обеих моделей
Примечание: При использовании потоковых аудиоисточников убедитесь, что правильно управляете временем воспроизведения аудио, чтобы избежать искажений. Подробнее о правильном управлении потоковым аудио см. в документации Streaming Sound Wave.
Примечание: Если вы хотите обрабатывать аудиоданные меньшими фрагментами для более отзывчивого Lip Sync, отрегулируйте расчет в функции SetNumSamplesPerChunk
. Например, деление частоты дискретизации на 150 (потоковая передача каждые ~6.67 мс) вместо 100 (потоковая передача каждые 10 мс) обеспечит более частые обновления Lip Sync.
Шаг 4: Настройка Anim Graph
После настройки Event Graph переключитесь на Anim Graph
, чтобы подключить генератор к анимации персонажа:
Lip Sync
- Стандартная (Быстрая) Модель
- Реалистичная (Высокое Качество) Модель
- Найдите позу, содержащую лицо MetaHuman (обычно из
Use cached pose 'Body Pose'
) - Добавьте ноду
Blend Runtime MetaHuman Lip Sync
- Подключите позу к
Source Pose
нодыBlend Runtime MetaHuman Lip Sync
- Подключите вашу переменную
RuntimeVisemeGenerator
к пинуViseme Generator
- Подключите выход ноды
Blend Runtime MetaHuman Lip Sync
к пинуResult
вOutput Pose
При обнаружении липсинка в аудио ваш персонаж будет динамически анимироваться:
- Найдите позу, содержащую лицо MetaHuman (обычно из
Use cached pose 'Body Pose'
) - Добавьте ноду
Blend Realistic MetaHuman Lip Sync
- Подключите позу к
Source Pose
нодыBlend Realistic MetaHuman Lip Sync
- Подключите вашу переменную
RealisticLipSyncGenerator
к пинуLip Sync Generator
- Подключите выход ноды
Blend Realistic MetaHuman Lip Sync
к пинуResult
вOutput Pose
Реалистичная модель обеспечивает улучшенное визуальное качество с более естественными движениями рта:
Примечание: Реалистичная модель предназначена исключительно для персонажей MetaHuman и не совместима с пользовательскими типами персонажей.
Анимация Смеха
Вы также можете добавить анимации смеха, которые будут динамически реагировать на смех в аудио:
- Добавьте ноду
Blend Runtime MetaHuman Laughter
- Подключите вашу переменную
RuntimeVisemeGenerator
к пинуViseme Generator
- Если вы уже используете липсинк:
- Подключите выход из ноды
Blend Runtime MetaHuman Lip Sync
кSource Pose
нодыBlend Runtime MetaHuman Laughter
- Подключите выход ноды
Blend Runtime MetaHuman Laughter
к пинуResult
вOutput Pose
- Подключите выход из ноды
- Если используете только смех без липсинка:
- Подключите исходную позу напрямую к
Source Pose
нодыBlend Runtime MetaHuman Laughter
- Подключите выход к пину
Result
- Подключите исходную позу напрямую к
При обнаружении смеха в аудио ваш персонаж будет динамически анимироваться:
Комбинирование с Анимациями Тела
Для применения липсинка и смеха вместе с существующими анимациями тела без их перезаписи:
- Добавьте узел
Layered blend per bone
между анимациями тела и финальным выводом. Убедитесь, что параметрUse Attached Parent
установлен вtrue
. - Настройте слои:
- Добавьте 1 элемент в массив
Layer Setup
- Добавьте 3 элемента в
Branch Filters
для слоя, с указанием следующихBone Name
:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- Добавьте 1 элемент в массив
- Соедините узлы:
- Существующие анимации (например,
BodyPose
) → входBase Pose
- Вывод лицевой анимации (из узлов lip sync и/или laughter) → вход
Blend Poses 0
- Узел Layered blend → финальная поза
Result
- Существующие анимации (например,
Почему это работает: Фильтры ветвей изолируют кости лицевой анимации, позволяя lip sync и laughter смешиваться исключительно с движениями лица, сохраняя оригинальные анимации тела. Это соответствует структуре MetaHuman facial rig, обеспечивая естественную интеграцию.
Примечание: Функции lip sync и laughter работают недеструктивно с вашей текущей анимационной настройкой. Они влияют только на конкретные кости лица, необходимые для движения рта, оставляя другие лицевые анимации нетронутыми. Это означает, что вы можете безопасно интегрировать их в любой точке вашей анимационной цепочки — либо перед другими лицевыми анимациями (позволяя им переопределять lip sync/laughter), либо после них (позволяя lip sync/laughter смешиваться поверх существующих анимаций). Эта гибкость позволяет комбинировать lip sync и laughter с морганием, движениями бровей, эмоциональными выражениями и другими лицевыми анимациями без конфликтов.
Конфигурация
Настройка Lip Sync
- Standard (Faster) Model
- Realistic (Higher Quality) Model
Узел Blend Runtime MetaHuman Lip Sync
имеет параметры конфигурации в панели свойств:
Свойство | По умолчанию | Описание |
---|---|---|
Interpolation Speed | 25 | Определяет скорость перехода между виземами. Более высокие значения приводят к более резким переходам. |
Reset Time | 0.2 | Время в секундах, после которого lip sync сбрасывается. Полезно для остановки lip sync после завершения аудио. |
Узел Blend Realistic MetaHuman Lip Sync
имеет параметры конфигурации в панели свойств:
Свойство | По умолчанию | Описание |
---|---|---|
Interpolation Speed | 30 | Определяет скорость перехода между позициями губ. Более высокие значения приводят к более резким переходам. |
Reset Time | 0.2 | Время в секундах, после которого lip sync сбрасывается. Полезно для остановки lip sync после завершения аудио. |
Настройка Laughter
Узел Blend Runtime MetaHuman Laughter
имеет собственные настройки конфигурации:
Свойство | По умолчанию | Описание |
---|---|---|
Скорость интерполяции | 25 | Определяет, насколько быстро губы переходят между анимациями смеха. Более высокие значения приводят к более резким переходам. |
Время сброса | 0.2 | Длительность в секундах, после которой смех сбрасывается. Полезно для предотвращения продолжения смеха после остановки аудио. |
Максимальный вес смеха | 0.7 | Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0). |
Выбор между моделями Lip Sync
При выборе модели синхронизации губ для вашего проекта учитывайте следующие факторы:
Критерий | Стандартная модель | Реалистичная модель |
---|---|---|
Совместимость с персонажами | MetaHumans и все пользовательские типы персонажей | Только MetaHumans |
Качество визуализации | Хорошая синхронизация губ с эффективной производительностью | Улучшенный реализм с более естественными движениями рта |
Производительность | Оптимизирована для всех платформ, включая мобильные/VR | Несколько более высокие требования к ресурсам |
Сценарии использования | Общие приложения, игры, VR/AR, мобильные | Кинематографические сцены, близкие взаимодействия с персонажами |
Совместимость с версиями движка
Если вы используете Unreal Engine 5.2, Реалистичная модель может работать некорректно из-за ошибки в библиотеке ресемплинга UE. Для пользователей UE 5.2, которым требуется надежная синхронизация губ, рекомендуется использовать Стандартную модель.
Эта проблема характерна только для UE 5.2 и не затрагивает другие версии движка.
Для большинства проектов Стандартная модель обеспечивает оптимальный баланс качества и производительности, поддерживая широкий спектр типов персонажей. Реалистичная модель идеальна, когда требуется максимальная визуальная точность, особенно для персонажей MetaHuman, в контекстах, где дополнительные затраты производительности не критичны.