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 пакетами пользоваться не умею.
в альфу мне кажется лучше Roughness запечь, да и на нормаль в целом пофиг полигонов хватает. А вообще тема огонь спасибо что показал
Можно и рафнес было вместо АО запечь, тоже такой вариант рассматривал но АО показалось интересней, а нормалку всё же думаю стоит добавлять для мелкой детализации, такой совет даже в официальной документации есть. Хотя для каких-то моделей может и без неё можно обойтись, тут уж по ситуации как говорится.
разработчикам Смуты надо скинутть))
Не знаю. Не уверен на счёт оптимизации честно говоря.
Наниты так устроены, что они пытаются сохранить цвета вершин, хард еджи, силуэт и швы на UV. Посмотрите, пожалуйста, что у вас происходит с упрощением меша на расстоянии достаточно ли эффективно нанит их упрощает по сравнению с оригиналом, есть вероятность что такие плотные меши с запечёными в них вертекс колорами будут плохо упрощаться и приводить к квад овердро.
Это один момент.
Второй момент вы могли текстуру бейка уменьшить до 2048 и смешать её с дитейл нормалом и сделать дистанс фейд, чтобы на расстоянии дитейл текстура пропадала.
Проблема вашего примера сейчас в том что карта нормалей не соответствует форме объекта и это хорошо заметно на среднем ракурсе.
Ну и вы правильно заметили, что 8к не нужна. Она не нужна в принципе, поэтому вам следовало "оптимизировать" 4к изначально, потому что в здравом уме их всё равно никто в реальном примере бы не стал использовать.
Не попадалось информации что цвета вершин сетки оказывают влияние на упрощение сетки. А то что карта нормалей не соответствует это понятно. В идеале я бы и юви развёртку переделал, а если бы задача была сделать очень качественно то сделал бы совсем по другому, хотя данные в цветах вершин сетки так же играли бы очень важную, просто использовались бы в качестве маски для смешивания текстур.
@@GMTechArt это эксперементально можно установить. Возьмите кубик с сабдивом и покрасьте ему какую-то область, потом просто включите дебаг нанит трианглов и плавно меняте расстояние. Повторите то же самое для кубика без прокраса вертексов - увидите разницу. Когда прокраса нет первыми нанит срезает все полигоны на плоскостях, когда прокрас есть - он их пытается сохранить по максимуму, видимо анализируя разницу в значениях цветов вершин.
Если бы этого не было, то прокрас мешей бы очень значительно менялся, что приводило бы к заметным скачкам различных пятен на текстурах в материалах с вертекс блендом, потому что нанит постоянно перестраивает сетку.
@@FishMan1nsk нанит не учитывает цвета вершин, так было раньше так и сейчас. Ему важна только геометрия это я ещё в этом видео показывал ua-cam.com/video/iC4E9WluxyM/v-deo.html
@@FishMan1nsk Хотя вы правы действительно учитывает, но увы не достаточно к сожалению, всё равно сильно упрощает, интересно это можно как ни-будь настроить?
@@GMTechArt не знаю можно или нет, возможно где-то есть какие-то настройки. Он вроде точно сохраняет большую разницу в цвете. Типа контрастные переходы или как-то их усредняет. Я много тестов не делал честно говоря, чтобы понять конкретное его поведение.
Вообще он учитывает несколько факторов, таких как УВ, вертекс колор и разницу в нормалях вершин и вероятно разницу в расстоянии вершин друг от друга. По сути работает так же как любой дециматор.
Поэтому нужно следить переодически за тем как он сетку оптимайзит. По-моему, например, если сплющить в точку все вершины на одном или нескольких UV каналах, то он хуже начинает оптимайзить. По крайней мере у меня есть меш, где при прочих равных если у меня на одном из каналов экспортируются "пустые" UV - то это приводит к тому, что меш перестаёт эффективно упрощаться на расстоянии.
Иногда плохие ув приводят к тому, что геометрия начинает портиться. Пару раз у нас такое было когда он на простых мешах начинал оконные проёмы ломать из-за того что УВ были некорректными. Но сам я не смотрёл в чём там дело было, это у коллег такое было.
С каких видеокарт работает адекватно данный движок.
В зависимости от решаемых задач условная адекватная видеокарта будет сильно разниться, у меня RTX 2070 для моих задач хватает, хотя желательно что ни-будь помощнее 3060 и выше. Для создание же серьёзных рендеров лучше что-то посерьёзней и с большим объёмом памяти. Тут нужно из конкретных задач исходить.
Смотря что для вас адекватно, минимум 40 фпс выдает rx580 ( 1060ti ) с нанитами и вкл. люменом при fullHD в густом лесу на небольшой карте.
Тебе нужно устроиться в сайберию Нова и их научить оптимизировать модели 😂
9:19 да там небо и земля по факту разница, даже не присматриваясь лол
Понятное дело что это вполне ок, учитывая размер текстуры, но тем не менее )
Странно было бы, с учётом того что я вырезал фрагмент нормалки (1\256 от оригинала) и замостил ей весь камень. Но если бы вы не знали что на камне по сути нет текстур пришло бы вам в голову?
@@GMTechArt Не понял часть про "нет текстур"? лоуполи модель без нормала бы вообще смотрелся как уг. Без негатива.
Просто я к тому написал, что разница очень заметна аш писец, даже через компрессию видео ютуба. А если бы я не знал что так было задумано и не с чем было бы сравнивать - то просто сразу бы встал вопрос "Это че за мыло в 2024 году?"
Если бы размер объекта был раза в 4 меньше, тогда бы это не было столь заметно и смотрелось бы норм. Но чем больше объект - тем четче должна быть текстура :)
Просто получилось "слишком урезано"
@@zergidrom4572 на камне после переделок в материале осталась только нормалка 512х512, и всё, текстур в материале по сути нет, по сравнению с тем что было. Все данные остальные берутся из самого меша 8.5 мегабайт.
Спасибо!
Уменьшить геометрию камня тоже можно:
ua-cam.com/video/2KJOvqbc0RI/v-deo.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 ua-cam.com/video/E-KFjYu637k/v-deo.html
@@hardway777 при этом в скомпилированной демке Matrix на железе i5 13600K и RTX4060 выходит средние 40 фпс. Это тот уровень производительности к которому вы стремитесь?)
Графика в играх стагнирует ещё с 2016 года. Но при этом на тот момент вполне себе хватало GTX 1060 и RAM 16 GB чтоб поиграть практически во что угодно на Ультра настройках. А сейчас благодаря новомодным технологиям которые компенсируют лень разрабов даже на RTX 4060 большинство игр выходящих на UE 5 работают с просадками))