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

Помощники анимации глаз

Помимо синхронизации губ, плагин Runtime MetaHuman Lip Sync включает две дополнительные вспомогательные утилиты для анимации глаз MetaHuman:

  • Автоматическое моргание: вспомогательный инструмент, создающий естественные, случайные моргания глаз у MetaHuman
  • Направление взгляда: узел Animation Blueprint, заставляющий глаза MetaHuman смотреть на точку в мировом пространстве

Эти функции полностью независимы от синхронизации губ и могут использоваться отдельно, вместе или в сочетании с узлами синхронизации губ. Они представляют собой легковесные вспомогательные инструменты, которые можно просто добавить в проект для реалистичного поведения глаз без необходимости создавать его вручную.

Предварительные обзоры функций

Автоматическое моргание: автоматические моргания глаз
Направление взгляда: отслеживание камеры игрока
Направление взгляда: слежение за движущейся целью-актёром

Видео-прохождение

Полное прохождение обоих помощников, включая обходной путь для устаревшего рига.

Когда использовать эти помощники

Если ваш пайплайн лицевой анимации уже включает моргания и динамический взгляд, эту страницу можно пропустить. Эти вспомогательные инструменты существуют для случаев, когда вам нужно реалистичное поведение глаз без самостоятельной разработки, например, когда ваши анимационные последовательности не содержат морганий или когда глаза должны динамически следить за движущейся целью (чего статичные анимационные последовательности сделать не могут). Их также можно накладывать поверх существующей лицевой анимации, чтобы добавить недостающие элементы, например, моргания поверх последовательности, которая анимирует только рот.

Вспомогательный инструмент автоматического моргания создает рандомизированные, естественно выглядящие моргания глаз, управляя кривыми CTRL_L_eye_blink и CTRL_R_eye_blink контрольного рига лица MetaHuman.

Как это работает

Каждый кадр вызывайте Update MetaHuman Auto Blink из графа событий вашего анимационного блюпринта лица и передавайте дельта-время кадра. Функция:

  1. Отслеживает состояние каждого персонажа (время следующего моргания, текущая фаза открытия/закрытия и т.д.), привязанное к вызывающему AnimInstance
  2. Возвращает два значения с плавающей точкой в диапазоне 0..1: одно для левого глаза, другое для правого, показывающие, насколько каждый глаз закрыт в данный момент
  3. Затем вы сохраняете эти значения в переменных Blueprint и передаёте их в узел Control Rig в графе анимации

Настройка

Два шага: добавьте вызов моргания в ваш Event Graph, затем передайте значения в узел Control Rig в Anim Graph.

В вашем Face Animation Blueprint (например, Face_AnimBP или его дублированной/скопированной версии, см. Руководство по настройке) откройте Event Graph и добавьте следующее в Event Blueprint Update Animation:

  1. Вызовите Update MetaHuman Auto Blink
  2. Подключите Delta Time X (из события) к Delta Seconds
  3. (Необязательно) Настройте структуру Config. Значения по умолчанию уже выглядят естественно
  4. Преобразуйте Left Blink Value и Right Blink Value в переменные Blueprint (например, LeftBlinkValue, RightBlinkValue)

Auto Blink Event Graph setup

В Anim Graph того же Animation Blueprint:

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

Auto Blink Anim Graph setup

Размещение имеет значение

Разместите узел 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, а не конфликтуют из-за трансформаций костей.

Если режим Curves не работает, используйте режим Bones.

На некоторых вариантах MetaHuman (особенно на старых ригах, включая те, что загружены через Quixel Bridge), кривые направления взгляда на самом деле не управляют глазами. Видимый симптом — глаза смотрят вниз, зрачки почти скрыты, когда активен узел режима кривых, независимо от целевого положения.

Если вы видите это, переключитесь в режим костей. Режим костей напрямую вращает кости глаз, поэтому он работает с любым вариантом MetaHuman независимо от того, как настроен Control Rig. Смотрите вкладку Кости в разделе Настройка ниже.

Настройка

Стандартная настройка. Нод находится в стандартном анимационном блюпринте лица и управляет кривыми взгляда глаз в контрольном риге лица.

Два шага: добавьте узел в вашу Anim Graph, затем передайте ему целевую позицию из Event Graph.

1. Anim Graph: добавьте узел

В вашем Anim Graph анимационного блюпринта лица:

  1. Добавьте узел Runtime MetaHuman Eyes Aim
  2. Оставьте Mode установленным на Curves в панели Details
  3. Разместите его после всей остальной логики лица, которая может записывать кривые взгляда (липсинк, пользовательские анимации и т.д.), по тому же принципу, что и узел Auto Blink Control Rig
  4. Подключите существующую позу к Source Pose
  5. Подключите выход к следующему узлу в вашей цепочке (или Output Pose)
  6. Создайте переменную Blueprint типа Vector (например, TargetWorldLocation) и подключите её к пину Target World Location узла. Вы будете обновлять эту переменную из Event Graph на следующем шаге.

Eyes Aim Anim Graph setup

2. Граф событий: передайте целевую локацию

Пин Target World Location ожидает FVector в мировых координатах. Часто требуется, чтобы MetaHuman смотрел на камеру игрока. В Event Blueprint Update Animation:

  1. Получить Player Camera Manager (Player Index 0)
  2. Проверить Is Valid
  3. Если допустимо, вызвать Get Camera Location
  4. Сохранить его в переменной Blueprint TargetWorldLocation

Eyes Aim, tracking the camera

Чтобы отслеживать произвольного актора (NPC, предмет, точку интереса), получайте его местоположение каждый кадр и сохраняйте в ту же переменную. Для фиксированной точки взгляда установите Target World Location один раз или как константу на панели «Детали» узла.

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

Все настройки отображаются на панели Детали узла Runtime MetaHuman Eyes Aim.

Цель и Ограничение

Цель

СвойствоПо умолчаниюОписание
ModeКривыеВыбирает, как управляются глаза. См. Выбор режима.
Целевое местоположение в мире(0,0,0)Точка в мировом пространстве, на которую смотрят глаза. По умолчанию отображается как контакт.
bEnabledtrueКогда 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.

Нужна помощь?

Join our Discord
online · support

Для запросов на индивидуальную разработку обращайтесь по адресу [email protected].