Экспорт морфов в Unreal Engine 4 из Blender с помощью Send to Unreal.
О морфинге: 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.