Вспомогательные инструменты для анимации глаз
В дополнение к синхронизации губ, плагин Runtime MetaHuman Lip Sync включает две опциональные вспомогательные утилиты для анимации глаз MetaHuman:
- Auto Blink: вспомогательный инструмент, который создает естественные, рандомизированные моргания глаз на MetaHuman
- Eyes Aim: нода Animation Blueprint, которая заставляет глаза MetaHuman смотреть на точку в мировом пространстве
Эти функции полностью независимы от синхронизации губ и могут использоваться отдельно, вместе или в сочетании с нодами синхронизации губ. Они задуманы как легковесные, готовые к использованию помощники для добавления реалистичного поведения глаз без необходимости создавать его вручную.
Предварительный просмотр функций
Если ваш конвейер лицевой анимации уже включает моргания и динамический взгляд, вы можете пропустить эту страницу. Эти помощники существуют для случаев, когда вам нужно реалистичное поведение глаз без самостоятельной разработки, например, когда ваши анимационные последовательности не включают моргания или когда глазам необходимо динамически следить за движущейся целью (что невозможно в статических анимационных последовательностях). Их также можно накладывать поверх существующей лицевой анимации, чтобы добавить недостающие элементы, такие как моргания поверх последовательности, которая анимирует только рот.
Auto Blink
Помощник Auto Blink генерирует рандомизированные, естественно выглядящие моргания глаз, управляя кривыми CTRL_L_eye_blink и CTRL_R_eye_blink контрольного рига лица MetaHuman.
Как это работает
Каждый кадр вы вызываете Update MetaHuman Auto Blink из графа событий вашего Face Animation Blueprint и передаёте дельту времени кадра. Функция:
- Отслеживает состояние для каждого персонажа (время следующего моргания, текущая фаза открытия/закрытия и т.д.), привязанное к вызывающему
AnimInstance - Возвращает два значения с плавающей точкой в диапазоне 0..1, одно для левого глаза, другое для правого, показывающие, насколько каждый глаз в данный момент закрыт
- Затем вы сохраняете эти значения в переменных Blueprint и передаёте их в узел Control Rig в графе анимации
Настройка
Два шага: добавьте вызов моргания в граф событий, затем передайте значения в узел Control Rig в графе анимации.
1. Граф событий: управление значениями моргания каждый кадр
В вашем 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. Граф анимации: передача значений в Face Control Rig
В Anim Graph того же Animation Blueprint:
- Разместите узел Control Rig после всей остальной лицевой логики, которая может записывать кривые моргания глаз (например, после
Blend Runtime MetaHuman Lip Syncи любых пользовательских слоёв лицевой анимации) - В панели Details узла установите Control Rig Class на ваш контрольный риг лица 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. Значения по умолчанию уже выглядят естественно для большинства персонажей, разверните ниже, если хотите настроить поведение.
Свойства конфигурации
Время
| Свойство | По умолчанию | Описание |
|---|---|---|
| Min Time Between Blinks | 2.0 с | Минимальный интервал между морганиями, когда глаза полностью открыты. |
| Max Time Between Blinks | 4.0 с | Максимальный интервал между морганиями. Фактический интервал рандомизируется между минимумом и максимумом. |
| Min Closed Hold Time | 0.04 с | Минимальное время, в течение которого глаза остаются полностью закрытыми. |
| Max Closed Hold Time | 0.08 с | Максимальное время, в течение которого глаза остаются полностью закрытыми. |
Интерполяция
| Свойство | По умолчанию | Описание |
|---|---|---|
| Close Interp Speed | 35.0 | Скорость закрытия глаз. Люди закрывают глаза быстрее, чем открывают, поэтому это значение намеренно выше скорости открытия. |
| Open Interp Speed | 18.0 | Скорость открытия глаз. |
| Closed Threshold | 0.97 | Значение, при котором моргание считается "полностью закрытым", и начинается фаза удержания. |
| Open Threshold | 0.02 | Значение, при котором моргание считается "полностью открытым", и планируется следующее моргание. |
Разное
| Свойство | По умолчанию | Описание |
|---|---|---|
| Independent Eyes | false | Если true, левый и правый глаз моргают независимо с разным временем. Если false (по умолчанию), оба глаза моргают идеально синхронно. |
bEnabled (пин функции) | true | Если false, глаза плавно открываются, и моргание приостанавливается. Полезно для кат-сцен, сна, смерти и т.д. |
Управление во время выполнения
Вы также можете вызвать Reset Auto Blink State, чтобы явно очистить внутреннее состояние для данного AnimInstance (например, при возрождении персонажа или переключении состояний в кат-сцене).
Eyes Aim
Помощник Eyes Aim — это узел Animation Blueprint (Runtime MetaHuman Eyes Aim), который заставляет глаза персонажа отслеживать местоположение в мировом пространстве — например, камеру игрока, другого актёра или любую движущуюся цель. Он поддерживает ограничение по рысканию/тангажу, сглаживание, защиту от переворота, когда цель проходит за головой, и опциональные микросаккады для большей реалистичности.
Выбор режима
Узел поддерживает два режима, выбираемых через раскрывающийся список Mode на панели Details узла:
| Режим | Что управляет | Где размещать |
|---|---|---|
| Curves (по умолчанию) | Кривые взгляда глаз контрольного рига лица (CTRL_expressions_eyeLook*) | В Face Animation Blueprint (например, Face_AnimBP), перед узлом Control Rig |
| Bones | Кости FACIAL_L_Eye / FACIAL_R_Eye напрямую, минуя Control Rig | В Face Post Process Animation Blueprint (например, Face_PostProcess_AnimBP), после узла AnimNode_RigLogic |
Режим Curves рекомендуется по умолчанию. Он хорошо сочетается с другими системами лицевой анимации на основе кривых (липсинк, выражения, блендшейпы ARKit и т.д.), поскольку значения комбинируются через обычную оценку Control Rig, а не борются за трансформации костей.
В некоторых вариантах MetaHuman (особенно в старых ригах, включая некоторые, загруженные через Quixel Bridge), кривые взгляда глаз на самом деле не управляют глазами. Видимый симптом: глаза смотрят вниз, зрачки почти скрыты, когда активен узел в режиме Curves, независимо от местоположения цели.
Если вы видите это, переключитесь на режим Bones. Режим Bones напрямую вращает кости глаз, поэтому он работает на любом варианте MetaHuman независимо от того, как подключён Control Rig. См. вкладку Bones в разделе Настройка ниже.
Настройка
- Режим Curves (по умолчанию)
- Режим Bones (запасной)
Настройка по умолчанию. Узел находится в стандартном Face Animation Blueprint и управляет кривыми взгляда глаз контрольного рига лица.
Два шага: добавьте узел в граф анимации, затем передайте ему местоположение цели из графа событий.
1. Граф анимации: добавление узла
В графе анимации вашего Face Animation Blueprint:
- Добавьте узел
Runtime MetaHuman Eyes Aim - Оставьте Mode установленным на Curves на панели Details
- Разместите его после всей остальной лицевой логики, которая может записывать кривые взгляда глаз (липсинк, пользовательские анимации и т.д.), по тому же принципу, что и узел Control Rig для Auto Blink
- Подключите существующую позу к Source Pose
- Подключите выход к следующему узлу в вашей цепочке (или
Output Pose) - Создайте переменную Blueprint типа
Vector(например,TargetWorldLocation) и подключите её к пину Target World Location узла. Вы будете обновлять эту переменную из графа событий на следующем шаге.

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 один раз или как константу на панели Details узла.
Используйте эту настройку, если подход с режимом Curves не работает для вашего варианта MetaHuman (см. предупреждение выше). В режиме Bones узел напрямую вращает кости глаз и должен выполняться после того, как Control Rig завершил оценку, что означает его размещение в Face Post Process Animation Blueprint, а не в обычном Face AnimBP.
Три шага: найдите Post Process Anim BP, добавьте узел после RigLogic, затем передайте ему местоположение цели из графа событий этого Blueprint.
1. Найдите Face Post Process Anim BP
- Откройте ассет лицевого скелетного меша вашего MetaHuman (например,
Faceв папке вашего MetaHuman) - На панели Details ассета найдите поле Post Process Anim Blueprint
- Откройте этот ассет, обычно он называется как
Face_PostProcess_AnimBP
2. Граф анимации: добавление узла после RigLogic
В Anim Graph Face Post Process Anim BP:
- Найдите существующий узел
AnimNode_RigLogic(он преобразует кривые контрольного рига лица в трансформации костей) - Добавьте узел
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. Если ваш персонаж использует кастомизированный скелет с другими именами костей глаз, переопределите их на панели Details узла в категории Bones.
3. Граф событий: передача местоположения цели
Поскольку узел находится в Post Process Anim BP, логика местоположения цели также должна находиться в графе событий этого Blueprint, а не в Face_AnimBP. Настройка идентична режиму Curves (получить местоположение камеры, местоположение актёра или использовать константу), только выполняется внутри Face_PostProcess_AnimBP.

Любая другая логика (липсинк, авто-моргание и т.д.) может оставаться в обычном Face AnimBP. Только вычисление местоположения цели для Eyes Aim нужно перенести сюда. Контрольный риг лица принудительно управляет костями глаз каждый кадр на основе своих кривых. Если бы узел Eyes Aim выполнялся в обычном Face AnimBP (до Control Rig), Control Rig перезаписал бы вращения костей после него. Post Process Anim BP выполняется после того, как Control Rig создал финальные трансформации костей, поэтому это правильное место для применения финальных вращений костей, которые должны "победить".Почему режиму Bones нужен Post Process Anim BP?
Конфигурация
Все настройки доступны на панели Details узла Runtime MetaHuman Eyes Aim.
Прицеливание и ограничение
Прицеливание
| Свойство | По умолчанию | Описание |
|---|---|---|
| Mode | Curves | Выбирает, как управляются глаза. См. Выбор режима. |
| Target World Location | (0,0,0) | Точка в мировом пространстве, на которую смотрят глаза. По умолчанию выведена как пин. |
bEnabled | true | Если false, глаза плавно возвращаются вперёд и игнорируют цель. По умолчанию выведен как пин. |
Ограничение
| Свойство | По умолчанию | Описание |
|---|---|---|
| Max Yaw Degrees | 35° | Максимальное горизонтальное отклонение (рыскание) от направления вперёд головы. Ограничено от 0 до 80. |
| Max Pitch Degrees | 25° | Максимальное вертикальное отклонение (тангаж) от направления вперёд головы. Ограничено от 0 до 80. |
| Anti Flip Behind | true | Предотвращает переворот глаз, когда цель проходит за головой. |
Сглаживание и саккады
Сглаживание
| Свойство | По умолчанию | Описание |
|---|---|---|
| Interp Speed | 12.0 | Скорость сглаживания движения глаз. Выше = более резко, ниже = более вяло. |
Саккады
Микросаккады — это крошечные, рандомизированные сдвиги взгляда, которые постоянно выполняют настоящие глаза. Их добавление позволяет избежать эффекта "мёртвого глаза" при идеально плавном отслеживании.
| Свойство | По умолчанию | Описание |
|---|---|---|
| Enable Saccades | true | Включает/выключает микросаккады. |
| Saccade Yaw Amplitude Deg | 1.5° | Максимальный горизонтальный джиттер за одну саккаду. Небольшие значения (1–2°) кажутся естественными; большие значения выглядят дёргано. |
| Saccade Pitch Amplitude Deg | 1.0° | Максимальный вертикальный джиттер за одну саккаду. Обычно немного меньше амплитуды рыскания. |
| Min Saccade Interval | 0.6 с | Минимальное время между саккадами. |
| Max Saccade Interval | 2.5 с | Максимальное время между саккадами. Большие значения кажутся более спокойными, меньшие — более беспокойными. |
Кости (только режим Bones)
| Свойство | По умолчанию | Описание |
|---|---|---|
| Left Eye Bone | FACIAL_L_Eye | Имя кости левого глаза. Соответствует стандартному скелету лица MetaHuman. |
| Right Eye Bone | FACIAL_R_Eye | Имя кости правого глаза. Соответствует стандартному скелету лица MetaHuman. |
Калибровка (только режим Curves)
Эти значения определяют, как углы в пространстве головы отображаются на значения кривых взгляда глаз контрольного рига лица MetaHuman. Значения по умолчанию настроены для стандартного контрольного рига лица MetaHuman и редко требуют изменения.
| Свойство | По умолчанию | Описание |
|---|---|---|
| Yaw Degrees Per Unit Curve | 30° | Угол, который отображается на значение кривой 1.0 для кривых взгляда по рысканию. |
| Pitch Degrees Per Unit Curve | 25° | Угол, который отображается на значение кривой 1.0 для кривых взгляда по тангажу. |
Комбинирование с липсинком и другими анимациями
Оба помощника разработаны для совместной работы с узлами липсинка плагина и любой пользовательской лицевой анимацией, которая у вас уже есть. Общее правило: размещайте узлы Eyes Aim и Control Rig (авто-моргание) после липсинка и любой пользовательской лицевой анимации, чтобы их значения не были перезаписаны ниже по конвейеру.
Просмотреть подробную блок-схему выполнения (режим Curves vs. Bones)
В зависимости от того, использует ли ваш риг MetaHuman рекомендуемый режим Curves или запасной режим Bones, размещение вашей логики выполнения изменится. Разверните диаграмму ниже, чтобы увидеть точный порядок выполнения для обоих конвейеров:
Автоматическое моргание и синхронизация губ по-прежнему находятся в обычном Face AnimBP в обоих режимах.
Подробнее о наложении с анимациями тела см. в разделе Combining with Existing Animations.
Примечания и ограничения
Эти помощники являются MetaHuman-специфичными. Они полагаются на стандартные имена кривых Control Rig лица MetaHuman (CTRL_L_eye_blink, CTRL_R_eye_blink, CTRL_expressions_eyeLook*) и стандартные кости глаз (FACIAL_L_Eye, FACIAL_R_Eye). Они не предназначены для пользовательских персонажей, не являющихся MetaHuman.
Нужна помощь?
Для запросов на индивидуальную разработку обращайтесь по адресу [email protected].