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.
Т.к. мой материал состоит из подграфов, при импорте *.sbsar выбираю основной граф, у других же нажимаю cancel, чтобы не мешали и не занимали место. Про это на сайте разработчиков есть информация.
В content browser'е видно, что теперь в проекте у нас имеются несколько файлов, созданные из *.sbsar архива:
- Substance instance factory - по сути это и есть *.sbsar файл (green icon);
- Substance graph instance - здесь находятся все входные и выходные параметры графа (red icon);
- Материалы и текстуры, сгенерированые из substance graph instance.
Как помним из прошлого раздела, я использовал функцию $time в самом графе. Мы проверили как анимация работает в substance player'е. Теперь пришло время проверить ее работу в движке. К счастью, Allegoritmic создали несколько готовых инструментов, чтобы можно было взаимодействовать с сущностями substance внутри ue4. Разработчики так же предоставили подробную информацию на своем сайте, где я в основном и брал всю реализацию, за что им отдельная благодарность)
Я создал Blueprint, внутри которого и буду вести всю логику работы. Это удобно: просто выбрать в content browser'е готовый ассет и перенести на карту, где останется только расположить в подходящем месте.
В event graph'е я прописал небольшую логику, опираясь на вышеупомянутые ссылки. Для себя я решил сделать несколько параметров внутри ue4, чтобы ими можно было регулировать скорость анимации (speed) и ее продолжительность(time_anim).
И вот здесь начались проблемы.
Как видно на видео частота кадров ужасно проседает, с учетом того, что сцена пустая + ко всему добавляется рывки при рендеринге анимации текстур. Для наглядности, я включил во вьюпорте отображение сетки геометрии, что означает, что у меня действительно получилось анимировать текстуры, но это явно не тот результат, которого я ждал.
В следующей части я подведу все итоги и покажу результат своего эксперимента.
Всем спасибо и до скорых встреч!
Trouble! У Вас UE каждый тик генерирует sbsar материал - естественно он будет тормозить.
Если надо сделать анимацию текстур, то эти текстуры надо заранее просчитать. В игровом движке вообще не надо ничего в динамике считать(кроме физики), всё должно быть заранее просчитано.
Чуть-чуть опередили.
В 4й части я как раз хотел про это написать)
Мне показалось или ты сделал миллион текстур, а затем менял их на полигоне?
Не совсем. Происходит генерация текстур. Т.к. материал процедурный, то меняя пару параметров у меня происходят изменения во всех картах
Почему не Unreal Engine 5? Пока что разработчики не подготовили плагин для этой версии движка и я предполагаю, что именно из-за раннего доступаМожно сделать в актуальной привычной версии движка материал на анриле, а потом перенести на уе5, и проверить как он будет смотреться на нанитной модели при люмене..
Перенос файла материала это два клика, ctrl c ctrl v из одной папочки в другу, или через кнопку migrate
Может сработать, а может и нет. По идее он должен заработать, сломав генерацию нанитов.
У меня немного другой принцип.
Нанит предполагает уменьшение геометрии. Мой же пайплайн создан для того, чтобы на минимальном количестве геометрии (в примере у меня видно, что я вообще одну плоскость использую) создать анимацию контента.
Это пока совсем зелёная тропинка, которую я пытаюсь нащупать. И она имеет очень много ограничений.