diffuse map что это

3d_shka

Модели 3D, Poser, 3DsMax, Archicad, Artcam, Zbrush

ДНЕВНИК ПРОРОКА МАНЬКИНА

Введение в текстурные карты

Это руководство даёт базовой понимание назначения и особенностей некоторых типов текстурных карт.

Diffuse map (основной / диффузный цвет)

Слот в 3DS Max: Diffuse color.

Технически эта карта представляет собой диффузное отражение и цвет поверхности объекта. Простыми словами – это базовый цвет объекта. Эта карта используется в качестве основной текстуры объекта.

Пример диффузной карты.

Specular map (карта зеркальности)

Слот в 3DS Max: Specular color.

Карта передаёт интенсивность и цвет бликов на поверхности объекта. Другими словами, она определяет «глянцевость» и цвет световых отражений.

Пример бликов на объектах в реальной жизни. Эти белые пятна света на помидорах – не что иное, как блики.

Пример бликов на фасаде здания. Обратите внимание, что в зависимости от уровня серого интенсивность бликов меняется. Особенно это заметно при перемещении освещения над поверхностью различных «материалов».

Для демонстрации работы карт бликов я применил к этому цилиндру карты бликов с различными уровнями серого, от черного, до белого, и простую диффузную карту. Более светлые области дают сильные блики, более тёмные области слегка отсвечивают, а чёрная область вообще не даёт бликов.

В карте бликов вашего объекта глянцевые материалы должны быть белыми или светло-серыми, матовые материалы – чёрный или тёмно-серый. Обратите внимание, что использование цветов в карте бликов, даёт эффект цветового тонирования. Это полезно для некоторых материалов, таких как автомобильная краска, золото или бронза.

Материалы, которые должны быть окрашены в белый цвет (глянцевые):

Материалы, которые должны быть окрашены средним уровнем серого цвета (средний уровень бликов):

Материалы, которые должны быть окрашены в тёмно-серый или черный цвет (матовые):

Реалистичные карты бликов основываются на физических свойствах материалов.

Reflection map (карта отражений)

Слот в 3DS Max: Reflection.

По принципу своего действия, карты отражения похожи на карты бликов. Уровень отражения зависит от яркости карты, и аналогичным же образом, карта работает с цветами. Цветная карта отражений будет полезной в случае тонированных стёкол.

Материалы, которые должны быть окрашены белым (зеркальные отражения):

Материалы, которые должны быть окрашены в серый цвет (от высоко до умеренно отражающих):

*Если имеющиеся в вашем распоряжении текстуры окон достаточно хороши, я рекомендую использовать средние уровни серого для карты отражения – в этом случае отражения не будут полностью скрывать диффузную текстуру.

Материалы, которые следует окрашивать чёрным (не отражающие):

Реалистичные карты отражений основываются на физических свойствах материалов.

Отражения на окнах.

Self illumination map (карты самосвечения)

Слот в 3DS Max: Self-Illumination.

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

Так работает карта самосвечения.

Пример карты самосвечения.

Normal map (карта нормалей)

Слот в 3DS Max: Bump.

Карты нормалей (как и карты рельефности, bump map) используются для имитации неровностей и повышения детализации поверхности без увеличения количества полигонов.

Этот вид карт довольно сложно создать вручную. Сделать это можно в 3DS Max, но для того, чтобы получить достойные результаты, нужен некоторый опыт. Нашим выбором будет использование средств, предоставляемых NVIDIA – бесплатный плагин для Photoshop NVIDIA Texture Tools. Есть также некоторые другие программные средства, такие как Crazybump или Pixplant2, но плагин от NVIDIA бесплатен и даёт лучшие результаты.

Шаги по созданию простой и реалистичной карты нормалей

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

Используйте фильтр NVIDIA Normal Map в Photoshop чтобы конвертировать отредактированную текстуру в карту нормалей.

Используйте 3D Preview и поиграйте значением масштаба (Scale), чтобы получить требуемый эффект. Я рекомендую деактивировать параметр «animate light». Не забудьте закрыть окно 3D Preview, иначе фильтр не применится.

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

Opacity Map (карта прозрачности)

Слот в 3DS Max: Opacity.

Название карты говорит само за себя: она определяет области прозрачности и непрозрачности объектов. Это чёрно-белое (или с оттенками серого) изображение, белые области которого представляют собой полностью непрозрачные зоны, а чёрные – полностью прозрачные. Эти карты весьма полезны при создании перил, решёток и тому подобных объектов.

Пример ограждения, сделанного с помощью карты прозрачности, применённой к простой плоскости.

Источник

Что такое текстуры и как они работают в 3D-графике

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

За точную передачу геометрии 3D-объекта отвечает количество полигонов — тех самых векторных многоугольников, из которых состоит модель и с которыми работает дизайнер при её создании.

Очевидно, что чем их больше, тем выше будет уровень детализации готовой модели. Но нельзя добавлять их до бесконечности — создание и отрисовка займут слишком много времени.

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

Текстура (иногда её называют картой) — это растровое изображение, накладываемое на поверхность модели для придания ей цвета, свойств окраски или иллюзии рельефа.

Процесс создания текстур называется текстурированием или 3D-мэппингом (от англ. map — карта).

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Как используются текстуры

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

Изображение будет наложено на модель, но геометрия останется неизменной. Так мы создадим видимость рельефа, не тратя много ресурсов на моделирование и компьютерную отрисовку.

Готовая модель выглядит неплохо, но на ней нет микрорельефа — небольших трещин, впадин и выпуклостей, которые видны на текстуре. Особенно сильно это заметно, если взглянуть на углы — они абсолютно прямые.

Исправить это — придать рельефность — можно, добавив больше полигонов, но гораздо быстрее будет воспользоваться картой высот (англ. height map), которую также иногда называют картой рельефа. Это чёрно-белая текстура, которая позволяет сделать рельеф реалистичным.

Существует несколько видов карт высот, у каждой свои особенности:

Вот пример displacement map:

При отрисовке модели с такой текстурой добавляются новые вершины, которые смещаются относительно полигона — поднимаются или опускаются. И мы получаем следующий результат:

Количество полигонов исходной модели не меняется, но геометрия объекта всё же становится более сложной во время отрисовки, поэтому здесь виден реальный рельеф, а не его иллюзия.

Карта смещений — одна из самых реалистичных карт высот. Но она и более затратная, так как во время отрисовки добавляются новые вершины. По этой причине displacement map используют не всегда, по возможности заменяя её другими текстурами. Например, комбинацией bump map и карты нормалей (англ. normal map) или parallax map — в зависимости от того, какого эффекта нужно добиться.

Процедурно генерируемые текстуры

На объект можно накладывать не только готовые текстуры, но и генерируемые компьютером. Например, можно создать текстуру шума (англ. noise texture) — изображение, содержащее визуальный мусор (шум).

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

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

Если использовать шум в качестве displacement map, это поможет быстро создать реалистичную штукатурку, глину, цедру апельсина, поверхность Солнца, плавленый сыр, панировку, тесто для пиццы и многое другое.

Читайте также:  что делать если агама не ест зелень

Практически любые поверхности можно имитировать с помощью шума, если подобрать правильные параметры.

Заключение

Существуют и другие виды текстур. Вот некоторые из них:

Использование текстур значительно ускоряет работу 3D-художника. Даже если вы создаёте модели в мультяшном стиле, без текстур не обойтись, потому что для этого понадобится как минимум указать цвета разных частей объекта.

Если интересуетесь 3D-графикой и хотите профессионально заниматься моделированием и текстурированием, вам поможет наш курс
для 3D-художников.

Источник

Learn OpenGL. Часть 2.4. — Текстурные карты

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

Текстурные карты

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

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

Диффузные карты

Все, что нам нужно — это способ установить диффузный цвет для каждого фрагмента объекта. Что может повлиять на значение цвета, основываясь на позиции фрагмента?

Припоминаете? Это — текстуры, которые мы интенсивно обсуждали в одном из предыдущих уроков. Карты освещения – всего лишь другое название того же принципа: используя изображение, нанесенное на поверхность объекта, мы можем делать выборки цвета для каждого фрагмента. В сценах с освещением это обычно называется диффузной картой (как правило ее так называют 3D художники), так как текстурное изображение представляет все диффузные цвета объекта.

Для демонстрации диффузных карт мы будем использовать изображение деревянного контейнера с железной рамкой:

Имейте в виду, что sampler2D это, так называемый, непрозрачный тип данных. Это значит, что мы не можем создать экземпляр такого типа, мы можем только определить его как uniform. Если мы попытаемся использовать этот тип не как uniform (например как параметр функции), то GLSL выведет странные ошибки. Это правило также распространяется и на любую структуру, которая содержит непрозрачный тип.

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

Также не забудьте установить фоновый цвет материала таким же, как и диффузный:

Это все, что нам нужно для использования диффузной карты. Как вы могли заметить, в этом нет ничего нового, но это дает впечатляющий рост визуального качества. Чтобы это заработало, нам нужно добавить текстурные координаты к данным вершин и передать их в качестве вершинного атрибута во фрагментный шейдер, загрузить текстуру и связать ее с соответствующим текстурным блоком.

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

Удостоверьтесь, что обновили вершинные атрибуты обоих VAO (прим. переводчика: имеются ввиду VAO текстурированного куба и VAO куба-лампы), так чтобы они совпадали с новыми вершинными данными, и загрузили изображение контейнера в текстуру. Перед тем, как нарисовать контейнер нам нужно присвоить переменной material.diffuse предпочтительный текстурный блок и связать с ним текстуру контейнера:

Используя диффузную карту, мы снова получили огромный прирост детализации и теперь, с добавленным освещением, наш контейнер действительно начал блистать (в буквальном смысле). Вероятно, теперь он выглядит вот так:

Вы можете найти полный исходный код приложения здесь.

Бликовые карты

Мы снова можем воспользоваться текстурной картой, только теперь для зеркальных бликов. Это значит, что нам нужно создать черно-белую (или цветную, если хотите) текстуру, которая определит силу блеска каждой части объекта. Вот пример бликовой карты:

Так как контейнер большей частью состоит из дерева, а дерево — это материал, который не дает бликов, то вся «деревянная» часть текстуры закрашена черным. Черные части вообще не блестят. Поверхность стальной рамки контейнера имеет переменную силу зеркального блеска: сама сталь дает довольно интенсивные блики, в то время как трещины и потертости – нет.

Технически, дерево тоже имеет зеркальные отражения, хотя и с намного более низкой силой блеска (свет сильнее рассеивается), но в образовательных целях, мы сделаем вид, что дерево никак не реагирует на зеркальный свет.

Используя инструменты, такие как Photoshop или Gimp, довольно просто превратить диффузную текстуру в бликовую. Достаточно просто вырезать некоторые части, сделать изображение черно-белым и увеличить яркость/контрастность.

Сэмплинг бликовых карт

Карта зеркальных отражений — это самая обычная текстура, по этому код ее загрузки очень похож на загрузку диффузной карты. Удостоверьтесь, что вы правильно загрузили изображение и сгенерировали текстурный объект. Так как мы используем новую текстуру в том же фрагментом шейдере, нам нужно использовать другой текстурный блок для карты бликов. Давайте свяжем эту текстуру с соответствующим текстурным блоком перед визуализацией:

И, наконец, нам нужно провести выборку карты бликов, чтобы получить соответствующую интенсивность блика для каждого фрагмента объекта:

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

Вы также можете использовать в бликовой карте цвета, которые определяют не только интенсивность блика, но и его цвет. Однако в реальности, цвет блика в значительной степени (а в большинстве случаев и полностью) зависит от источника света, поэтому использование цветных карт бликов не даст реалистичных результатов (вот почему эти изображения обычно черно-белые — нас интересует только интенсивность блика).

Если вы запустите приложение, то увидите, что материал контейнера очень похож, на деревянный контейнер с железной рамкой:

Вы можете найти полный исходный код приложения здесь.

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

Источник

Текстурирование, или что нужно знать, чтобы стать Художником по поверхностям. Часть 3. PBR и материалы

В прошлой части тутора мы разобрали принцип работы масок, что такое «текстура», и что абсолютно для всего используются каналы — параметры пикселя. Теперь рассмотрим всеми любимый PBR И соберем текстуры для создания мокрого грязного асфальта.

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

Также, если что-то совсем будет не понятно — очень прошу сообщить об этом, чтобы я мог раскрыть эту тему более подробно.

Часть 1. Пиксель здесь
Часть 2. Маски и текстуры здесь
Часть 3. PBR и Материалы — вы ее читаете.
Часть 4. Модели, нормали и развертка здесь.
Часть 5. Система материалов здесь.

Расшифровывается эта аббревиатура так: Physically Based Rendering. Что в переводе значит «Основанный на физике рендер».

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

Читайте также:  chanel le lift serum lisse raffermit smooths firms что это

В зависимости от поверхности, от ее состояния (отражает ли оно, как зеркало, или имеет шероховатость, есть ли капли грязи / воды / кофе на поверхности) вам в глаз приходит уже видоизмененный луч (скажем так). Причем, луч — это не совсем правильно, так как уже известно, что свет — это еще и волна. Но это уже слишком глубоко для нас, и здесь я могу ошибаться.

А суть остается неизменной — то, как мы видим объекты, выстраивается из того, как свет отражается от поверхности. И стандарт PBR описывает то, какие параметры должны учитываться, чтобы свет выглядел максимально кинематографично.

Расписывать о том, по каким правилам конструируется свет, как он отражается и отражается ли вообще, я не стану. Про то, как работает на уровне физики свет есть куча статей:

Параметры. Или как настраивается PBR.

Мы рассмотрим PBR с точки зрения общей концепции и на уровне работы с каждым параметром отдельно через каналы пикселей.

Из прошлой части тутора помним, что PBR на самом деле создается через суммирование параметров (вдаваться в формулы не стоит). То есть, PBR состоит из набора параметров:

Что касается Normal Map, то ее техническая реализация (какие каналы за какой наклон отвечают) разнится от настроек рендера. Так, например, в Unreal Engine 4 Зеленый канал отвечает за отрицательное значение наклона по вертикали, а в Unity за положительное.

Более подробную информацию можно прочитать здесь.

Еще есть огромная всеобъемлющая статья о том, как запекать Normal Map и как с ней вообще работать, на сайте render.ru здесь.

Ссылка на форум обсуждения карт нормалей и высот (параметр Height) здесь.

И википедийное описание рельефного текстурирования здесь.

Теперь стоит отметить, что рендер (отображение), основанный на физике, имеет несколько различных реализаций. Все они схожи между собой и пользуются все теми же каналами пикселей для корректировки конечного результата. Обычно разделяют 2 типа реализации:

В первом типе учитываются параметры Color-Metal-Roughness, во втором — Diffuse-Specular-Glossiness.

Оба типа реализации используют одинаково 3 параметра — АО, Normal map, Height.

Причем, в современном PBR параметр Height (высота) смешивается и прячется в Normal Map. По факту, проще выразить неровность через одну карту Normal Map, чем высчитывать еще и глубину/высоту пикселя, или что-то еще в дополнительных каналах. Все проще, чем кажется, и мудрить с десятками параметров лучше не стоит.

Хотя при создании текстур в Substance Painter параметр Height и вынесен отдельно, при запекании текстур он вшивается в карту нормали (все еще можно его выделить в отдельный канал, если захотеть).

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

Давайте рассмотрим теперь то, как это работает в Substance Painter. Для этого мы снова создаем новый проект с обычным плейном и стандартными настройками (о них я рассказывал во второй части туторов). И создадим новый слой заливки:

Теперь рассмотрим стандартную текстуру нормалей из набора Substance Painter «Niche Rectangle Top Wide», которая располагается под тегом Hard Surface:

Далее мы перенесем эту карту нормалей в параметр слоя Base Color (из предыдущего урока мы должны помнить, как это делать). Так выглядит карта нормалей, если воспринимать ее, как изображение (изображение выше). Но теперь удалим ее из параметра BaseColor (мы это сделали для общего ознакомления), нажав на крестик в параметре:

И перенесем ее в параметр Normal:

Ваш конечный результат сразу обновился. Теперь, если зажать Alt и ЛКМ — можно крутить камерой и смотреть на плейн под разными углами. Свет, отраженный от пикселей, начнет переливаться, создавая иллюзию глубины. Как будто на плейне действительно есть какие-то впадины и выпуклости. Все это заметно под углом от 90 до 140-150 градусов. И чем больше угол наклона, тем больше становится понятно, что это расчет видеокарты, который определяет, как должен отражать свет каждый пиксель, чтобы создавать эту иллюзию. В качестве исходных значений мы передаем в видеокарту 3 параметра в виде каналов пикселя (иначе говоря, текстуру Normal map):

Теперь давайте извращаться. Удалим из параметра Normal эту карту и укажем ее в канале Metallic. Канал у Metallic один, а карта нормалей имеет 3 канала, соответственно, вставляя карту нормалей в этот параметр, Substance Painter обрежет 2 лишних канала (предполагаю, что GB) и оставит только один для расчетов:

В конечном результате видно теперь, что больше нет никаких выпуклостей и впадин, но сама поверхность стала походить на какую-то металлическую плату. Вы так же можете посмотреть, как будет выглядеть параметр Metallic один, без остальных параметров (BaseColor и прочих), переключив режим отображения на 1 канал Metallic (если вы ничего не меняли, то во вьюпорте справа сверху есть возможность переключения отображения):

Выбираем металлик и получаем следующий результат:

Как видим, это один канал в градациях серого, который определяет, какие пиксели должны выглядеть как металл, какие — как нечто среднее, а какие — не металл. 0 — не металлический. 1 — металлический.

Аналогично и с каналом Roughness — любая текстура подойдет для работы с ним. В зависит от того, какой конечный результат вам потребуется. Можете попробовать самостоятельно воткнуть в канал Roughness любую доступную вам текстуру и посмотреть на результат.

Сложные материалы

Под словом «материал», обычно подразумевается коллекция готовых параметров, совокупность которых дает кинематографичный результат — материал (иначе говоря, фактуру, поверхность).
Возьмем, к примеру, вот это кожаное кресло:

Визуально, кресло состоит из 3 материалов:

Подведем промежуточный итог:

Практика

А что нам нужно для того, чтобы собрать мокрый грязный асфальт со следами шин?

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

Вот здесь (Ссылка) можно скачать текстуры для материалов, которые мы будем использовать в нашей практике.

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

Если вы уже посмотрели файлы, то, наверное, обратили внимание на маску для шин. Она подготовлена отдельно, так как я не смогу ее сгенерировать на ходу в Substance Painter, поэтому я воспользовался рисунком шин, найденным в интернете и подготовил его через Photoshop для работы в Substance Painter:

Теперь создадим новый проект и добавим все наши файлы в него. Для этого мы выбираем стандартные настройки, но теперь нам нужно при создании проекта еще указать наши текстурные карты:

В проекте создадим 3 папки под каждый материал и проименуем их, чтобы не путаться:

В нашем случае очень важна иерархия папок (да и не только в нашем, а всегда важна). Иерархия определяет уровень материала, иначе говоря — что на чем лежит. Асфальт в нашем примере — это дно. На нем остаются следы от шин. А вот грязь может быть и на следах шин, и на асфальте. Поэтому грязь будет выше всех.

Теперь давайте сразу спрячем все, что должно быть спрятано, и оставим только асфальт. То есть, создадим черные маски на папках Rubber и Dirt:

Теперь создадим в каждой папке по 1-ому слою. А точнее, создадим слои и распределим их в папки. Не забываем о нейминге, чтобы потом не путаться (не смотря на то, что визуально не совсем понятно, что слои в папках — поверьте, они в папках):

Все новые слои имеют базовые средние параметры. Поэтому Base Color серый, нормаль не отображает выпуклостей, а Metallic и Roughness не создают впечатления какого-либо материала.
И сейчас нам нужно это исправить, указав в каждый параметр соответствующую текстуру (на примере асфальта):

Ваша задача сейчас распределить все текстуры материалов в нужные параметры слоев. После того, как вы все это проделаете, назначим маску для резины и создадим эффект следов. Так как у нас уже есть черная маска у папки, то нам нужно просто подключить файл со следами колесиков к этой маске. Для этого кликаем ПКМ по маске и выбираем Add Fill:

Читайте также:  lmt акции что это

И в параметрах GrayScale указываем маску:

В результате на асфальте появятся следы резины, но их будет достаточно сложно разглядеть, так как это все таки PBR и кинематографичность (. ). Чтобы их увидеть, нужно Plane повернуть под определенным углом:

Сейчас эти два слоя (асфальт и резина) находятся на одном уровне. Но мы-то знаем, что резина находится НА асфальте, а значит, слой с резиной должен быть физически выше. И вот теперь мы воспользуемся тем самым параметром Height.

Найдите его в параметрах слоя Rubber и выкрутите его на максимум, чтобы прочувствовать, как он работает. Покрутите камерой, чтобы увидеть, как свет начал обрабатывать пиксели, которые вы настроили своими руками. Прочувствуйте свою мощь! =)

Ну а теперь выровняйте параметр на 0.1, чтобы это было не так явно и более правдоподобно:

Теперь настроим грязь. Исходя из реальности, можно предположить, что грязь должна забиваться в трещины асфальта в первую очередь. Но у нас нет маски, чтобы мы могли проявить слой грязи в трещинах. Однако решение есть — мы можем взять BaseColor асфальта и на его основе сделать маску для грязи.

Как это работает? Если посмотреть на BaseColor асфальта, то можно обратить внимание, что чем темнее пиксель, тем больше он похож на трещину. То есть, в этом изображении все темное — это трещины, а все светлое — это поверхность. И если мы хотим воспользоваться изображением, как маской, то нам достаточно было бы инвертировать цвета (темное сделать светлым и наоборот) пикселей, и у нас получилась маска для грязи.

Для этого отключим отображение слоя с асфальтом (нажав на глазик у папки с асфальтом), чтобы было проще воспринимать то, что мы делаем.

Далее, укажем, что в маске грязи должен быть файл и присоединим к ней файл Asphalt_BaseColor:

Как я и писал выше — светлым был асфальт, а темным — трещины. Соответственно, на больших поверхностях начала проявляться грязь, а в трещинах доминирует базовый серый цвет (базовые параметры / фон).

Теперь наша задача заставить эту текстуру восприниматься иначе — инвертировать цвета и усилить их, чтобы маска проявила грязь в трещинах. Проще всего это сделать с помощью дополнительного эффекта «Уровни» (Levels). Добавляем к маске дополнительный фильтр «Levels» так же, как мы добавляли Fill (ПКМ — Add Levels). И выкручиваем параметры примерно, как на картинке ниже:

И нажимаем на кнопку ниже «Invert» для инвертирования уровней интенсивности канала:

Теперь грязь располагается именно там, где нам нужно — в трещинах асфальта:

Включаем асфальт и присматриваемся к нашим трудам:

Но это слишком просто. Поэтому, давайте теперь добавим на наш асфальт оранжевую разметку. Для этого нам необходимо будет:

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

Теперь, вспоминая правила иерархии слоев, расположим папку с дорожной линией между асфальтом и резиной:

Настало время ручного рисования. Выделите маску папки RoadLine и начертите на плейне полосу разметки. У меня получился примерно такой результат:

Теперь стоит добавить еще одну маску на сам слой с краской, чтобы создать ощущение отвалившейся краски. Для этого мы не будем создавать папку, а создадим маску прямо на слое и добавим любую стандартную маску Substance Painter. Чтобы сделать это — добавьте маску, а потом добавьте заливку (ПКМ по маске и Add Fill). В заливке укажите Текстуру Dirt 4, которая находится под тегом Procedural:

И смотрим результат:

Не забываем, что у слоя с краской нужно указать высоту. Предлагаю указать 0.05 — среднее между резиной и асфальтом.

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

Ну и какой асфальт без воды?

Для этого создайте самостоятельно папку вместе со слоем. Пока НЕ добавляйте никаких масок.

Установите папку в иерархии на самый верх. Ведь вода же сверху, правильно? У слоя выкрутите на максимум Metallic и на минимум Roughness. Далее укажите высоту воды, равную 0.15.

И теперь отключите канал Color, нажав на кнопку, выделенную синей рамочкой:

Что произошло? Произошло смешение все нижних слоев согласно маскам и слоя с водой. Но у воды теперь нет канала цвета, а значит, она не может красить в нужные ей цвета пиксели. За то все другие каналы влияют на пиксели текстуры, и асфальт стал максимально мокрым и неприятным, как будто и вовсе не асфальт =)

Теперь домашнее задание: наложите маски так, чтобы асфальт был не полностью мокрым, а с небольшими лужами. Помните, что лужи не имеют неровностей на поверхности — подумайте, как нужно смешать слои так, чтобы лужи были гладкими. И что для этого нужно еще сделать? Я уверен, вы справитесь =)

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

Мы узнали, как работает PBR.

Параметры в PBR необязательно должны быть уникальны. Это все еще обычные параметры, которые мы можем указывать через каналы пикселей.

Одни и те же текстуры мы можем использовать по разному. Это дает нам преимущество — нам не нужно загружать память лишними файлами с большим количеством пикселей, а достаточно загрузить один файл и подсказать программе, как его рассчитать.

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

В следующих частях мы затронем такие темы, как развертка, плотность текселя (и что такое тексель), и подойдем, наконец, к самому интересному — созданию собственных шейдеров в UE4.

Программы Quixel и Substance Painter

Я всегда рекомендую новичкам, которые занимаются именно созданием текстур из материалов (не самих материалов), начать работать с Quixel. Поскольку эта программа умеет уже сотню готовых пресетов, которые очень легко контролируются и настраиваются, а через маски можно добиваться того же результата, что и у нас на практике через Substance Painter.

Что касается Substance Painter, то его сила начинает проявляться, когда в работу включается третья программа Substance Designer. Designer позволяет создавать свои материалы путем генерации нужных нам поверхностей. Дизайнер крут тем, что вы можете создать «умные материалы», которые будут иметь настройки внутренних масок, которые будут контролировать количество и качество внутренних материалов. То есть, «умные материалы» в данном случае — это контейнер, который содержит в себе несколько материалов и предустановленные маски, которые регулируются формулами и алгоритмами, которые художник прописывает в Designer.

Потом этот контейнер экспортируется в Painter, где происходит его тонкая настройка. Например, наш мокрый асфальт мы создали в Painter. Но могли бы собрать в Designer и подключить кучу дополнительных настроек, которые бы позволили нам изменять результат налету, в одном месте, а не переключаться среди кучи масок, как в Painter.

О PBR и переводе этой аббревиатуры

Очень часто PBR переводят, как физически корректный рендер. Я же считаю, что здесь важен точный перевод, потому что переводы типа «Физически корректный» в корне не верны, так как рендер в данном случае именно основан на физике, но не обязан быть корректным по отношению к физике. Вы можете сделать металл = 1, и шероховатость, равную 1, и включить дополнительно кучу других параметров, и это уже будет не корректный с точки зрения физики материал, а основанный когда-то на нем и переделанный вами в свой собственный набор параметров. То есть, создавая материалы на основе PBR, вы можете абсолютно полностью игнорировать законы физики и создать материал, который будет уникальным в своем роде.

Например, рисованные в своей стилистике камни. Как физически корректно мы должны отображать выдуманный материал, который не существует в природе?

Источник

Сказочный портал