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!

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

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

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

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

Trouble! У Вас UE каждый тик генерирует sbsar материал - естественно он будет тормозить.
Если надо сделать анимацию текстур, то эти текстуры надо заранее просчитать. В игровом движке вообще не надо ничего в динамике считать(кроме физики), всё должно быть заранее просчитано.

2

Чуть-чуть опередили.
В 4й части я как раз хотел про это написать)

Мне показалось или ты сделал миллион текстур, а затем менял их на полигоне?

Не совсем. Происходит генерация текстур. Т.к. материал процедурный, то меняя пару параметров у меня происходят изменения во всех картах

Почему не Unreal Engine 5? Пока что разработчики не подготовили плагин для этой версии движка и я предполагаю, что именно из-за раннего доступаМожно сделать в актуальной привычной версии движка материал на анриле, а потом перенести на уе5, и проверить как он будет смотреться на нанитной модели при люмене..
Перенос файла материала это два клика, ctrl c ctrl v из одной папочки в другу, или через кнопку migrate

Может сработать, а может и нет. По идее он должен заработать, сломав генерацию нанитов.

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