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

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

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

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

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

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

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

Пошаговое видео

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

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

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

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

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

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

  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

В графе анимаций того же Animation Blueprint:

  1. Разместите узел Control Rig, который будет управлять кривыми моргания. То, куда именно он помещается, зависит от того, комбинируете ли вы Auto Blink с другой лицевой анимацией (синхронизацией губ, пользовательскими последовательностями и т. д.):
    • Без другой лицевой анимации: разместите узел Control Rig напрямую в основной цепочке, перед Output Pose.
    • Комбинирование с синхронизацией губ и/или другой лицевой анимацией: подключите этот узел Control Rig к узлу Layered blend per bone вместо размещения напрямую в цепочке, см. подсказку ниже.
  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 после узлов смешивания липсинка (и любых других узлов лицевой анимации) в цепочке, чтобы значения моргания не перезаписывались. Если вы всё же комбинируете с липсинком или другой лицевой анимацией, следуйте руководству Комбинирование с существующими анимациями и подключите этот узел Control Rig к входу Base Pose узла Layered blend per bone вместо этого — узел слоёного смешивания сохраняет оба эффекта, а не позволяет одному просто перезаписывать другой.

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

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

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

Тайминг

СвойствоПо умолчаниюОписание
Мин. интервал между морганиями2,0 сМинимальный интервал между морганиями, когда глаза полностью открыты.
Макс. интервал между морганиями4,0 сМаксимальный интервал между морганиями. Фактический интервал выбирается случайным образом между минимальным и максимальным значениями.
Мин. время удержания закрытого состояния0,04 сМинимальное время, в течение которого глаза остаются полностью закрытыми.
Макс. время удержания закрытого состояния0,08 сМаксимальное время, в течение которого глаза остаются полностью закрытыми.

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

СвойствоПо умолчаниюОписание
Скорость закрытия35.0Скорость при закрытии глаз. Люди закрывают глаза быстрее, чем открывают, поэтому это значение намеренно выше скорости открытия.
Скорость открытия18.0Скорость при открытии глаз.
Порог закрытия0.97Значение, при котором моргание считается «полностью завершённым» и начинается фаза удержания.
Порог открытия0.02Значение, при котором моргание считается «полностью открытым» и планируется следующее моргание.

Разное

СвойствоПо умолчаниюОписание
Независимые глазаfalseКогда true, левый и правый глаз моргают независимо с разным временем. Когда false (по умолчанию), оба глаза моргают идеально синхронно.
bEnabled (пин функции)trueКогда false, глаза плавно открываются, и моргание приостанавливается. Полезно для катсцен, сна, смерти и т. д.

Runtime Control

Вы также можете вызвать Reset Auto Blink State, чтобы явно очистить внутреннее состояние для заданного AnimInstance (например, при возрождении персонажа или переключении кинематографических состояний).

Прицеливание взглядом

Вспомогательный узел Eyes Aim — это узел Animation Blueprint (Runtime MetaHuman Eyes Aim), который заставляет глаза персонажа следить за точкой в мировом пространстве, например, за камерой игрока, другим актором или любой движущейся целью. Он поддерживает ограничение по рысканию/тангажу, сглаживание, защиту от переворота, когда цель проходит за головой, и опциональные микросаккады для дополнительной реалистичности.

Выбор режима

Узел поддерживает два режима, выбираемых через раскрывающийся список Mode на панели Details узла:

ModeЧто это управляетГде это разместить
Кривые (по умолчанию)Кривые слежения за взглядом Control Rig лица (CTRL_expressions_eyeLook*)В Face Animation 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), кривые взгляда на самом деле не управляют глазами. Видимый симптом заключается в том, что глаза смотрят вниз, а зрачки почти скрыты, когда активен узел в режиме Curves, независимо от целевого местоположения.

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

Установка

Стандартная настройка. Нода находится в стандартном Face Animation Blueprint и управляет кривыми взгляда глаз в Control Rig лица.

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

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

В Anim Graph вашего Face Animation Blueprint:

  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 один раз или как константу на панели Details узла.

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

Все настройки доступны на панели Details узла 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.
Калибровка (только режим кривых)

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

СвойствоПо умолчаниюОписание
Кривая градусов рыскания на единицу30°Угол, который соответствует значению кривой 1.0 для кривых взгляда по рысканию.
Кривая градусов тангажа на единицу25°Угол, который соответствует значению кривой 1.0 для кривых взгляда по тангажу.

Объединение с липсинком и другими анимациями

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

  • Eyes Aim следует размещать после липсинка и любой пользовательской анимации лица в той же цепочке, чтобы его значения взгляда не перезаписывались ниже по цепочке. См. Выбор режима и Настройка выше.
  • Auto Blink использует узел Layered blend per bone вместо простого линейного размещения, см. подсказку Размещение имеет значение выше о подключении узла Control Rig к его входу Base Pose.
Посмотреть подробную блок-схему выполнения (режим кривых и режим костей)

В зависимости от того, использует ли ваш риг 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].