Экспорт морфов в 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 не будет опубликован.