Семинар 3: Текстурные карты (Displacement, Bump, Specular)
Введение
На самом деле мы изучали процедурные текстуры именно для того, чтобы использовать их в текстурных картах! Ведь именно там они чаще всего и применяются. Зачем? Чтобы творить чудеса!
Карта отражений
Карта отражений (она называется SpecularMap) представляет собой информацию о том, какой участок должен отражать свет, а какой нет. Состоит она из градаций серого цвета от абсолютно чёрного до абсолютно белого. Там, где чёрный (значение = 0), там отражение минимально, где белый цвет (значение = 1) отражение максимально. Отражение в области серого цвета определяется тем на сколько он темный или светлый. Давай разберемся на практике.
Создай объект, например, UV-Sphere и настрой освещение. Добавь материал шару, включив режим нодов. Перейди в режим отображения рабочего пространство Compositing. В окне
3D-View(справа внизу) поставь режим Rendered.
Сейчас у нас есть только нод DiffuseBSDF, который задаёт цвет, но мы же хотим ещё получить и отражение. Для этого нам понадобится нод шейдера GlossyBSDF. Отлично. Но нам нужно, чтобы оба нода работали одновременно. Для этого надо добавить нод MixShader, который смешивает два шейдера.
|
|
Как видишь, на шарике появился блик. Если ты будешь двигать слайдер влево, то первый шейдер будет ярче, если вправо, то второй. А теперь представь, что мы передадим на вход Facкарту значений, с числами от 0 до 1. То есть такую карту где значение 0 – полностью включает первый шейдер, а значение 1 – полностью второй, значение 0,5 – оба шейдера одинаково работают. А теперь, как мы уже договорились, представь, что 0 это чёрный, а 1 это белый цвета.
Именно для этого и существуют карты бликов. Давай добавим текстуру из файла или уже готовую процедурную, чтобы посмотреть, как это работает и соединим её выход Colorсо входом Facнода MixShader.
Здесь для наглядности используется процедурная текстураChecker. Как мы видим, в некоторых местах, где значение текстуры черное, проявился первый шейдер DiffuseBSDF, а где значение белое – шейдер Glossy BSDF. Это потрясающе!
Но мы совсем не контролируем процесс. Давайте добавим больше способов управления! Добавь нод Converter – Math между нодами текстуры и ShaderMix. И переключи его на Multiply (умножение). Ты заметишь, как отражающие клетки сразу потускнели (в два раза, если быть точным). А почему?
Нод Mathпроизводит математические операции над теми значениями, которые получает. А умножение на 0.5, это же то же самое, что и разделить на 2. И когда мы получаем карту значений от нода текстуры, мы делим все значения пополам. Ноль делить на два равно ноль. А вот единица деленая на два уже даёт 0.5. Вот так у нас и уменьшилась яркость второго шейдера. Понятное дело, что умножать ноль на какое-либо число бесполезно, всё равно получим ноль. И шахматная доска, где всего два цвета, – не лучший пример для нода Math. Однако зачастую ты будешь иметь дело с более сложными текстурными картами и для получения реалистичного изображения тебе нужен будет контроль над происходящим, который и обеспечивает нод Math.
|
|
Карты bump
Карты bump (карты выпуклостей) являются одним из старейших типов карт. И первое, что нужно понять – это то, что bump создает поддельную детализацию. Они добавляют иллюзию глубины на поверхности модели с помощью трюка со светом. Никаких изменений самой сетки объекта или добавления дополнительных полигонов не происходит.
Карты bump, как и карты отражений, это черно-белые 8-битные изображения. И это только 256 цветов черного, серого или белого. С помощью этих значений карты bump сообщают 3D-редактору всего 2 вещи: деформировать геометрию вверх или вниз.
По аналогии с картами отражений, когда значения карты bump близки к 100% белому, с поверхностью геометрии практически ничего не происходит. Если изображение более темное, ближе к черному, детали вдавливаются в поверхность геометрии.
Карты bump отлично подходят для создания на поверхности модели мелкой детализации, например, пор или морщин на коже. Кроме того, их сравнительно легко создать в таком 2D-редакторе, как Photoshop или Gimp, помня при этом, что работать нужно только с черно-белыми цветами.
Как применять bump-карту на практике?
Для того, чтобы начать пользоваться bump-картами достаточно соединить нод текстуры) с нодом материала в порт Displacement. Просто, не правда ли?
На данном примере использована текстура Voronoi. Но как-то плохо видно, да? Давайтеповысим контрастность нашей текстуры. Добавим нод Bright /Contrast из подменюColorмежду нодом MaterialOutputи нашей текстурой. Увеличим контраст до 2. Ну вот, теперь заметно!
Так, что же произошло? Текстура увеличила контрастность и это повлияло на нашу карту выпуклостей.
А что делать, если мы хотим наоборот, там, где сейчас выпуклости, сделать вмятины? Что делать тогда?
Используем нод Color – Invert. Он получает на вход цвет и инвертирует его с некоторым фактором. Фактор равен нулю – нет инверсии, единице – полная инверсия.
Заметь, что bump-карты не меняют геометрию объекта. Выпуклости только визуальные.
Нод ColorRamp
Интересных эффектов можно достичь с помощью нода ColorRamp. Он преобразует полученные значения в цвета. Так как для карт выпуклостей нас интересуют только чёрно-белые оттенки, то добавлять цвета мы пока не будем.
В нижней части нода можно выбрать номер цветовой метки, её положение и цвет. В верхней части – способ распределения цвета.
Как это работает? Нод получает карту значений, в нашем случае это текстура Voronoi. Выкладывает значения (от 0 до 1) в одну линию и рядом прикладывает линию цвета своей шкалы. И замещает старые значения новыми в тех местах где они были. На примере, на картинке выше все черные цвета так и остались черными, все серые, интенсивность которых выше 0,15 (позиция белого слайдера) стали белыми (то есть не отображаются на карте выпуклостей), а то что было между, приобрело равномерно распределенный цвет от белого до чёрного. Это и образовало такие аккуратные ямки, как у сыра Маасдам.
Карты Displacement
Карты displacement создают физическую детализацию меша, на который они назначаются. Для создания displacement’а меш необходимо подразделить несколько раз с помощью модификатора SubdivisionSurfaceили в режиме редактирования с помощью инструмента Subdivide, чтобы разрешения хватило для создания реальной геометрии.
Ничто не справится с детализацией так, как это сделают карты displacement. И, поскольку поверхность геометрии изменяется на самом деле, это отражается и на силуэте модели.
|
|
Карта Displacementнакладывается с помощью модификатора Displace.
Далее следует выбрать текстуру из уже нам известных. Свойства текстур мы уже рассматривали. Их отличает лишь то, что они настраиваются не с помощью нодов, а в соответствующей вкладке панели свойств. Ты можешь задать имя текстуре, выбрать её тип. Для коррекции используй ColorRamp. Принцип тот же, как и с нодом ColorRampиз предыдущего раздела. Раздел Adjustсовмещает в себе аналог нодаBright / Contrastи опцию Saturation (яркость). Ну и конечно же ты можешь выбрать картинку для загрузки в качестве текстуры.
Задания