Помощники анимации глаз
Помимо синхронизации губ, плагин Runtime MetaHuman Lip Sync включает две дополнительные вспомогательные утилиты для анимации глаз MetaHuman:
- Автоматическое моргание: вспомогательный инструмент, создающий естественные, случайные моргания глаз у MetaHuman
- Направление взгляда: узел Animation Blueprint, заставляющий глаза MetaHuman смотреть на точку в мировом пространстве
Эти функции полностью независимы от синхронизации губ и могут использоваться отдельно, вместе или в сочетании с узлами синхронизации губ. Они представляют собой легковесные вспомогательные инструменты, которые можно просто добавить в проект для реалистичного поведения глаз без необходимости создавать его вручную.
Предварительные обзоры функций
Видео-прохождение
Полное прохождение обоих помощников, включая обходной путь для устаревшего рига.
Если ваш пайплайн лицевой анимации уже включает моргания и динамический взгляд, эту страницу можно пропустить. Эти вспомогательные инструменты существуют для случаев, когда вам нужно реалистичное поведение глаз без самостоятельной разработки, например, когда ваши анимационные последовательности не содержат морганий или когда глаза должны динамически следить за движущейся целью (чего статичные анимационные последовательности сделать не могут). Их также можно накладывать поверх существующей лицевой анимации, чтобы добавить недостающие элементы, например, моргания поверх последовательности, которая анимирует только рот.
Автоматическое моргание
Вспомогательный инструмент автоматического моргания создает рандомизированные, естественно выглядящие моргания глаз, управляя кривыми CTRL_L_eye_blink и CTRL_R_eye_blink контрольного рига лица MetaHuman.
Как это работает
Каждый кадр вызывайте Update MetaHuman Auto Blink из графа событий вашего анимационного блюпринта лица и передавайте дельта-время кадра. Функция:
- Отслеживает состояние каждого персонажа (время следующего моргания, текущая фаза открытия/закрытия и т.д.), привязанное к вызывающему
AnimInstance - Возвращает два значения с плавающей точкой в диапазоне 0..1: одно для левого глаза, другое для правого, показывающие, насколько каждый глаз закрыт в данный момент
- Затем вы сохраняете эти значения в переменных Blueprint и передаёте их в узел Control Rig в графе анимации
Настройка
Два шага: добавьте вызов моргания в ваш Event Graph, затем передайте значения в узел Control Rig в Anim Graph.
1. Event Graph: управление значениями моргания каждый кадр
В вашем Face Animation Blueprint (например, Face_AnimBP или его дублированной/скопированной версии, см. Руководство по настройке) откройте Event Graph и добавьте следующее в Event Blueprint Update Animation:
- Вызовите
Update MetaHuman Auto Blink - Подключите Delta Time X (из события) к Delta Seconds
- (Необязательно) Настройте структуру Config. Значения по умолчанию уже выглядят естественно
- Преобразуйте Left Blink Value и Right Blink Value в переменные Blueprint (например,
LeftBlinkValue,RightBlinkValue)

2. Anim Graph: передайте значения в Face Control Rig
В Anim Graph того же Animation Blueprint:
- Поместите узел Control Rig после всей остальной лицевой логики, которая может записывать данные в кривые моргания глаз (например, после
Blend Runtime MetaHuman Lip Syncи любых пользовательских слоёв анимации лица) - На панели Details узла установите Control Rig Class (Control Rig Asset Reference в UE 5.8+) на ваш Control Rig лица MetaHuman. Путь обычно следующий:
/All/Game/MetaHumans/Common/Face/Face_ControlBoard_CtrlRig- Путь в вашем проекте может отличаться в зависимости от того, как был импортирован MetaHuman.
- В панели Details разверните раздел Input и включите Use Pin для:
CTRL_L_eye_blinkCTRL_R_eye_blink
- Подключите вашу переменную
LeftBlinkValueкCTRL_L_eye_blink - Подключите вашу переменную
RightBlinkValueкCTRL_R_eye_blink

Разместите узел Control Rig после узлов смешивания липсинка (и любых других узлов лицевой анимации), чтобы значения моргания не перезаписывались другой логикой.
Конфигурация
Узел Update MetaHuman Auto Blink принимает необязательную структуру Config. Значения по умолчанию уже выглядят естественно для большинства персонажей; разверните ниже, если хотите настроить поведение.
Свойства конфигурации
Тайминг
| Свойство | По умолчанию | Описание |
|---|---|---|
| Минимальное время между морганиями | 2,0 с | Минимальный интервал между морганиями, когда глаза полностью открыты. |
| Максимальное время между морганиями | 4,0 с | Максимальный интервал между морганиями. Фактический интервал выбирается случайным образом между минимальным и максимальным значениями. |
| Минимальное время удержания закрытого состояния | 0,04 с | Минимальное время, в течение которого глаза остаются полностью закрытыми. |
| Максимальное время удержания в закрытом состоянии | 0.08 с | Максимальное время, в течение которого глаза остаются полностью закрытыми. |
Интерполяция
| Свойство | По умолчанию | Описание |
|---|---|---|
| Скорость закрытия интерполяции | 35.0 | Скорость закрытия глаз. Люди закрывают глаза быстрее, чем открывают, поэтому это значение намеренно выше скорости открытия. |
| Скорость интерполяции открытия | 18.0 | Скорость открытия глаз. |
| Закрытый порог | 0.97 | Значение, при котором моргание считается «полностью завершённым», и начинается фаза удержания. |
| Порог открытия | 0,02 | Значение, при котором моргание считается «полностью открытым», и планируется следующее моргание. |
Misc
| Свойство | По умолчанию | Описание |
|---|---|---|
| Независимые глаза | ложь | Когда true, левый и правый глаз моргают независимо друг от друга с разной периодичностью. Когда false (по умолчанию), оба глаза моргают синхронно. |
bEnabled (пин функции) | true | Когда false, глаза плавно открываются, а моргание приостанавливается. Полезно для кат-сцен, сна, смерти и т. д. |
Runtime Control
Вы также можете вызвать Reset Auto Blink State, чтобы явно очистить внутреннее состояние для заданного AnimInstance (например, при возрождении персонажа или переключении кинематографических состояний).
Наведение взгляда
Вспомогательный узел «Наведение взгляда» — это узел анимационного блюпринта (Runtime MetaHuman Eyes Aim), который заставляет персонажа следить глазами за точкой в мировом пространстве, например, за камерой игрока, другим актёром или любой движущейся целью. Он поддерживает ограничение по рысканию/тангажу, сглаживание, защиту от переворота при прохождении цели за головой и опциональные микросаккады для повышения реалистичности.
Выбор режима
Узел поддерживает два режима, выбираемых через раскрывающийся список Mode на панели Details узла:
| Mode | Что это приводит в движение | Где это разместить |
|---|---|---|
| Кривые (по умолчанию) | Лицевые кривые взгляда Control Rig (CTRL_expressions_eyeLook*) | В Blueprint анимации лица (например, Face_AnimBP), перед узлом Control Rig |
| Кости | Кости FACIAL_L_Eye / FACIAL_R_Eye напрямую, минуя Control Rig. | В Face Post Process Animation Blueprint (например, Face_PostProcess_AnimBP), после узла AnimNode_RigLogic |
Режим кривых рекомендуется по умолчанию. Он корректно сочетается с другими системами лицевой анимации на основе кривых (синхронизация губ, выражения, блендшейпы ARKit и т.д.), поскольку значения объединяются через обычную оценку Control Rig, а не конфликтуют из-за трансформаций костей.
На некоторых вариантах MetaHuman (особенно на старых ригах, включая те, что загружены через Quixel Bridge), кривые направления взгляда на самом деле не управляют глазами. Видимый симптом — глаза смотрят вниз, зрачки почти скрыты, когда активен узел режима кривых, независимо от целевого положения.
Если вы видите это, переключитесь в режим костей. Режим костей напрямую вращает кости глаз, поэтому он работает с любым вариантом MetaHuman независимо от того, как настроен Control Rig. Смотрите вкладку Кости в разделе Настройка ниже.
Настройка
- Режим кривых (по умолчанию)
- Режим костей (запасной)
Стандартная настройка. Нод находится в стандартном анимационном блюпринте лица и управляет кривыми взгляда глаз в контрольном риге лица.
Два шага: добавьте узел в вашу Anim Graph, затем передайте ему целевую позицию из Event Graph.
1. Anim Graph: добавьте узел
В вашем Anim Graph анимационного блюпринта лица:
- Добавьте узел
Runtime MetaHuman Eyes Aim - Оставьте Mode установленным на Curves в панели Details
- Разместите его после всей остальной логики лица, которая может записывать кривые взгляда (липсинк, пользовательские анимации и т.д.), по тому же принципу, что и узел Auto Blink Control Rig
- Подключите существующую позу к Source Pose
- Подключите выход к следующему узлу в вашей цепочке (или
Output Pose) - Создайте переменную Blueprint типа
Vector(например,TargetWorldLocation) и подключите её к пину Target World Location узла. Вы будете обновлять эту переменную из Event Graph на следующем шаге.

2. Граф событий: передайте целевую локацию
Пин Target World Location ожидает FVector в мировых координатах. Часто требуется, чтобы MetaHuman смотрел на камеру игрока. В Event Blueprint Update Animation:
- Получить Player Camera Manager (Player Index 0)
- Проверить Is Valid
- Если допустимо, вызвать Get Camera Location
- Сохранить его в переменной Blueprint
TargetWorldLocation

Чтобы отслеживать произвольного актора (NPC, предмет, точку интереса), получайте его местоположение каждый кадр и сохраняйте в ту же переменную. Для фиксированной точки взгляда установите Target World Location один раз или как константу на панели «Детали» узла.
Используйте эту настройку, если подход в режиме Curves не работает для вашего варианта MetaHuman (см. предупреждение выше). В режиме Bones нода напрямую вращает кости глаз и должна выполняться после завершения оценки Control Rig, то есть она должна находиться в Face Post Process Animation Blueprint, а не в обычном Face AnimBP.
Три шага: найдите Post Process Anim BP, добавьте узел после RigLogic, затем передайте ему целевую позицию из Event Graph этого блюпринта.
1. Найдите Face Post Process Anim BP
- Откройте ассет скелетной сетки лица вашего MetaHuman (например,
Faceв папке вашего MetaHuman) - На панели Details этого ассета найдите поле Post Process Anim Blueprint
- Откройте этот ассет — обычно он называется примерно так:
Face_PostProcess_AnimBP
2. Anim Graph: добавьте узел после RigLogic
В Anim Graph анимационного постпроцесса лица (Face Post Process Anim BP):
- Найдите существующий узел
AnimNode_RigLogic(он преобразует кривые Control Rig лица в трансформации костей) - Добавьте узел
Runtime MetaHuman Eyes AimпослеAnimNode_RigLogicи доOutput Pose - В панели Details узла установите Mode в значение Bones
- Подключите
AnimNode_RigLogicк Source Pose узла Eyes Aim - Подключите выход узла Eyes Aim к
Output Pose - Создайте переменную Blueprint типа
Vector(например,TargetWorldLocation) в этом Post Process Anim BP и подключите её к пину Target World Location узла

Ссылки на кости по умолчанию (FACIAL_L_Eye и FACIAL_R_Eye) соответствуют стандартному скелету лица MetaHuman. Если ваш персонаж использует кастомизированный скелет с другими названиями глазных костей, переопределите их в панели «Детали» узла в категории Кости.
3. Граф событий: передайте целевую позицию
Поскольку нода находится в Post Process Anim BP, логика целевого местоположения также должна находиться в этом графе событий (Event Graph) этого блюпринта, а не в Face_AnimBP. Настройка идентична режиму кривых (получить местоположение камеры, местоположение актора или использовать константу), только выполняется внутри Face_PostProcess_AnimBP.

Любая несвязанная логика (синхронизация губ, автоматическое моргание и т. д.) может остаться в обычном Face AnimBP. Сюда нужно перенести только расчет целевого положения для направления взгляда глаз. Контрольный риг лица принудительно управляет костями глаз в каждом кадре на основе своих кривых. Если бы узел «Направление взгляда» работал в обычном анимационном блюпринте лица (до контрольного рига), контрольный риг впоследствии перезаписал бы повороты костей. Постпроцессный анимационный блюпринт выполняется после того, как контрольный риг сформировал финальные трансформации костей, поэтому это правильное место для применения итоговых поворотов костей, которые должны «победить».Почему режиму Bones требуется Post Process Anim BP?
Конфигурация
Все настройки отображаются на панели Детали узла Runtime MetaHuman Eyes Aim.
Цель и Ограничение
Цель
| Свойство | По умолчанию | Описание |
|---|---|---|
| Mode | Кривые | Выбирает, как управляются глаза. См. Выбор режима. |
| Целевое местоположение в мире | (0,0,0) | Точка в мировом пространстве, на которую смотрят глаза. По умолчанию отображается как контакт. |
bEnabled | true | Когда false, взгляд возвращается вперёд и игнорирует цель. По умолчанию выводится как пин. |
Ограничить
| Свойство | По умолчанию | Описание |
|---|---|---|
| Максимальные градусы рыскания | 35° | Максимальное горизонтальное отклонение (по рысканию) от направления взгляда головы. Ограничено от 0 до 80. |
| Максимальная высота тона в градусах | 25° | Максимальное вертикальное отклонение (тангаж) от направления взгляда головы вперёд. Ограничено от 0 до 80. |
| Анти-переворот сзади | true | Предотвращает переворот глаз, когда цель проходит за головой. |
Сглаживание и саккады
Сглаживание
| Свойство | По умолчанию | Описание |
|---|---|---|
| Скорость интерполяции | 12.0 | Скорость сглаживания движения глаз. Выше = более резкое, ниже = более плавное. |
Саккады
Микросаккады — это крошечные, случайные движения взгляда, которые постоянно совершают настоящие глаза. Их добавление позволяет избежать эффекта «мертвого взгляда», характерного для идеально плавного отслеживания.
| Свойство | По умолчанию | Описание |
|---|---|---|
| Включить саккады | true | Включает/выключает микросаккады. |
| Амплитуда саккады по рысканию (градусы) | 1,5° | Максимальное горизонтальное дрожание за саккаду. Малые значения (1–2°) выглядят естественно; большие значения создают впечатление дерганости. |
| Амплитуда саккады по тангажу | 1,0° | Максимальное вертикальное дрожание на саккаду. Обычно немного меньше амплитуды рыскания. |
| Минимальный интервал саккад | 0,6 с | Минимальное время между саккадами. |
| Максимальный интервал саккад | 2,5 с | Максимальное время между саккадами. Большие значения создают более спокойное ощущение, меньшие — более беспокойное. |
Кости (только для режима Bones)
| Свойство | По умолчанию | Описание |
|---|---|---|
| Левая кость глаза | FACIAL_L_Eye | Левая кость глаза. Соответствует стандартному скелету лица MetaHuman. |
| Правая глазная кость | FACIAL_R_Eye | Правая кость глаза. Соответствует стандартному скелету лица MetaHuman. |
Калибровка (только для режима кривых)
Эти значения определяют, как углы в пространстве головы сопоставляются со значениями кривой взгляда глаз в Control Rig лица MetaHuman. Значения по умолчанию настроены для стандартного Control Rig лица MetaHuman и редко требуют изменений.
| Свойство | По умолчанию | Описание |
|---|---|---|
| Кривая градусов рыскания на единицу | 30° | Угол, который соответствует значению кривой 1.0 для кривых взгляда по рысканию. |
| Кривая градусов высоты тона на единицу | 25° | Угол, соответствующий значению кривой 1.0 для кривых взгляда по тангажу. |
Комбинирование с синхронизацией губ и другими анимациями
Оба помощника спроектированы так, чтобы сосуществовать с узлами синхронизации губ плагина и любой вашей собственной анимацией лица. Общее правило: размещайте узлы «Направление взгляда» (Eyes Aim) и «Контрольный риг» (Control Rig, автоподмигивание) после синхронизации губ и любой собственной анимации лица, чтобы их значения не перезаписывались последующими узлами.
Посмотреть подробную блок-схему выполнения (режим кривых и режим костей)
В зависимости от того, использует ли ваш риг MetaHuman рекомендуемый режим кривых или запасной режим костей, размещение вашей логики выполнения изменится. Разверните таблицу ниже, чтобы увидеть точный порядок выполнения для обоих конвейеров:
Автоматическое моргание и синхронизация губ по-прежнему находятся в обычном Face AnimBP в обоих режимах.
Подробнее о наложении с анимациями тела см. в разделе Комбинирование с существующими анимациями.
Примечания и ограничения
Эти помощники являются специфичными для MetaHuman. Они полагаются на стандартные имена кривых Control Rig лица MetaHuman (CTRL_L_eye_blink, CTRL_R_eye_blink, CTRL_expressions_eyeLook*) и стандартные кости глаз (FACIAL_L_Eye, FACIAL_R_Eye). Они не предназначены для пользовательских персонажей, не являющихся MetaHuman.
Нужна помощь?
Для запросов на индивидуальную разработку обращайтесь по адресу [email protected].