{"id":3842,"url":"\/distributions\/3842\/click?bit=1&hash=4c67e91a2a588f03561899c61c4eabfeb37008500c6498f3b9533b2e8845d454","title":"\u041e\u0431\u043e\u0436\u0430\u0435\u0442\u0435 \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0445? ","buttonText":"\u0412\u0430\u043c \u0441\u044e\u0434\u0430","imageUuid":"11cfcef6-3125-52d0-8ef8-49fb205d3efe","isPaidAndBannersEnabled":false}
Gamedev
Антон Пухов

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

Т.к. мой материал состоит из подграфов, при импорте *.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

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

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

New blueprint class

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

Event graph in blueprint

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

Trouble!

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

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

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

0
9 комментариев
Написать комментарий...
Victor Stepanov
Trouble!

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

Ответить
Развернуть ветку
Антон Пухов
Автор

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

Ответить
Развернуть ветку
Александр Человек

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

Ответить
Развернуть ветку
Антон Пухов
Автор

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

Ответить
Развернуть ветку
Ярослав Голубев
Почему не Unreal Engine 5? Пока что разработчики не подготовили плагин для этой версии движка и я предполагаю, что именно из-за раннего доступа

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

Ответить
Развернуть ветку
Александр Человек

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

Ответить
Развернуть ветку
Ярослав Голубев

Если нет прозрачности и смещения вертексов, врядли сломается

Ответить
Развернуть ветку
Антон Пухов
Автор

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

Ответить
Развернуть ветку
Владислав Румянцев

Думал что в шейдере такой эффект сделать без проблем и тормозов через коорд текстур и вырезом пискелей, но еще не дошел до этого пока. Попробую тоже.

Ответить
Развернуть ветку
Читать все 9 комментариев
null