Как использовать плагин
Это руководство проведет вас через процесс настройки 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 Диска
- Извлеките папку из скачанного архива в папку
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 и сталкиваетесь с ошибками сборки при использовании этого плагина, вам потребуется отключить архитектуру Android x86_64 (x64) в настройках проекта:
- Перейдите в 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
У вас есть несколько вариантов для реализации функции синхронизации губ:
- Редактировать стандартный ассет (Самый простой вариант)
- Создать дубликат
- Использовать пользовательский Блюпринт анимации
Откройте стандартный Face_AnimBP
напрямую и внесите свои изменения. Любые изменения затронут всех персонажей MetaHuman, использующих этот Блюпринт анимации.
Примечание: Этот подход удобен, но повлияет на всех персонажей, использующих стандартный Блюпринт анимации.
- Дублируйте
Face_AnimBP
и дайте ему описательное имя - Найдите класс Блюпринта вашего персонажа (например, для персонажа "Bryan", он будет находиться по пути
Content/MetaHumans/Bryan/BP_Bryan
) - Откройте Блюпринт персонажа и найдите компонент Face
- Измените свойство Anim Class на ваш новый дублированный Блюпринт анимации
Примечание: Этот подход позволяет вам настроить синхронизацию губ для конкретных персонажей, оставляя других неизменными.
Вы можете реализовать смешивание синхронизации губ в любом Блюпринте анимации, который имеет доступ к требуемым лицевым костям:
- Создайте или используйте существующий пользовательский Блюпринт анимации
- Убедитесь, что ваш Блюпринт анимации работает со скелетом, содержащим те же лицевые кости, что и стандартный скелет MetaHuman
Face_Archetype_Skeleton
(который является стандартным скелетом, используемым для любого персонажа MetaHuman)
Примечание: Этот подход дает вам максимальную гибкость для интеграции с пользовательскими системами анимации.
Начиная с UE 5.6, была представлена новая система MetaHuman Creator, которая создает персонажей без традиционного ассета Face_AnimBP
. Для этих персонажей плагин предоставляет Блюпринт анимации лица, расположенный по адресу:
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 и ранее".
Важно: Смешивание 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, но могут уменьшить отзывчивость липсинка
Чтобы установить 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, которое может привести к прекращению работы липсинка при повторном использовании генераторов после периодов тишины.
Пример сценария: Если вы выполнили TTS липсинк и затем остановили его, и позже хотите выполнить липсинк снова с новым аудио, создайте новый Realistic MetaHuman Lip Sync Generator вместо повторного использования существующего.
Шаг 3: Настройка обработки аудиовхода
Вам необходимо настроить метод обработки аудиовхода. Есть несколько способов сделать это в зависимости от вашего источника аудио.
- Microphone (Real-time)
- Microphone (Playback)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- Из аудиофайла/буфера
- Streaming Audio Buffer
Этот подход выполняет синхронизацию губ в реальном времени во время разговора в микрофон:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Создайте Capturable Sound Wave с помощью Runtime Audio Importer
- Перед началом захвата аудио привяжитесь к делегату
OnPopulateAudioData
- В привязанной функции вызовите
ProcessAudioData
из вашего Runtime Viseme Generator - Начните захват аудио с микрофона
Realistic Model использует тот же рабочий процесс обработки аудио, что и Standard Model, но с переменной RealisticLipSyncGenerator
вместо VisemeGenerator
.
В каждом из примеров, показанных для Standard Model, просто замените:
VisemeGenerator
на вашу переменнуюRealisticLipSyncGenerator
- Имена функций и параметры остаются идентичными между обеими моделями
Этот подход захватывает аудио с микрофона, затем воспроизводит его с синхронизацией губ:
- Standard (Faster) Model
- 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. Для преобразования текста в речь с моделью Realistic рассмотрите использование внешних TTS-сервисов (таких как OpenAI или ElevenLabs через Runtime AI Chatbot Integrator) или используйте вместо этого модель Standard.
Примечание: Если вы хотите обрабатывать аудиоданные меньшими порциями для более отзывчивой 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. Для синтеза речи с моделью 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 - Воспроизведите импортированную звуковую волну и наблюдайте за анимацией синхронизации губ
Реалистичная модель использует тот же рабочий процесс обработки аудио, что и стандартная модель, но с переменной 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
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Найдите позу, содержащую лицо 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
При обнаружении Lip Sync в аудио ваш персонаж будет динамически анимироваться соответствующим образом:
- Найдите позу, содержащую лицо 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
Модель Realistic обеспечивает улучшенное визуальное качество с более естественными движениями рта:
Примечание: Модель Realistic предназначена исключительно для персонажей MetaHuman и не совместима с пользовательскими типами персонажей.
Анимация см еха
Вы также можете добавить анимации смеха, которые будут динамически реагировать на смех, обнаруженный в аудио:
- Добавьте ноду
Blend Runtime MetaHuman Laughter
- Подключите вашу переменную
RuntimeVisemeGenerator
к пинуViseme Generator
- Если вы уже используете Lip Sync:
- Подключите выход из ноды
Blend Runtime MetaHuman Lip Sync
к пинуSource Pose
нодыBlend Runtime MetaHuman Laughter
- Подключите выход ноды
Blend Runtime MetaHuman Laughter
к пинуResult
нодыOutput Pose
- Подключите выход из ноды
- Если используете только смех без Lip Sync:
- Подключите вашу исходную позу напрямую к пину
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 элемент в массив
- Важно для пользовательских лицевых анимаций: В
Curve Blend Option
выберите "Use Max Value". Это позволяет корректно накладывать пользовательские лицевые анимации (выражения, эмоции и т.д.) поверх синхронизации губ. - Сделайте соединения:
- Существующие анимации (например,
BodyPose
) → входBase Pose
- Выход лицевой анимации (от узлов синхронизации губ и/или смеха) → вход
Blend Poses 0
- Узел Layered blend → финальная поза
Result
- Существующие анимации (например,
Почему это работает: Фильтры ветвей изолируют кости лицевой анимации, позволяя синхронизации губ и смеху смешиваться исключительно с движениями лица, сохраняя при этом оригинальные анимации тела. Опция смешивания кривых "Use Max Value" берет максимальное значение из каждой кривой вместо их аддитивного смешивания, что позволяет корректно комбинировать пользовательские лицевые анимации (как выражения и эмоции) с синхронизацией губ без конфликтов. Это соответствует структуре лицевого рига MetaHuman для естественной интеграции.
Примечание: Функции синхронизации губ и смеха разработаны для работы недеструктивно с вашей существующей настройкой анимации. Они влияют только на специфические лицевые кости, необходимые для движения рта, оставляя другие лицевые анимации нетронутыми. Это означает, что вы можете безопасно интегрировать их в любой точке вашей анимационной цепочки - либо до других лицевых анимаций (позволяя этим анимациям перезаписывать синхронизацию губ/смех), либо после них (позволяя синхронизации губ/смеху накладываться поверх ваших существующих анимаций). Эта гибкость позволяет вам комбинировать синхронизацию губ и смех с морганием глаз, движениями бровей, эмоциональными выражениями и другими лицевыми анимациями без конфликтов.
Тонкая настройка поведения синхронизации губ
После настройки базовой функциональности синхронизации губ вы можете захотеть тонко настроить определенные аспекты движения рта для лучшего соответствия требованиям вашего проекта.
Управление выдвижением языка
В стандартной модели синхронизации губ вы можете заметить чрезмерное выдвижение языка вперед во время определенных фонем. Чтобы контролировать выдвижение языка:
- После узла
Blend Runtime MetaHuman Lip Sync
илиBlend Realistic MetaHuman Lip Sync
добавьте узелModify Curve
- Щелкните правой кнопкой мыши на узле
Modify Curve
и выберите Add Curve Pin - Добавьте пин кривой с именем
CTRL_expressions_tongueOut
- Установите свойство Apply Mode узла в значение Scale
- Настройте параметр Value для управления высовыванием языка (например, 0.8 для уменьшения выступания на 20%)
Управление открытием челюсти
Реалистичная синхронизация губ может создавать чрезмерно отзывчивые движения челюсти в зависимости от вашего аудиоконтента и визуальных требований. Для регулировки интенсивности открытия челюсти:
- После узла смешивания синхронизации губ добавьте узел
Modify Curve
- Щелкните правой кнопкой мыши на узле
Modify Curve
и выберите Add Curve Pin - Добавьте пин кривой с именем
CTRL_expressions_jawOpen
- Установите свойство Apply Mode узла в значение Scale
- Настройте параметр Value для управления диапазоном открытия челюсти (например, 0.9 для уменьшения движения челюсти на 10%)
Конфигурация
Конфигурация синхронизации губ
- Стандартная (быстрая) модель
- Реалистичная (высококачественная) модель
Узел Blend Runtime MetaHuman Lip Sync
имеет параметры конфигурации в панели свойств:
Свойство | По умолчанию | Описание |
---|---|---|
Interpolation Speed | 25 | Управляет скоростью перехода движений губ между виземами. Более высокие значения приводят к более быстрым и резким переходам. |
Reset Time | 0.2 | Продолжительность в секундах, после которой синхронизация губ сбрасывается. Это полезно для предотвращения продолжения синхронизации губ после остановки аудио. |
Узел Blend Realistic MetaHuman Lip Sync
имеет параметры конфигурации в панели свойств:
Свойство | По умолчанию | Описание |
---|---|---|
Interpolation Speed | 30 | Управляет скоростью перехода движений губ между позициями. Более высокие значения приводят к более быстрым и резким переходам. |
Reset Time | 0.2 | Продолжительность в секундах, после которой синхронизация губ сбрасывается. Это полезно для предотвращения продолжения синхронизации губ после остановки аудио. |
Конфигурация смеха
Узел Blend Runtime MetaHuman Laughter
имеет собственные параметры конфигурации:
Свойство | По умолчанию | Описание |
---|---|---|
Скорость интерполяции | 25 | Управляет тем, насколько быстро движения губ переходят между анимациями смеха. Более высокие значения приводят к более быстрым и резким переходам. |
Время сброса | 0.2 | Продолжительность в секундах, после которой смех сбрасывается. Это полезно для предотвращения продолжения смеха после остановки аудио. |
Максимальный вес смеха | 0.7 | Масштабирует максимальную интенсивность анимации смеха (0.0 - 1.0). |
Выбор между моделями синхронизации губ
При выборе модели синхронизации губ для вашего проекта учитывайте следующие факторы:
Критерий | Стандартная модель | Реалистичная модель |
---|---|---|
Совместимость с персонажами | MetaHumans и все типы пользовательских персонажей | Только MetaHumans |
Визуальное качество | Хорошая синхронизация губ с эффективной производительностью | Улучшенный реализм с более естественными движениями рта |
Производительность | Оптимизирована для всех платформ, включая мобильные/VR | Несколько более высокие требования к ресурсам |
Варианты использования | Общие приложения, игры, VR/AR, мобильные устройства | Кинематографические сцены, взаимодействия с персонажами крупным планом |
Совместимость с версиями движка
Если вы используете Unreal Engine 5.2, Реалистичная модель может работать некорректно из-за ошибки в библиотеке ресемплинга UE. Пользователям UE 5.2, которым требуется надежная функциональность синхронизации губ, рекомендуется использовать Стандартную модель.
Эта проблема характерна для UE 5.2 и не затрагивает другие версии движка.
Для большинства проектов Стандартная модель обеспечивает отличный баланс качества и производительности, поддерживая при этом самый широкий спектр типов персонажей. Реалистичная модель идеальна, когда требуется максимальная визуальная достоверность специально для персонажей MetaHuman в контекстах, где дополнительные затраты производительности менее критичны.