Экспорт морфов в Unreal Engine 4 из Blender с помощью Send to Unreal.

04. сентября 2020 Blender, Unreal Engine 4 0

О морфинге: https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D1%80%D1%84%D0%B8%D0%BD%D0%B3

Экспорт морфов с помощью Send to Unreal аналогичен экспорту персонажа, но есть некоторые особенности.

Основы по использованию аддона Send to Unreal описаны здесь: https://noostyche.ru/blog/2020/08/24/eksport-v-ue4-s-pomoshchyu-addona-send-to-unreal-dlya-blender/

Официальный репозиторий аддона: https://github.com/EpicGames/BlenderTools/wiki/Send-to-Unreal-Home

По сути, в Blender морфами (Blend Shapes) являются Shape Keys (ключи формы).

Морф-цель — это целевая форма трансформации. «Шаблон», по которому будут смещены вершины основного объекта.

Красной рамкой выделены морф-цели. Это объекты, по форме которых будет трансформирован основной объект. В данном примере это красный конус справа. Вершины основного объекта сместятся в положение вершин, как у морф-цели.

В Blender степень трансформации основного объекта в морф-цель  управляется ключом формы (Shape Key). Значение может быть дробным числом от 0 до 1, то есть от 0 до 100% трансформации в морф-цель.

Трансформация может производиться сразу по нескольким морф-целям. На примере обычной сферы:

Слева зелёной рамкой отмечены три морф-цели, в которые может трансформироваться основной объект. Правее в красной рамке показан результат трансформации сферы сразу по трём морф-целям. Ещё правее в панели параметров зелёной рамкой отмечены Shape Keys со значениями силы воздействия трансформации на основной объект.

Подготовка. Общая информация.

  • Основная геометрия должна быть привязана к скелету (Armature). Из примера видно, что может быть достаточно одной кости.

  • Морф-цель представляет собой обычную геометрию (сетку). Назначать материал не требуется.

  • Количество треугольников в морф-цели должно быть такое же, как у оригинальной модели. В противном случае Blender сообщит об ошибке.
  • Название морф-цели в движке зависит от имени Shape Key в Blender.
  • Если верить официальной документации, количество морфов не ограничено.
  • На момент написания статьи аддон Send to Unreal был доступен в версии 1.3.7. Её особенностью является то, что требуется хотя бы один Action, иначе экспорт скелета и скелетных сеток будет завершаться ошибкой. Если требуются только морфы без скелетной анимации, то можно использовать пустой Action с Fake User.

 

Подготовка. Подключение морф-целей.

Примечание: Под основным объектом подразумевается объект, к которому будут подключены морф-цели посредством Shape Keys.

Сначала требуется создать базовый Shape Key в основном объекте. В примере им является красный конус с именем SK_ConeMorphTrans.

Для этого выделить основной объект, перейти в «Настройки данных объекта» и нажать кнопку «+» в Shape Keys.

Теперь можно подключать заранее заготовленные морф-цели:

Сначала выделяются морф-цели, а потом в выделение добавляется основной объект. В данном примере им является красный конус с именем SK_ConeMorphTrans.

В «Настройках данных объекта» основного объекта нажать кнопку «стрелочка вниз» и выбрать Join as Shapes. Морф-цели добавятся в список Shape Keys под своими именами:

При необходимости эти Shape Key можно переименовать. Достаточно сделать двойной клик на Shape Key, который требуется переименовать.

Примечание: В движке морфы будут называться так же, как Shape Key в Blender.

Теперь остаётся завершить подготовку и произвести экспорт в движок.

Подготовка. Распределение по коллекциям.

Процесс подготовки и непосредственный экспорт с помощью аддона Send to Unreal аналогичен экспорту скелетной геометрии, который был описан здесь: https://noostyche.ru/blog/2020/08/24/eksport-v-ue4-s-pomoshchyu-addona-send-to-unreal-dlya-blender/

Кратко:

  • Удобно использовать горячую клавишу M для добавления выделенных объектов в коллекции.
  • Необходимо добавить основной объект, в данном примере это SK_ConeMorphTrans, в коллекцию Mesh, а скелет Armature.Cone в коллекцию Rig. При этом морф-цели добавлять в коллекции не требуется.

Экспорт.

  • Запустить Unreal Engine.
  • Открыть проект, в который будет производиться экспорт.
  • Нажать кнопку Send To Unreal в Blender:

  • Должна появиться загрузочная полоска, сигнализирующая, что в движке идёт процесс компиляции экспортируемого ассета:

Результат в движке:

Управление морфами в UE4. Просмотр.

В Asset Manager в правой панели можно будет увидеть тот самый список морфов (Shape Keys).

В этой панели можно управлять силой трансформации объекта в морф-цель. Примечательным отличием от Blender является то, что значение меняется в диапазоне от -1 до 1, а не от 0 до 1. Это позволяет трансформировать в «обратную» сторону. К примеру, если при значении 1 конус сжимается по отношению к основной форме, то при -1 — расширится (удлинится).

Как и в Blender, можно комбинировать трансформацию от нескольких морфов:

Простой вариант запуска анимации морфов через Blueprint.

В примере используется Level Blueprint. Конечный результат:

Потребуются следующие основные узлы:

  • Timeline для плавного изменения значения силы трансформации с течением времени по кривой.

    • Создать Float Track.

    • В примере длина трека 10 секунд.
    • Используется 3 ключа. Первый и последний с нулевым значением, чтобы можно было зациклить бесшовно. Ключ посередине со значением 1.
    • Выходным значением будет число с плавающей запятой (float).
  • Set Morph Target — ключевой узел для работы анимации (трансформации) морфа. В него подключается ссылка на объект, имя морфа и float-значение силы трансформации (можно изменять динамически).

Для удобства хранения значения имени морфа создана приватная переменная с типом Name. В данном примере именем морфа является Morph_001.

По итогу получилась такая конструкция:

Результат:

Использования морфов совместно с анимацией.

В примере будет рассмотрен вариант воспроизведения трансформации по морфу через кривую в ранее созданной анимации. То есть трансформация будет срабатывать при воспроизведении анимации. С целью демонстрации создана «пустая» анимация прямо в движке:

Asset Manager / Create Animation / Current Pose

Потребуется указать название и путь сохранения файла анимации. В примере анимация называется ANIM_ConeMorphTrans_001.

По умолчанию будет создана анимация в 1 кадр. Необходимо увеличить число кадров.

На свободном поле временной шкалы нажать ПКМ и выбрать Append at the end. Это добавит кадры от конца временной шкалы. Количество кадров указывается в появившемся маленьком окошке:

В данном случае указано 30 кадров, что увеличит длительность анимации до 1 секунды.

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

На строке Curves нажать ПКМ и в меню выбрать Add Curve с именем, как у морфа, в данном примере это Morph_001.

Кривая создана. Теперь необходимо её отредактировать, добавив ключи значений на временную шкалу.

ПКМ на кривой, в данном случае на Morph_001, и выбрать Edit Selected Curves.

Откроется вкладка редактирования кривой.

ПКМ на временной шкале и в списке выбрать Add Key. Ключи будут создаваться под курсором с выравниванием по границе кадра.

В данном примере создано 3 ключа. На нулевом (первом) кадре со значением 0, на 15-ом кадре со значением 1 и на 29 кадре со значением 0. Тем самым получается зацикленная анимация трансформации.

Результат:


На этом заканчивается самое важное о простом варианте импорта и использования морфов в Unreal Engine 4. Есть вариант применения морфов для статичной геометрии, но, увы, по документации метод завязан на скрипт для 3D Max.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *