Texture Animation Pipeline with Substance Designer and Unreal Engine 4: Chapter 3 — Conquistadors

Texture Animation Pipeline with Substance Designer and Unreal Engine 4: Chapter 3 — Conquistadors

Всем привет!

Продолжаю рассказывать про кастомный пайплайн анимированных текстур. Эта 3-ая часть в серии. Предыдущие статьи здесь:

В прошлых статьях я рассказал как подготовить процедурный материал и настроить его для экспорта в движок.

Сейчас речь пойдет про работу внутри Unreal Engine 4.

На момент тестирования своего пайплайна я использовал версию движка 4.26.2. Всё дальнейшее описание будет касаться именно этой версии.

Почему не Unreal Engine 5? Пока что разработчики не подготовили плагин для этой версии движка и я предполагаю, что именно из-за раннего доступа. Как только UE5 выйдет полноценно в свет, тогда и будет возможность установить Substance плагин.

Чтобы движок поддерживал формат Substance, нужно поставить плагин от компании Allegoritmic. Сделать это можно через Epic Launcher в Marketplace.

The Substance plugin in Unreal Marketplace
The Substance plugin in Unreal Marketplace

Т.к. мой материал состоит из подграфов, при импорте *.sbsar выбираю основной граф, у других же нажимаю cancel, чтобы не мешали и не занимали место. Про это на сайте разработчиков есть информация.

В content browser'е видно, что теперь в проекте у нас имеются несколько файлов, созданные из *.sbsar архива:

  1. Substance instance factory - по сути это и есть *.sbsar файл (green icon);
  2. Substance graph instance - здесь находятся все входные и выходные параметры графа (red icon);
  3. Материалы и текстуры, сгенерированые из substance graph instance.
Content browser in UE4
Content browser in UE4

Как помним из прошлого раздела, я использовал функцию $time в самом графе. Мы проверили как анимация работает в substance player'е. Теперь пришло время проверить ее работу в движке. К счастью, Allegoritmic создали несколько готовых инструментов, чтобы можно было взаимодействовать с сущностями substance внутри ue4. Разработчики так же предоставили подробную информацию на своем сайте, где я в основном и брал всю реализацию, за что им отдельная благодарность)

Я создал Blueprint, внутри которого и буду вести всю логику работы. Это удобно: просто выбрать в content browser'е готовый ассет и перенести на карту, где останется только расположить в подходящем месте.

New blueprint class
New blueprint class

В event graph'е я прописал небольшую логику, опираясь на вышеупомянутые ссылки. Для себя я решил сделать несколько параметров внутри ue4, чтобы ими можно было регулировать скорость анимации (speed) и ее продолжительность(time_anim).

Event graph in blueprint
Event graph in blueprint

И вот здесь начались проблемы.

Trouble!

Как видно на видео частота кадров ужасно проседает, с учетом того, что сцена пустая + ко всему добавляется рывки при рендеринге анимации текстур. Для наглядности, я включил во вьюпорте отображение сетки геометрии, что означает, что у меня действительно получилось анимировать текстуры, но это явно не тот результат, которого я ждал.

В следующей части я подведу все итоги и покажу результат своего эксперимента.

Всем спасибо и до скорых встреч!

17
9 комментариев