UE 5. Оптимизируем мегаскановский камешек.
ฝัง
- เผยแพร่เมื่อ 8 เม.ย. 2024
- Наглядный пример оптимизации мегаскановского камешка с уменьшением веса материала почти в 800 раз. Optimizing Quixel Megascans asset the rock.
Сделано это следующим образом, просто зашил текстуру Base Color в цвета вершин полигональной сетки. Текстуру АО зашил так-же в цвета вершин в альфа-канал, а вместо карты нормалей 8к использовал повторяющийся фрагмент разрешением 512х512.
Поддержать можно тут boosty.to/valkyrie
С вопросами сюда / discord
Поддержать можно тут boosty.to/valkyrie
С вопросами сюда discord.gg/7swknc5yxa
Это видео должны посмотреть разработчики смуты
А им зачем) , они уже всё, сдали и отдыхают )
конечно. ведь игре которая весит 25 гигов оооочень сильно нужно оптимизировать размер текстур) да)
@@shimoda47 а ты наверное думаешь, что текстуры кешируются на другой компьютер, да ?
@@protuberanecjk4704 то есть ты хочешь сказать что смута так много видеопамяти занимает? если интересно, то буду дома могу замерить
Качество картинки или неоптимизированность это не проблемы игры Смута. У нее другие проблемы.
Благодарность за то, что делитесь техниками оптимизации проекта. Да, засилие 3д сканов с огромными тектурами - это современный бич индустрии. Если у вас есть опыт оптимизации или вы знаете какие-то наилучшие практики в других аспектах игровой разработки, будьте добры, поделитесь. Сделайте, если найдется время, серию коротких роликов или один большой ролик. Понимаю, что отдачи вы, скорее всего, не получите, но кто-то вам будет по-настоящему благодарен. Еще раз спасибо!🤗
Весь мой опыт получен исключительно в процессе самообучения, т.к. в геймдеве я никогда не работал. Небольшое участие в некоторых инди проектах сложно назвать серьёзным опытом. Так что возможно есть и лучшие варианты, если узнаю или придумаю расскажу.
@@GMTechArt Как мы видим, в головах самоучек больше здравого смысла, чем в пустых головах специалистов ААА студий, которые вообще не парятся над оптимизацией проекта.
@@tangentsmith2961 а вы участвовали в ААА продакшене, что бы так уверенно заявлять?
@@user-ss6et8jt5l А обязательно участвовать в ААА продакшене, что бы видить, что одна студия на 10 выпускает сегодня рабочую игру с нормальной оптимизацией? Может вы думаете, что нужно быть мишеленовским шефом, что бы понять, что вас накормили дерьмом? Уж извините за такое сравнение.
@@user-ss6et8jt5l Тут не обязательно учвствовать ты как потребитель (Игрок) видишь на сколкьо ужасная оптимизация в текущем времени от разрабов. Видеокарты загружены под 40-60% а ЦПУ под 100%. В то время как в инди проектах соло разрабы загружают видюху под 90% . SOLO CARL SOLO
Спасибо. Очень офигительно
Большой вы молодец, спасибо. Очень вы внимательный
Спасибо автору за полезный и интересный туторчик !
Очень спасибо ) , сохранил в закладки для обязательного использования )
Ля чел, огромное тебе спасибо, черезвычайно полезный ролик
Отлично видео , подписался и лайк поставил , ждём ещё подобного контента
Крутой метод, спасибо!
Гениальный способ) лайк)
Спасибо, очень полезно! Скажите, а в чем вы планируете моделировать геометрию зданий и сооружений для своей игры ?
В Maya я другими 3D пакетами пользоваться не умею.
Мегагосовский просовский камешек)))
Не знаю. Не уверен на счёт оптимизации честно говоря.
Наниты так устроены, что они пытаются сохранить цвета вершин, хард еджи, силуэт и швы на UV. Посмотрите, пожалуйста, что у вас происходит с упрощением меша на расстоянии достаточно ли эффективно нанит их упрощает по сравнению с оригиналом, есть вероятность что такие плотные меши с запечёными в них вертекс колорами будут плохо упрощаться и приводить к квад овердро.
Это один момент.
Второй момент вы могли текстуру бейка уменьшить до 2048 и смешать её с дитейл нормалом и сделать дистанс фейд, чтобы на расстоянии дитейл текстура пропадала.
Проблема вашего примера сейчас в том что карта нормалей не соответствует форме объекта и это хорошо заметно на среднем ракурсе.
Ну и вы правильно заметили, что 8к не нужна. Она не нужна в принципе, поэтому вам следовало "оптимизировать" 4к изначально, потому что в здравом уме их всё равно никто в реальном примере бы не стал использовать.
Не попадалось информации что цвета вершин сетки оказывают влияние на упрощение сетки. А то что карта нормалей не соответствует это понятно. В идеале я бы и юви развёртку переделал, а если бы задача была сделать очень качественно то сделал бы совсем по другому, хотя данные в цветах вершин сетки так же играли бы очень важную, просто использовались бы в качестве маски для смешивания текстур.
@@GMTechArt это эксперементально можно установить. Возьмите кубик с сабдивом и покрасьте ему какую-то область, потом просто включите дебаг нанит трианглов и плавно меняте расстояние. Повторите то же самое для кубика без прокраса вертексов - увидите разницу. Когда прокраса нет первыми нанит срезает все полигоны на плоскостях, когда прокрас есть - он их пытается сохранить по максимуму, видимо анализируя разницу в значениях цветов вершин.
Если бы этого не было, то прокрас мешей бы очень значительно менялся, что приводило бы к заметным скачкам различных пятен на текстурах в материалах с вертекс блендом, потому что нанит постоянно перестраивает сетку.
@@FishMan1nsk нанит не учитывает цвета вершин, так было раньше так и сейчас. Ему важна только геометрия это я ещё в этом видео показывал th-cam.com/video/iC4E9WluxyM/w-d-xo.html
@@FishMan1nsk Хотя вы правы действительно учитывает, но увы не достаточно к сожалению, всё равно сильно упрощает, интересно это можно как ни-будь настроить?
@@GMTechArt не знаю можно или нет, возможно где-то есть какие-то настройки. Он вроде точно сохраняет большую разницу в цвете. Типа контрастные переходы или как-то их усредняет. Я много тестов не делал честно говоря, чтобы понять конкретное его поведение.
Вообще он учитывает несколько факторов, таких как УВ, вертекс колор и разницу в нормалях вершин и вероятно разницу в расстоянии вершин друг от друга. По сути работает так же как любой дециматор.
Поэтому нужно следить переодически за тем как он сетку оптимайзит. По-моему, например, если сплющить в точку все вершины на одном или нескольких UV каналах, то он хуже начинает оптимайзить. По крайней мере у меня есть меш, где при прочих равных если у меня на одном из каналов экспортируются "пустые" UV - то это приводит к тому, что меш перестаёт эффективно упрощаться на расстоянии.
Иногда плохие ув приводят к тому, что геометрия начинает портиться. Пару раз у нас такое было когда он на простых мешах начинал оконные проёмы ломать из-за того что УВ были некорректными. Но сам я не смотрёл в чём там дело было, это у коллег такое было.
в альфу мне кажется лучше Roughness запечь, да и на нормаль в целом пофиг полигонов хватает. А вообще тема огонь спасибо что показал
Можно и рафнес было вместо АО запечь, тоже такой вариант рассматривал но АО показалось интересней, а нормалку всё же думаю стоит добавлять для мелкой детализации, такой совет даже в официальной документации есть. Хотя для каких-то моделей может и без неё можно обойтись, тут уж по ситуации как говорится.
разработчикам Смуты надо скинутть))
С каких видеокарт работает адекватно данный движок.
В зависимости от решаемых задач условная адекватная видеокарта будет сильно разниться, у меня RTX 2070 для моих задач хватает, хотя желательно что ни-будь помощнее 3060 и выше. Для создание же серьёзных рендеров лучше что-то посерьёзней и с большим объёмом памяти. Тут нужно из конкретных задач исходить.
Смотря что для вас адекватно, минимум 40 фпс выдает rx580 ( 1060ti ) с нанитами и вкл. люменом при fullHD в густом лесу на небольшой карте.
Тебе нужно устроиться в сайберию Нова и их научить оптимизировать модели 😂
9:19 да там небо и земля по факту разница, даже не присматриваясь лол
Понятное дело что это вполне ок, учитывая размер текстуры, но тем не менее )
Странно было бы, с учётом того что я вырезал фрагмент нормалки (1\256 от оригинала) и замостил ей весь камень. Но если бы вы не знали что на камне по сути нет текстур пришло бы вам в голову?
@@GMTechArt Не понял часть про "нет текстур"? лоуполи модель без нормала бы вообще смотрелся как уг. Без негатива.
Просто я к тому написал, что разница очень заметна аш писец, даже через компрессию видео ютуба. А если бы я не знал что так было задумано и не с чем было бы сравнивать - то просто сразу бы встал вопрос "Это че за мыло в 2024 году?"
Если бы размер объекта был раза в 4 меньше, тогда бы это не было столь заметно и смотрелось бы норм. Но чем больше объект - тем четче должна быть текстура :)
Просто получилось "слишком урезано"
@@zergidrom4572 на камне после переделок в материале осталась только нормалка 512х512, и всё, текстур в материале по сути нет, по сравнению с тем что было. Все данные остальные берутся из самого меша 8.5 мегабайт.
Уменьшить геометрию камня тоже можно:
th-cam.com/video/2KJOvqbc0RI/w-d-xo.htmlsi=_EZ004yphuS1PH2T
Можно, при сохранении текстур, в моём случае это привело-бы к существенному снижению качества, т.к. текстур по сути нету.
Тут так не получится потому что автор текстуры в вертексы запекает, а вашем примере их слишком мало.
640Kb should be enough for anyone
Bill Gates
Я бы просто сресайзил карту нормалей до 512 а не "потрошил" её в фотошопе(русскоязычном..🤦♂). Результат будет куда лучше смотреться чем палёные тайловые швы каждую 1/16 текстуры...
При желании к ужатой нормали можно было бы добавить долю процедурного шума, для резкости.
Не будет лучше результата если вы нормалку до 512х512 уменьшите т.к. от мелкой детализации и следа не останется, а что касается швов в моём варианте, с учётом сложной геометрии объекта и особенностей юви развёртки эти швы и под микроскопом будет сложно найти, тем более что я их худо-бедно замазал.
Лучше так вообще сжать до 128, ещё лучше будет, правда же?
Русскоязычный фотошоп, потому что автор использует лицензию, а не пиратку ))
@@surt5927 я надеюсь ты рофлишь. Не один уважающий себя 2D-3D артист не будет работать в локализованой версии PS.
@@TigraPolosatiyне надо возводить в культ то, что не влияет на работу инструментов, это сразу выдаёт в тебе профана. Многие топовые художники прекрасно работают на русскоязычной версии (так же как и китайские - на китайской, и т.д.) Локализацию для того и придумали
Тут уже все успели пошутить про разработчиков смуты?
И не только здесь в ВК первый же комментарий был про неё.)
Спасибо!
Потраченное время не стоит того, чтобы так заморачиваться. Оптимизировать отдельный камень не имеет смысла.
1. Там текстура с неповторяющимся узором. Это кандидат на виртуальную текстуру.
2. Геометрия специально сделана под наниты - стриминг геометрии, как и виртуальные текстуры.
Оптимизировать нужно уже готовые сцены, где все ассеты уже стоят и смотреть в каких местах возникают затыки при стриминге. При вашем подходе в памяти будет сидеть куча таких 4k, 2k текстур, которые займут всю видеопамять, вместо того чтобы выгрузить те куски виртуальной текстуры, которые сейчас не нужны.
Еще нужно в голове держать что прогресс идёт вперед а не назад. К тому моменту как проект будет закончен, актуальное железо будет совсем другим и уже на релизе графика в проекте будет заоптимизирована что весь потенциал железа не будет использован в полную силу, не говоря уже о том что страдать будет качество картинки. Но потраченного времени уже не вернешь, а урок так и не будет усвоен.
Нужно оставлять возможность использовать Ultra-качество для топового железа, кому надо похуже - пусть в настройках выставляют под себя.
Не нужно бороться с новыми технологиями и смотреть на них сквозь призму устаревшего опыта. Используйте технологии, которые даёт движок, научитесь их использовать.
При моём подходе у меня в памяти и на диске будет камешек 8.5 мб и материал на 200 кБ,
Делать Ultra настройки которые увидит в лучшем случае 1% игроков совершенно не рационально. Борьба с новыми технологиями? Это вы про что? Я как раз считаю что возможность использования высоко полигональных объектов даёт вторую жизнь материалам Vertex Paint, а в некоторых случая позволят практически полностью отказаться от текстур как в приведённом примере. Т.к. плотность данных на единицу площади объекта зашитых в цвета вершин сетки достаточно высокая.
@@GMTechArt арт-директор скажет что вы тратите слишком много времени на ненужную оптимизацию, когда все нужные автоматические средства оптимизации уже есть в движке - виртуальные текстуры и наниты, которые выгружают из памяти данные о не нужных частях текстуры и геометрии. При сильном отдалении всё равно подобные объекты будут запечены в HLOD.
Посмотрите демку Matrix и поковыряйтесь в текстурах моделей транспорта. Например у автобуса там текстура 32k. Одна из. Это виртуальная текстура.
@@hardway777 И сколько там фпс было в этой демке? Matrix это просто техническая демка, демонстрация технологий и только, кто будет в здравом уме в реальную игру пихать текстуру 32к для какого то несчастного автобуса. Вы размер проекта представляете с такими текстурами?
@@GMTechArt th-cam.com/video/E-KFjYu637k/w-d-xo.html
@@hardway777 при этом в скомпилированной демке Matrix на железе i5 13600K и RTX4060 выходит средние 40 фпс. Это тот уровень производительности к которому вы стремитесь?)
Графика в играх стагнирует ещё с 2016 года. Но при этом на тот момент вполне себе хватало GTX 1060 и RAM 16 GB чтоб поиграть практически во что угодно на Ультра настройках. А сейчас благодаря новомодным технологиям которые компенсируют лень разрабов даже на RTX 4060 большинство игр выходящих на UE 5 работают с просадками))