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

Вспомогательные инструменты для анимации глаз

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

  • Auto Blink: вспомогательный инструмент, который создает естественные, рандомизированные моргания глаз на MetaHuman
  • Eyes Aim: нода Animation Blueprint, которая заставляет глаза MetaHuman смотреть на точку в мировом пространстве

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

Предварительный просмотр функций

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

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

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

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

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

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

Настройка

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

1. Граф событий: управление значениями моргания каждый кадр

В вашем 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

2. Граф анимации: передача значений в Face Control Rig

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

  1. Разместите узел Control Rig после всей остальной лицевой логики, которая может записывать кривые моргания глаз (например, после Blend Runtime MetaHuman Lip Sync и любых пользовательских слоёв лицевой анимации)
  2. В панели Details узла установите Control Rig Class на ваш контрольный риг лица 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

Расположение имеет значение

Разместите узел Control Rig после узлов смешивания липсинка (и любых других узлов лицевой анимации), чтобы значения моргания не были перезаписаны другой логикой.

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

Узел Update MetaHuman Auto Blink принимает опциональную структуру Config. Значения по умолчанию уже выглядят естественно для большинства персонажей, разверните ниже, если хотите настроить поведение.

Свойства конфигурации

Время

СвойствоПо умолчаниюОписание
Min Time Between Blinks2.0 сМинимальный интервал между морганиями, когда глаза полностью открыты.
Max Time Between Blinks4.0 сМаксимальный интервал между морганиями. Фактический интервал рандомизируется между минимумом и максимумом.
Min Closed Hold Time0.04 сМинимальное время, в течение которого глаза остаются полностью закрытыми.
Max Closed Hold Time0.08 сМаксимальное время, в течение которого глаза остаются полностью закрытыми.

Интерполяция

СвойствоПо умолчаниюОписание
Close Interp Speed35.0Скорость закрытия глаз. Люди закрывают глаза быстрее, чем открывают, поэтому это значение намеренно выше скорости открытия.
Open Interp Speed18.0Скорость открытия глаз.
Closed Threshold0.97Значение, при котором моргание считается "полностью закрытым", и начинается фаза удержания.
Open Threshold0.02Значение, при котором моргание считается "полностью открытым", и планируется следующее моргание.

Разное

СвойствоПо умолчаниюОписание
Independent EyesfalseЕсли 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, а не борются за трансформации костей.

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

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

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

Настройка

Настройка по умолчанию. Узел находится в стандартном Face Animation Blueprint и управляет кривыми взгляда глаз контрольного рига лица.

Два шага: добавьте узел в граф анимации, затем передайте ему местоположение цели из графа событий.

1. Граф анимации: добавление узла

В графе анимации вашего Face Animation Blueprint:

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

Настройка графа анимации Eyes Aim

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, отслеживание камеры

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

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

Все настройки доступны на панели Details узла Runtime MetaHuman Eyes Aim.

Прицеливание и ограничение

Прицеливание

СвойствоПо умолчаниюОписание
ModeCurvesВыбирает, как управляются глаза. См. Выбор режима.
Target World Location(0,0,0)Точка в мировом пространстве, на которую смотрят глаза. По умолчанию выведена как пин.
bEnabledtrueЕсли false, глаза плавно возвращаются вперёд и игнорируют цель. По умолчанию выведен как пин.

Ограничение

СвойствоПо умолчаниюОписание
Max Yaw Degrees35°Максимальное горизонтальное отклонение (рыскание) от направления вперёд головы. Ограничено от 0 до 80.
Max Pitch Degrees25°Максимальное вертикальное отклонение (тангаж) от направления вперёд головы. Ограничено от 0 до 80.
Anti Flip BehindtrueПредотвращает переворот глаз, когда цель проходит за головой.
Сглаживание и саккады

Сглаживание

СвойствоПо умолчаниюОписание
Interp Speed12.0Скорость сглаживания движения глаз. Выше = более резко, ниже = более вяло.

Саккады

Микросаккады — это крошечные, рандомизированные сдвиги взгляда, которые постоянно выполняют настоящие глаза. Их добавление позволяет избежать эффекта "мёртвого глаза" при идеально плавном отслеживании.

СвойствоПо умолчаниюОписание
Enable SaccadestrueВключает/выключает микросаккады.
Saccade Yaw Amplitude Deg1.5°Максимальный горизонтальный джиттер за одну саккаду. Небольшие значения (1–2°) кажутся естественными; большие значения выглядят дёргано.
Saccade Pitch Amplitude Deg1.0°Максимальный вертикальный джиттер за одну саккаду. Обычно немного меньше амплитуды рыскания.
Min Saccade Interval0.6 сМинимальное время между саккадами.
Max Saccade Interval2.5 сМаксимальное время между саккадами. Большие значения кажутся более спокойными, меньшие — более беспокойными.
Кости (только режим Bones)
СвойствоПо умолчаниюОписание
Left Eye BoneFACIAL_L_EyeИмя кости левого глаза. Соответствует стандартному скелету лица MetaHuman.
Right Eye BoneFACIAL_R_EyeИмя кости правого глаза. Соответствует стандартному скелету лица MetaHuman.
Калибровка (только режим Curves)

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

СвойствоПо умолчаниюОписание
Yaw Degrees Per Unit Curve30°Угол, который отображается на значение кривой 1.0 для кривых взгляда по рысканию.
Pitch Degrees Per Unit Curve25°Угол, который отображается на значение кривой 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.

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

Join our Discord
online · support

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