Что такое PBR текстурирование? Часть 3.
Важные карты текстур, используемые в любом рабочем процессе
Bump, Displacement, Height Map
Карта неровностей (Bump Map) - это карта оттенков серого, используемая для создания иллюзии рельефа на поверхности материала. Эта иллюзия возникает из-за того, что карта Bump Map изменяет только нормали объекта, чтобы он по-другому реагировал на свет. Она не изменяет саму 3D-сетку. Это можно заметить в основном по силуэту объекта. Если вы наложите карту Bump Map, например, на сферу, вы увидите все детали карты, реагирующие на свет, но заметите, что силуэт сферы остается идеально гладким, а тени от источника света также остаются неизменными. Серые тона карты неровностей определяют, как будут изменяться нормали. Более темные тона тянут нормали внутрь, в результате чего области кажутся ниже, а более светлые тона тянут наружу, в результате чего области кажутся выше.
Карта смещения (Displacement Map) основана на той же идее, что и карта неровностей, создавая рельеф через полутоновое изображение. Разница в том, что карта смещения не создает иллюзию детализации, а действительно смещает геометрию. Однако она не создает новые полигоны, а только смещает полигоны, которые уже есть у объекта. То есть для получения хороших результатов с помощью карты смещения вашей 3D-модели может потребоваться очень большое количество полигонов. Поскольку она смещает геометрию, тени и силуэт также будут затронуты, создавая более детализированные результаты в ущерб оптимизации. Как и в случае с Bump Map: темные тона = меньший подъем, светлые тона = больший подъем. В настоящее время, даже с учетом более широких возможностей рендеринга большого количества полигонов, эти карты используются в играх только в определенных ситуациях. Одна из них - тесселяция, когда геометрия добавляется или удаляется динамически, обычно в зависимости от расстояния до камеры. Это часто используется на рельефах. Например, ближе к камере тесселяция сильно делит сетку местности, позволяя карте смещения иметь достаточно геометрии для получения хороших результатов. Вдали от камеры тесселяция будет очень слабой, поскольку мы не можем воспринимать так много деталей на расстоянии, экономя полигоны. По мере движения камеры она добавляет больше полигонов вблизи камеры и удаляет на расстоянии, поддерживая высокий уровень детализации местности и делая адаптацию 3D-сетки почти незаметной.
Карта высот (Height Map) мало чем отличается от двух своих предшественников. Самое большое отличие - это контекст, в котором она используется. Обычно карты высот используются не непосредственно для смещения геометрии или иллюзии деталей, а для хранения информации о высоте и глубине. Во многих случаях она немного более сглажена, чем карта смещения, генерирует меньше ошибок, но имеет меньше микродеталей в своих приложениях. Это делает ее хорошим кандидатом для создания рельефа, деформируя плоскость с большим количеством полигонов для создания гор и холмов и применяя различные материалы в зависимости от высоты рельефа (например, снег для вершин гор, камень для средних частей и траву для холмов). Его также можно использовать в качестве маски для комбинирования двух материалов по глубине (например, чтобы вода скапливалась только в зазоре между плитками).
Карту нормалей (Normal Map) можно описать как улучшенную версию карты неровностей (Bump Map). Она также служит для создания иллюзии деталей на поверхности материала без изменения геометрии. Однако, в отличие от карты Bump Map, которая хранит информацию только «вверх» или «вниз», поскольку является полутоновой, карта Normal Map - это RGB-карта, которая может хранить информацию по 3 осям в своих каналах. Значения каналов RGB представляют оси XYZ соответственно. Обратите внимание, что в 3D-программах все представления этих осей имеют такие цвета.
Комбинация значений RGB используется для расчета того, в каком направлении направлены нормали вашего объекта, изменяя затенение модели и моделируя детали.
Существует несколько типов карт нормалей, таких как Tangent Space, Object Space и World Space карты нормалей, но разница между ними заключается лишь в том, на какую систему координат ссылается карта нормалей. Наиболее распространенной является та, о которой мы рассказали в самом начале, - карта нормалей касательного пространства (Tangent Space), имеющая характерный голубой/розовый цвет. Tangent Space - это система координат относительно поверхности объекта, похожая на UV-координаты, но также указывающая на направленность. Для расчета затенения рендеры преобразуют световые лучи из мира в касательное пространство, а затем сравнивают их с касательным пространством поверхности, таким образом определяя, как будет затенен объект. Может произойти и обратное, когда нормали касательного пространства преобразуются в мировое пространство, а затем сравниваются с лучами.
Карты нормалей чрезвычайно распространены, особенно в играх, так как они позволяют хранить микродетали детальных 3D-моделей и затем проецировать их на более легкую модель. Пример использования карты нормалей на игровом персонаже:
1. Сначала создается подробный скульпт персонажа с тысячами или миллионами полигонов (высокополигональная модель);
2. Затем создается упрощенная копия этой модели (low-poly модель) с меньшим количеством полигонов (процесс, известный как ретопология);
3. Делается UV-маппинг низкополигональной модели;
4. Проецируются детали высокополигональной модели на низкополигональную модель, сохраняя все детали в карте нормалей (процесс, известный как запекание);
5. Карта добавляется в материал низкополигональной модели. Она отобразит в модели все мелкие детали высокополигонального скульпта, обеспечивая иллюзию детализации и хорошую оптимизацию модели для использования в игре.
Различные программы могут интерпретировать ось Y в противоположных направлениях. Если вы заметили неравномерность в направлении освещения карты нормалей в определенной программе, попробуйте инвертировать канал G (который представляет ось Y) текстуры, так как, возможно, он рассчитывается в неправильном направлении.
Ambient Occlusion Map / Cavity Map
Даже самые темные углы не являются абсолютно черными. Отраженные лучи света приходят откуда-то и освещают эти области, пусть даже минимально. В компьютерной графике это окружающий свет. Это свет, который не имеет конкретного источника, но всегда присутствует в равной степени во всей сцене. Он помогает осветить слишком темные участки, куда не доходит основной источник света и его отблески. Он также помогает окрасить участки без прямого освещения. Когда мы выходим из дома в ясный день с голубым небом, мы видим, что тени вокруг нас не совсем черные, а слегка голубоватые. Это происходит из-за отражения цвета неба, и окружающий свет также помогает его имитировать. Объекты, которые не освещаются напрямую другим источником света, будут отражать цвет окружающего света (обычно это цвет неба).
Карта Ambient Occlusion Map - это полутоновая карта, на которой отображаются области, где окружающий прямой свет отсутствует, например, между трещинами или в местах соприкосновения объектов.
Карта Ambient Occlusion влияет только на диффузные (не спекулярные) отражения и только на вклад окружающего света, а не других источников света. По этой причине для получения более реалистичных результатов эту карту не следует смешивать с картой альбедо (как это делается в традиционных рабочих процессах), а лучше позволить шейдеру и рендеру рассчитать ее эффект. Некоторые программы могут генерировать эффект Ambient Occlusion в реальном времени (иногда в качестве эффекта постобработки) без использования карт, что известно как SSAO (Screen-Space Ambient Occlusion). Это Ambient Occlusion, генерируемый только на объектах, видимых камерой, и не влияющий на то, что находится вне поля зрения.
Существует разновидность этой карты под названием Cavity Map, которая похожа по принципу действия, но в ней представление световых препятствий ограничено только небольшими трещинами и может препятствовать как диффузным, так и зеркальным отражениям, в дополнение к любому типу освещения (прямому или окружающему).
В стилизованных рабочих процессах карта Ambient Occlusion Map очень полезна для детализации текстур низкополигональных моделей для игр.
Что такое PBR текстурирование? Часть 1.
Что такое PBR текстурирование? Часть 1. | Новый пост на CG.GURU
https://cg.guru/blogs/dev/45-chto-takoe-pbr-teksturirovanie-chast-1
Что такое PBR текстурирование? Часть 2.
Что такое PBR текстурирование? Часть 2. | Новый пост на CG.GURU
https://cg.guru/blogs/dev/57-chto-takoe-pbr-teksturirovanie-chast-2