реклама
разместить

Усадьба Барятинских. Реконструкция в Unreal Engine 5. Взгляд изнутри, часть 2

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

Немного уточнений, в связи с вопросами к первой части. Проект полностью состоит из сканированного материала, который был отснят на месте, на котором объект находится в реальном мире. Т.е. речь идет вообще обо всем, включая растительность и мелкие ассеты окружения. Проект велся по определенному пайплайну, о котором я как раз расскажу в серии постов и в который не входят работы со скульптингом или текстурированием в их привычном понимании при классическом пайплайне. Работа велась исключительно со сканами, их объединением и оптимизацией. Ну и под игровым проектом я подразумевал то, что при нажатии на кнопку Play в редакторе или запустив билд, можно побегать по локации и что-нибудь поделать, например, в итоге я прикрутил фотомод, и можно было побегать и пофотографировать. Само собой с хорошим FPS. Т.е. игровой в данном случае означает работающий и то, что этот пайплайн подходит для разработки реальной игры, а не просто для статичной сцены с красивой визуализацией. Проект с усадьбой - тестирование пайплайна разработки окружения для игр в фотореалистичном сеттинге на основе сканированного материала и в последнем посте я постараюсь приложить тесты производительности.

Снова к этапам

2

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

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

Параллельно со съемкой сканов я снимал различные детали и общие планы в качестве референсов.

В несколько первых поездок я сделал несколько десятков сканов. Далее построил их и убедился, что с качеством все хорошо.

При наличии опыта процесс производства самих сканов не занимает много времени. Тут все упирается в наличие или отсутствие определенного оборудования: насколько мощный ПК, далее аккумуляторы для камеры и вспышки, флешки, место на диске и меткость фокуса вашей камеры. Иногда за два три часа удавалось сделать 15-20 сканов. Намного более долгий процесс, по сравнению с предыдущим, это их обработка. Особенно под конкретные критерии. Нужен нормальный ретоп, нормальная развертка и далее все по списку. Здесь пайплайн ничем не отличается от старого доброго, когда сканы еще были не в ходу. За несколько поездок я отсканировал достаточно материала для начала работы и решил, что буду возвращаться на съемку по мере необходимости в конкретных архитектурных элементах. Такой подход оправдан, когда вы имеете возможность неоднократно возвращаться на объект и уверены, что доступ к нему не прекратится.

Я построил все сканы, завел PureRef и разместил их превью там. Так я получил быстрый доступ к библиотеке, которая довольно быстро стала внушительных размеров. Здесь изображено около 2/3 от всего количества сканов, так как добавилась еще растительность. Всего для этого проекта я сделал около 150 сканов и порядка 50 000 снимков.

Усадьба Барятинских. Реконструкция в Unreal Engine 5. Взгляд изнутри, часть 2

Подробнее о процессе построения сканов:

Я использую Agisoft Metashape, так как изначально начал работу со сканами именно в нем, купил лицензию и изучил весь функционал. На сегодня на рынке обработчиков сканов два основных конкурента - Agisoft Metashape и Reality Capture, да и сложно их назвать конкурентами по аналогии с известными смартфонами или фотоаппаратами. У Agisoft есть Pro версия, которая заточена совсем под другие нужды, связанные с обработкой разного типа данных, а его сильно ограниченная в функционале стандартная версия наиболее подходит для 3д художников и других интересующихся фотограмметрией. Reality Capture обладает бОльшим функционалом, но если использовать ее в коммерческих целях, то выходит значительно дороже. Reality Capture строит сканы быстрее, но если выкрутить настройки качества на максимум, то разница не так заметна, тем более что Metashape стал более оптимизированным за последние пару лет. Metashape, на мой взгляд, строит сканы более точно, но это скорее про ощущения. Так как я строю сканы настолько детализированные, насколько позволяет мое оборудование, добиваясь максимально возможного качества, я решил больше не экспериментировать и остаться с этим софтом.

Так же могу поделиться некоторыми цифрами по части оборудования и сканов.

Под свои рабочие задачи в 3д несколько лет назад я собрал компьютер со следующими характеристиками:

Ryzen 5950x, 64 Gb RAM 3600 ddr4, 2060 8gb Super + 3060 12gb и, конечно, быстрые ssd Samsung 970 evo+ и 980 на несколько tb в сумме. Такое железо позволяет строить сканы на наивысших настройках качества из нескольких сотен и даже тысяч снимков в разрешении 24мп в течении 1-3 часов (в зависимости от количества снимков и характера настроек). На выходе можно получить геометрию до 500-800 млн треугольников. Такая большая цифра нужна, если вы хотите получить правильную и высоко детализированную текстуру высоты или карту нормалей после запечки. А еще я часто делаю что-то с запасом на разные случаи, сжать и уменьшить всегда быстрее, чем построить заново. Кстати, для увеличения детализации той же карты нормалей есть разные лайфхаки, о которых я буду рассказывать далее в материале.

Если вам нужны сканы просто вменяемого качества, то при съемке на обычную камеру (имею ввиду зеркалку\беззеркалку+ снимки с хорошей резкостью, в фокусе и размером 12-24 мп) то на этом железе можно строить хорошие сканы из 100-300 снимков за 15 минут (все будет зависеть от разных настроек)

При нарастающем количестве материала появляется проблема его структурирования. Считаю обязательным иметь вменяемую структуру папок, файлов, названий и т.д. иначе в определенный момент хаос в этом просто остановит вам работу. Забегая вперед, скажу, что общий размер всех материалов этого проекта превысил 1200 Гб (600 Гб из которых снимки), а при значительной чистке и удалении ненужных файлов и дубликатов остался 1 Тб ровно. Также я завел PureRef (это может быть Figma или что похожее), в котором я размещал превью сканов и собирал скриншоты этапов работы. В итоге я вел его до момента работы с внутренними стенами, так как сроки поджимали и было уже не до него.

Усадьба Барятинских. Реконструкция в Unreal Engine 5. Взгляд изнутри, часть 2

Проект в UE к определенному моменту тоже сильно разросся, но там со структурой у меня всегда все в порядке, привычка из-за торговли на маркетплейсе и результат воспитания модераторами)

Параллельно с обработкой сканированного материала я занимался тестированием различных технических аспектов, таких как смешивание по маске двух и более сетов текстур (слоев) при нескольких UV каналах, усиление детализации и рельефности поверхности объектов за счет POM, PDO и дисплейсмента. Смотрел работает ли это все вместе, работает ли это с ветром, работает ли это с нанит и так далее. Некоторые вещи застопорили продвижение несколько раз по несколько дней, но в итоге были решены. Также я прикидывал, что из себя будет представлять будущий мастер материал и насколько нагруженными могут быть функции. А одна большая техническая неожиданность ближе к концу работ прибавила мне еще неделю работы.

Очевидно, что при работе со сканами узким местом в производительности будет количество и разрешение текстур. Так как ценность сканов в их естественности, которая воспринимается на подсознательном уровне и очень не хотелось променять эту красоту на однообразную и скучную тайловую текстуру в угоду производительности. Хотелось чтобы все выглядело так, как выглядит в натуре. Также хотелось получить максимальную детализацию и высокое разрешение, для чего нужно было найти альтернативный способ, а не использовать кучу сетов по 8к. На самом деле, решение этого довольно сложного вопроса у меня уже было и заключалось оно в одновременном комбинировании различных технологий, которыми на сегодняшний день обладает Unreal Engine.

Я решил разделить всю работу по материалам, а не по объектам. Такой подход позволяет распределить уникальные текстуры в текстурные атласы по определенной логике, которая обычно индивидуальна для каждого проекта и зависит от многих факторов. Так же назначить каждому материалу свою тайловую текстуру, чтобы нагрузка по текстурным семплам и количеству инструкций на инстанс были распределены равномерно. Если коротко - равномерно распределить все текстуры по всем материалам.

Как видно по картинкам, на внешних стенах без учета декора - 2 материала. Различные элементы декора тоже были сгруппированы по материалам и разбиты на группы

За основу я взял подход с использованием нескольких UV каналов для одного меша (об этом подробнее расскажу в следующем посте), с помощью которых я смогу реализовать плавное смешивание текстур уникальных и тайловых частей при помощи масок, расположенных между слоями материала. Принцип тут довольно простой: один канал объекта с раверткой под тайл, второй под уникальную запеченую текстуру, все что на UV является лишним для того или иного слоя - сжимается в точку и скрывается маской. Как вы уже поняли, будет использована Layered система со всеми ее преимуществами и недостатками. В итоге приоритеты были такие – использовать по одному материалу на меш, минимальное количество материалов на здание (хочется уложиться в 10), максимально возможная плотность текселя (при необходимости даунскейл делается довольно быстро), максимально возможная точность воспроизведения и детализация.

Как раз в тот момент, когда я задавался вопросом ультрадетализации поверхностей, вышла в доступ версия UE 5.4 с нанит дисплейментом. Ее я тоже протестировал, но пока отказался от реализации этой технологии в проекте и продолжил работу в 5.3. В итоге все было реализовано так, что при желании можно включить что-то на выбор: нанит дисплеймент, контактные тени с PDO или оставить как есть, здесь выбор зависит от освещения в том числе, так как контактные тени подразумевают наличие источника освещения. Если использовать только HDRI, то подойдет нанит дисплеймент.

Тестирование контактных теней с PDO

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

2121
33
11
реклама
разместить
3 комментария

Эй!..
Я ещё на прошлый твой пост не закончил дрочить, а ты новый выдал, ещё более дрочибельный!
Я из-за тебя себе так всю шишку сотру! Имей совесть!

1
1

Еще несколько постов, рассчитывай силы)

2

Шишка встала и ушла учить блендер с анрилом

2
За что отвечают графические настройки в играх. Рассказываю простым языком с примерами
За что отвечают графические настройки в играх. Рассказываю простым языком с примерами

Привет! Рад написать новую статью, в которой я постараюсь для обычного рядового геймера по пальцам объяснить, за что отвечают графические настройки в играх, потому что многие геймеры до сих пор не понимают, что такое антиалиасинг, вертикальная синхронизация и так далее. А эти штуки напрямую влияют на игровой процесс (вертикальная синхронизация так…

522522
3232
2424
99
66
33
33
22
11
11
Хахах, при вертикальной синхронизации большая нагрузка на производительность? Что?
реклама
разместить
Как я делала комнату из мультфильма Пиксара в Blender

Пошаговый процесс сборки комнаты Мей из “Я краснею”

Как я делала комнату из мультфильма Пиксара в Blender
102102
1111
44
11
11
11
Лиано-водные подземелья. Low Poly сцена в Blender 3D. Процесс и детали.
После прохождения мини курса «Dungeon» - новичок / 3D / Blender от <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.youtube.com%2F%40kaino_university%2Ffeatured&postId=3439591" rel="nofollow noreferrer noopener" target="_blank">Kaino university</a>, решил, как закрепление изученного материала, сделать собственную сцену, использовав те же инструменты и подход.
11
Усадьба Барятинских. Реконструкция в Unreal Engine 5. Взгляд изнутри, часть 1
8585
44
22
11
11
Shrek 2 Remake - я попытался в 3Д моделирование и вот что получилось.

Игра становится ближе к званию "Ремейк".С поправкой на то, что я все-таки макака-джун в Blender и 3D моделировании с бюджетом в виде чистого энтузиазма. Рассказываю о прогрессе за последние 4 месяца.

183183
2121
55
11
11
Классно. В портфолио можно пихать, наверное.
Breakdown. Процедурный генератор парков на Unreal Engine 5.3 Часть 2
Breakdown. Процедурный генератор парков на Unreal Engine 5.3 Часть 2
66
Сделал обои по Warhammer и написал небольшой гайд по ним.

Внутри текст с картинками.

4141
1818
33
11
11
[]