В этом уроке я постараюсь объяснить, как построить модели мебели при помощи правильной UV mapping, делая работу более живой, создавая реалистичные шейдеры. Конечно, я не могу охватить все аспекты этой широкой темы, но все же попробую описать некоторые хитрости и приемы, которые я использую лично в повседневной работе.
Во-первых, давайте проведем краткие разъяснения по поводу слов, которые будем использовать. Что я понимаю как «материал» - это имеющаяся конкретного вида поверхность, которую можно отличить по цвету и отражательной способности. Это относится к объектам в реальной жизни и свойствам в целом. «Шейдер» - это CG версия материала из реальной жизни. Он может иметь схожие свойства и может легко корректироваться пользователем. «Текстура» или «Текстурная карта» - это файл bitmap, который мы будем использовать для создания цвета шейдера, регулируя отражательные свойства поверхности.
Я постараюсь показать, как воссоздать наиболее распространенные типы материалов, такие как глянцевые поверхности, стекло или металл. Я также считаю нужным объяснить философию построения шейдеров в Cycles, так как этот процесс немного отличается от других движков, представленных на рынке. Я надеюсь, что с этими знаниями вы сможете поэкспериментировать и создать реалистичные шейдеры.
Шаг 1. Базовые принципы.
При взгляде на любую поверхность, ваш мозг автоматически интерпретирует и соотносит с тем, что вы уже знаете и наблюдали в жизни. Например, вы можете самостоятельно назначить температуру разными цветами, где красный будет чем-то горячим, а синий - холодным. Также вы знаете, что бетонная поверхность остаточно матовая, а металлическая – более глянцевая. Это помогает в повседневной жизни, нашему мозгу не приходится анализировать все, что он видит, однако при детальном анализе поверхности достаточно трудно сказать, что мы конкретно видим. Какой цвет хромированной поверхности? В чем разница между отражениями различных металлов? Что создает поверхностные дефекты: крошечные неровности или разница в плотности материала? Ответы на подобные вопросы Вы должны знать при создании реалистичных материалов с помощью любого программного обеспечения.
Диффузный фактор.
В мире компьютерной графики «diffuse» или «color» это термин который подразумевает «цвет» который мы видим на поверхности объекта. Он также коррелируется с матовыми поверхностями не отражающих объектов. Мы можем легко распознать оранжевый фрукт в котором отсутствуют отражающие свойства металла. Однако, имейте ввиду, что в реальной жизни ВСЕ поверхности отражают свет и чисто «диффузных» материалов не существует.
Диффузный цвет может быть определен с помощью текстуры для более сложных поверхностей, таких как: дерево, мрамор, ткань и т.д.
Фактор отражения.
Я думаю, отражение является наиболее важным фактором. С его помощью Ваши модели и шейдеры выглядят привлекательно и реалистично. Как было сказано ранее, в реальной жизни каждый материал имеет отражает в той или иной степени. «Диффузные» материалы могут иметь различную степень отражения. О том как ее контролировать мы поговорим чуть позже в данной статье.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
В зависимости от программного обеспечения, существуют различные способы контроля угла отражения, но давайте сначала попытаемся понять что же это. Сделайте свои собственные наблюдения. Попробуйте взять любой окружающий Вас объект и посмотреть на него под различными углами. Вы должны заметить, как изменяется отражение от центра объекта к его краям:Как можно заметить выше, базовый материал создается смешиванием двух различных свойств материала с заданными пропорциями. Тем не менее, подобных материалов не существует в реальности и отражение всегда зависит от угла обзора. Данный, очень важный, фактор часто упускается из виду неопытными 3D-художниками.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
Стоит отметить, что отражения могут иметь различные цвета. Для большинства неметаллических поверхностей оно будет находится в диапазоне от белого до темно серого. Такие металлы как золото или латунь будут иметь затемнение в центральной части и становятся белее ближе к краю. В приведенных ниже примерах используется 100% отражающий шейдер (Glossy), однако в центре объекты выглядят немного диффузно (если бы смешали диффузный шейдер с отражающим (diffuse + reflectivity)).На примере выше отражение зависит от кривизны поверхности. Создание шейдеров подобным образом дает более реалистичный результат. Можно заметить что изменяется не только отражение в зависимости от поверхности / угла обзора (лучше всего видно на левом и центральном примерах), но и общая отражательная способность шейдера также изменяется. Наибольшее количество отражений все равно остается по краям объекта, но на правом примере центральная часть объекта имеет большую отражательную способность, чем остальные.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
Фактор шероховатости.
Шероховатость могут иметь диффузные, отражающие и прозрачные материалы. Изменяя данный параметр мы можем делать отражения более размытыми, шейдер стекла более туманным, а диффузные поверхности более светопоглощающими. Точно также, как и отражения, шероховатость изменяется в зависимости от угла обзора, однако не для чисто диффузных или стеклянных шейдеров.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
В примере выше все три шейдера отличаются лишь настройкой шероховатости нода Glossy. На данном этапе отражения размыты равномерно, независимо от угла обзора. Обратите внимание, что правый объект выглядит практически диффузным, хотя на самом деле это вовсе не так.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
Пример выше можно рассматривать как «базовый шейдер» для создания всех непрозрачных и не металлических материалов. Конечно, не существует никаких универсальных настроек на все случаи жизни, однако данная связка отилично подойдет для большинства сцен и даст приятный глазу результат. Изменение угла шероховатости можно рассматривать как очень тонкий эффект с помощью которого можно добиваться реализма в сценах.
Настройка нодов рис.1
Настройка нодов рис.2
Настройка нодов рис.3
Шероховатость применяется не только к отражающим поверхностям. Вы можете использовать ее для создания «затуманенного» стекла, как на картинке выше. Для диффузных шейдеров можно контролировать количество поглощаемого света поверхностью.
Фактор объема (Bump / Displacement).
Bump и Displacement используются для добавления трещин, царапин, соединений, выпуклостей и т.д. Иногда создавать подобное проще и даже нужно во время моделирования или скульптинга, а иногда правильно созданная текстура может выполнить тоже самое ни чем не хуже.
На картинке плоская поверхность с текстурой смещения.
Для создание «бампа» всегда необходима текстура, будь то изображение или процедурно генерируемая текстура. Наиболее распространенной ошибкой является использование слишком больших значений бампа или смешивание его с шероховатостью отражений. Лично я сначала настраиваю отражения, а затем добавляю смещение поверхности (bump). С его помощью нужно имитировать лишь незначительные повреждения, трещины и царапины. Для более «глубоких» искажений нужно использовать текстуру смещения (displacement).
Кроме объема и смещения мы можем использовать карты нормалей (normal maps). Лично я не очень люблю их использовать по нескольким причинам. Во первых, окончательный результат лишь немного лучше традиционного бампа и все еще далек от использования смещения. Во вторых, для создания карты нормалей необходимо прибегать к помощи стороннего ПО, что отнимает часть времени (и это при том, что я еще и очень ленивый). В третьих, карты нормалей выглядят совершенно по разному для различных текстур отражения, шероховатости и объема, которые Вы также будете использовать для создания своего шейдера. Все эти текстуры используют черные и белые значения, которые можно смешивать для достижения желаемого результата, в то время как карта нормалей использует цвета, что исключает ее из использования в качестве текстуры для бампа. И последнее, но не менее важное, карты нормалей не так просто адаптируются к различным движкам рендеринга и дают различные результаты в зависимости от настроек гаммы, например. Это делает довольно трудной работу по адаптации и тестированию модели в другой программе. Однако, если Вам нужно создать детализированную анимацию реального времени или модель для игрового движка, то Вам необходимо уметь обращаться с картами нормалей.
Примеры текстурных карт. Карта нормалей явно выделяется из черно-белого диапазона…
На данный момент эффект смещения все еще не поддерживается в полной мере движком рендеринга Cycles и полноценно работает лишь с использованием модификатора Displacement. Ниже мы более подробно рассмотрим, как создавать окружение и добавлять детали в Вашу сцену.
Шаг 2. Система шейдеров в Cycles.
Система шейдеров в Cycles является уникальной в сравнении с другими присутствующими на рынке. Вместо того, чтобы дать какие-то готовые базовые настройки, она предлагает лишь использование цвета, отражения, шероховатости…, для создания того, что Вам нужно. Таким образом мы можем создать как что-то физически точное, так и материал, который не может существовать в реальном мире.
Говоря о физике… Очень часто люди пытаются достичь физически точных результатов, в надежде, что это «ключ» к хорошему рендеру. Что ж, я не согласен с этим и лучшим аргументом к этому будут фотографии. Они 100% физически точные, но Вам необходимо приложить немалые усилия, чтобы получить хорошее фото. На мой взгляд, хорошый рендер можно получить несколькими способами. Все зависит от целей проекта над которым Вы работаете.
Нод Mix Shader
Mix Shader будет одним из Ваших наиболее часто используемых нодов, так как он позволяет смешивать два различных шейдера с заданными пропорциями. Вы можете использовать различные ноды в качестве фактора смешивания или же использовать значение по умолчанию от 0 до 1. Наиболее часто Mix Shader используется для добавления отражения к уже существующему шейдеру diffuse с нодом Fresnel в качестве фактора смешивания.
Хороший способ быстро понять принцип работы системы материалов Cycles, это представить ноды как атрибуты материалов из реальной жизни которые Вы бы хотели добавить для шейдера. В примере выше мы добавили отрежение для диффузного объекта. Мы также могли добавить прозрачность объекта подключив нод Transparent или создать интересный (нереальный) эффект.
Важно: Существует несколько различных способов достижения угловых отражений в Cycles. Наиболее часто используемый, это подключение нода Fresnel к фактору нода Mix. Но у данного метода есть один недостаток. Он зависим от геометрии объекта. Это означает, что он не будет корректно работать с такими плоскими объектами как штора, травинка, листок, бумага и т.д. Для корректных отражений стоит использовать нод Layer Weight. Данный способ геометрически независим и всегда дает корректный результат. Для большего контроля стоит использовать нод RGB Curve. Это хорошо распространенная практика и в других движках рендеинга.
Нод Add Shader.
Нод Add Shader менее популярен нежели Mix. Их функции схожи, они оба смешивают два шейдера, но результаты немного отличаются. Нод Add используется для объединения двух различных шейдеров. Некоторые материалы могут быть созданы исключительно с помощью нода Add.
Он не смешивает два шейдера, а добавляет их и в результате получается новый шейдер. Если мы берем 100% диффузный шейдер и 100% прозрачный, то на выходе получим не по 50% первого и второго, а по 100% каждого. Это может показаться немного странным, но есть хорошие примеры из реальной жизни. Для примера возьмем бумагу или травинку/листок. Глядя на них может показаться что они 100% диффузные, но стоит разместить позади них источник света и они кажутся 100% прозрачными. На основе этого мы будем считать что данные материалы 100% диффузные и 100% прозрачные.
(3 изображения в слайде)
Еще одной интересной особенностью нода Add является то, что он воспринимает все черные цвета как 0. Это означает, что они будут добавлены к первому шейдеру, но никак не повлияют на него. Мы можем использовать это для создания тканевых материалов добавив шейдер Velvet к Diffuse. Также можно с его помощью придать дополнительную прозрачность стандартному шейдеру Glass добавив к нему шейдер Transparency.
(3 изображения в слайде)
Шаг 3. Использование текстурных карт.
До сих пор мы использовали сплошные цвета для создания шейдеров. Для многих случаев этого достаточно, но чтобы создавать более сложные материалы приходится прибегать к помощи различных текстур. Добавить текстуру в Cycles очень просто, но к ней также необходимо подключить несколько вспомогательных нодов цветокоррекции.
Выше базовая настройка нодов, которую я использую при добавлении текстуры. Нод RGB Curves один из самых часто используемых нодов. С его помощью можно добиться лучшей корректировки изображения. Ни один из других нодов не предоставит Вам подобную гибкость. Также используется нод Hue Saturation Value для финальных штрихов, потому как финальная текстура в Cycles выглядит не так, как в программе 2D-редактирования.
Начинаем с базового диффузного шейдера.
Текстура дерева добавлена как вводный цвет.
Значение HUE нода HSV установлено на 0,450
Добавлен синий цвет и смешан с предыдущим шейдером с помощью нода Mix/
Черно-белая текстура с нодом RGB Curves подключены к фактору смешивания диффузных шейдеров.
Увеличен контраст с помощью кривой.
Важно понимать как движки рендеринга интерпретируют изображение. Если не вдаваться в технические детали, то полностью белый цвет они интерпретируют как 1, а полностью черный как 0. На 5-ом изображении слайдера выше хорошо видно, что синий цвет проступает в областях наиболее приближенных к белому. На 6-ом изображении этот эффект виден еще четче, за счет изменения контраста с помощью кривой. В компьютерной графике все цвета задаются широким диапазоном от 0 до 1, поэтому мы можем использовать различные изображения для создания отражений, шероховатостей и т.д.
Шейдер Glossy с тремя источниками света (spot)
Изобоажение подключено к входу шероховатости шейдера Glossy.
Изображение умножено на 0,100 с помощью нода Math.
Изображение умножено на 0,500 с помощью нода Math.
Изображение умножено на 1,0 с помощью нода Math.
Изображение умножено на 2,0 с помощью нода Math.
В примере выше с помощью нода Math производилась регулировка шероховатости поверхности. Умножив входное значение на 0.1 я увеличил отражающую способность поверхности. Это означает, что все черные значения практически не были затронуты, в то время как белые и серые тона (на 90% приближенные к белому) получили максимальное воздействие. Значение 0 создает зеркально отражающую поверхность. Установив значение равным 2 я удвоил цветовой тон, не воздействовав лишь на черный цвет 0. Данный результат можно увидеть на изображении 6. Также стоит отметить, что изображения 2 и 5 дают идентичный результат.
Нод Math может быть использован для огромного количества целей при создании материалов, так как он позволяет применять огромное количество математических операций к Вашим шейдерам. Одной из таких операций, которую Вы будете часто использовать будет контроль силы бампа на поверхности объекта.
Использование отражающего шейдера - один из лучших способов регулировки бампа.
С помощью текстуры создаем смещение поверхности.
С помощью нода Math увеличиваем текстуру до значения по умолчанию 0.500.
Значение нода Math изменено на 0,100
Значение нода Math изменено на 0,002
Изменено значение шероховатости для лучшего вида бампа.
Черно-белая текстура подключена к шейдеру Glossy - распространенная ошибка...
Перед тем как мы приступим к созданию более сложных шейдеров, я бы хотел остановить Ваше внимание на двух вещах. Вы могли заметить, что в примере выше использовался нод RGB to BW. С его помощью мы экономим память видеокарты при рендеринге на GPU. Обычно, при создании шейдера, используется отдельная текстура для отдельной части материала. Мы говорили об этом в начале урока. Однако данный подход менее экономен с точки зрения памяти видеокарты, так как каждая текстура должна быть в нее загружена. Это можно упустить из виду при наличии GTX Titan с 6 GB видеопамяти, но в большинстве случаев это не так, да еще в случае с большой сценой содержащей множество шейдеров с размерами текстур около 6К Ваш рендер может вовсе и не начаться. Именно в подобных ситуациях к нам на помощь и приходят подобные ноды. За счет различных манипуляций мы можем получать необходимые результаты используя лишь одну текстуру.
На 7-ом изображении слайдера выше показана распространенная ошибка использования черно-белой текстуры в качестве отражения. Посмотрите вокруг — отражения очень равномерные в подавляющем большинстве случаев. Оно может изменяться в зависимости от угла зрения, становится ярче, но, как правило, не имеет никакого цветового оттенка (кроме металлов). Лучший способ это проверить в реальной жизни, это поставить белый лист бумаги рядом с любым отражающим объектам и посмотреть на цвет бумаги в отражении. В большинстве случаев оно будет лишь немного темнее, больше ничего… Однако на отражения влияют и другие факторы, которые мы уже рассмотрели (шероховатости, бамп и т.д.) и в следующей главе я постараюсь показать как их правильно создавать.
Шаг 4. Создание более сложных шейдеров.
Базовый глянцевый / пластиковый шейдер
Шейдер, который мы попробуем создать.
Начнем со стандартного диффузного шейдера.
Добавим стандартный нод Mix и шейдер Glossy.
Используя нод Layer Weight определяем шероховатость шейдера.
Вход материала изменился для более точного результата.
Изменили параметр шероховатости на 1.
Измените форму кривой, значение шероховатости около 0,250
Используйте нод Mix Shader снова.
Подключите ноды RGB и HVS для управления цветом.
В центре 100% диффузный шейдер после подключения кривой.
Отредактируйте форму кривой, установив значение"Mix" на 0,125
Данный шейдер не является 100% идеальным и 100% физически точным. Тем не менее, его очень легко и быстро можно настроить. С его помощью можно создавать пластиковые и глянцевые материалы с различными значениями отражения и шероховатости. С помощью кривых можно легко настроить как базовый диффузный цвет, так и оттенок отражения. У меня это один из наиболее используемых шейдеров на проекте.
Шейдер дерева.
Деревянный шейдер создан при помощи одной текстурной карты.
Картинка и текстура, загруженные по умолчанию, имеют не самый лучший вид...
Производим цветокорректировку с помощью HSV.
Объединяем ноды Glossy и Mix shader.
Настраиваем отражение с помощью кривой.
Завершаем настройку отражения.
Изменяем шероховатость с помощью текстуры и нода Math.
Продолжаем настройку шероховатости, подключив еще один нод Math.
С помощью третего нода Math настриваем бамп и его силу.
Регулируем значение шероховатости и нода Math, отвечающего за бамп.
Подключаем связку нодов к входу шероховатости нода Glossy.
Снова подключаем Mix shader к входу материала.
Добавляем кривую для регулировки фактора.
Производим финальную настройку кривой.
Метод создания данного шейдера очень похож на создание шейдера пластика. Сначала определяется базовый диффузный цвет и производится его цветокоррекция. RGB Curves также могут использоваться для этой цели. Далее переходим к созданию отражения. С помощью нода Math мы объединяем текстуру с кривой, а с помощью второго регулируем силу воздействия текстуры.
После создания отражения производится регулировка бампа с помощью нода Glossy. В завершении все это смешивается и производится финальная корректировка фактора с помощью кривой.
Шейдер стекла.
Цветной стеклянный шейдер с эффектом светопоглощения.
Начинаем с простого нода Glass.
Для создания эффекта светопоглощения необходимо создать данную связку нодов. Нажмите Ctrt+G, чтобы объединить их в группу.
Подключите группу Absorbtion к фактору нода RGB, а его к ноду Glass.
Измините первый цвет на красный, а также отрегулируйте силу светопоглощения, изменяя параметр группы нодов.
Измените второй цвет на желтый и увеличьте значение группы до 15.
Соедините шейдеры Glass и Transparency (также подключите нод HSV).
Теперь добавьте еще один шейдер Transparency и смешайте его с помощью Mix со старыми. К фактору смешивания подключите нод Light Path.
Добавьте 2 нода Color, нод Mix RGB и соедините их, чтбы отрегулировать финальные цвета.
Последним шагом будет добавление отражения таким же спосбом, как при создании шейдера пластика.
Если бы меня спросили, что мне больше всего не нравится в Cycles, то я бы ответил — создание шейдера стекла. Честно говоря, до сегодняшнего дня я так и не смог найти метод, который бы в полной мере удовлетворить мои потребности. В зависимости от проекта, я всегда производил какие-то регулировки материала в зависимости от окружения, освещения и т.д. Многие считают что нод Glass по умолчанию дает хороший результат (и это действительно так во многих ситуациях). Из того что мы узнали в этой статье мы можем с уверенностью сказать, что нод Glass — это не идеальное стекло. Философия Cycles основывается на создании материалов с нуля и данный нод это всего лишь отправная точка, а не конечный результат.
При создании шейдеров стекла стоит помнить следующие вещи:
- геометрия должна быть равномерной и нормали вывернуты наружу
- при создании объемного отражения геометрия должна быть замкнутой (никаких открытых граней, ребер и т.д.)
- при пересечении шейдера стекла с другими диффузными шейдерами преломление всегда будет изменяться
- необходимо включить каустику для корректных теней и общего вида
Базовый шейдер металла.
Пример простого универсального металического шейдера.
Чистый материал металла будет на 100% состоять из шейдера Glossy.
Металлы имеют различные цвета отражения в зависимости от угла обзора. Используйте данную связку для их настройки.
Я использую упрощенную форму кривой, основанную на различных настройках материала, которые вы можете найти на сайте refractive.info
Во время создания материала я делаю цвет металла синим, так он выглядит более убедительно.
Добавьте еще один шейдер Glossy с другим значением шероховатости.
Добавьте кривую для контроля фактора смешивания шейдеров.
Отрегулируйте форму кривой для достижения желаемого результата.
Теперь вы можете создавать различные типы металлов, изменяя форму кривой и его цвет.
Шейдер металла требует несколько иной подход, чем другие материалы. Вместо того, чтобы сосредотачиваться на шероховатости отражения мы должны уделять внимание цвету отражения. Хорошим примером в данном случае будет золото. Его отражение переходит из немного темно-желтого/оранжевого цвета в полностью белый в зависимости от угла обзора. Есть сайты описывающие данной физическое явление, например этот: refractiveindex.info. На нем Вы можете найти графики кривых и индексы преломления для различных материалов. Одна кривая используется для смешивания двух цветов отражения в зависимости от угла обзора, а вторая для смешивания двух шейдеров.
Что касается отражений и шероховатости, я рекомендую использовать два нода Glossy и смешивать их с помощью кривой. Мы могли бы обойтись и одним шейдером с кривой подключенной к входу шероховатости, но из-за того, что металлы имеют очень четкие отражения, было бы трудно настроить нужную форму кривой.
Заключение.
Я уверен, что я не раскрыл тему достаточно, чтобы описать все часто используемые шейдеры. Для этого понадобилось бы еще несколько страниц. Я также уверен, что есть другие способы создания некоторых материалов, так как разные художники, как правило, имеют свои собственные подходы. Тем не менее, я думаю, что данный урок вдохновит многих пользователей на создание своих собственных шейдеров. Для меня лично создание шейдеров, вероятно, наиболее интересная часть всего процесса создания цифровых изображений. Ведь это так интересно смотреть на что-либо в реальной жизни, а затем пытаться воссоздать все это с помощью нодов в Cycles. Вам, также, не нужно смотреть в монитор все время, чтобы практиковаться в создании материалов. Просто посмотрите вокруг, поймите философию системы шейдеров Cycles, а затем воссоздавайте материалы из реальной жизни в голове.
Я надеюсь, что вы вдохновились!
Источник: http://www.chocofur.com/6-shadersamptextures.html
Хорошие примеры
В-а-а-а-х!!!
Прекрасный материал, очень доходчиво. Большое спасибо!
спасибо!