5 советов для создания лучших материалов
Созданию материалов в компьютерной графике часто не придают должного внимания. Я играюсь с настройками материала до тех пор, пока объект не будет выглядеть так как мне нужно и лишь затем перехожу к текстурированию.
Перевод урока с сайта BlenderGuru
Однако, в моих бесконечных поисках реализма я пришел к выводу, что материал важнейший шаг в создании чего-то реалистичного.
Конечно же, моделирование, текстурирование, освещение и все остальное также очень важно, но материал определяет то, из чего состоит поверхность. Дает понять аудитории насколько объект мягок, липкий или гибкий. Определяет каким он является в созданном вами виртуальном мире.
Создание материалов это большая смесь математики, правил и художественной свободы, но в данной статье я сфокусируюсь на практических аспектах, а не на теории.
1. Поймите как это сделано
Изучение рефернсных изображений это лишь первый шаг, но если мы хотим пойти дальше нам необходимо узнать почему это выглядит именно так. Давайте для примера рассмотрим керамический чайник:
Похоже что на нем присутствует довольно много диффузной поверхности, а также отражений (glossy).
Конечно, на этом можно и остановится. Но если вам нужен реализм, тогда необходимо копнуть немного глубже…
«Керамика» это довольно широкая категория, которая включает в себя посуду, кирпичи, стекло и даже термостойкие плиты на космических шаттлах. Но нас беспокоить лишь чайник, поэтому мы будем говорить лишь о фарфоровом чайнике.
Фарфор получают смешиванием некоторых порошковых минералов вместе с водой, чтобы сформировать своего рода глину. Художник создает из глины определенную форму и кладет в печь при температуре около 1000 градусов Цельсия. При такой температуре удаляется влага и остается лишь затвердевший минерал.
На данный момент это выглядит как простой диффузной шейдер, но вы могли также заметить что он немного прозрачен. Это происходит из-за выбора минералов используемых для создания глины. Каолин является основным веществом, но и другие вещества, такие как кварц и полевой шпат, как правило, часто включены в смеси.
Каолин | Кварц | Полевой шпат |
Кварц почти полностью прозрачен, как стекло (на самом деле кварц используется для создания стекла), поэтому, при смешивании порошка с каолином и полевым шпатом, мы получаем немного полупрозрачный диффузный материал.
После первой обработки огнем объект покрывают эмалью, чтобы сгладить неровности и дать ему защитное глянцевое покрытие и подвергают второму этапу обработки огнем. Это и делает поверхность отражающей.
Итак, давайте переведем все это в материал Блендера…
Я всегда начинаю с диффузной составляющей. Так как фарфор в основном образуется из порошка, то его поверхность довольно грубая и лишь затем наносится эмальное покрытие. Поэтому мы создадим этот эффект увеличением шероховатости шейдера Diffuse:
А для прозрачности будем использовать подповерхностное рассеивание, так как это более точно отражает суть. Только вместо одного шейдера будем использовать два. Один с большим масштабом, чтобы сделать спад немного мягче:
Теперь он выглядит гораздо красивее и мягче 🙂
Если вы не видите особой разницы, вот вам для сравнения GIF. Я знаю, разница не большая, но в этом и заключается вся суть на пути к реализму. Необходимо создавать мелкие, преднамеренные улучшения.
Теперь давайте добавим отражения:
Как вы могли заметить, я использовал нод Layer Weight в качестве фактора смешивания. Это очень важно для достижения реалистичного результата…
2. Отражения Френеля
Нельзя написать статью о создании материалов по крайней мере без упоминания об отражениях Френеля. На мой взгляд это самое важное и фундаментально правило после сохранение энергии.
Так что же это? Это простое правило гласящее о том, что отражения будет больше на углах объекта, чем в остальной его части.
Слишком часто я вижу рендеры без использования отражения Френеля и сразу же чувствуется подделка.
Вот как выглядит данная функция:
Чтобы правильно его использовать, просто подключите нод Fresnel или Layer Weight в качестве фактор вашего Mix Shader:
Ноды Fresnel и Layer Weight дают на выходе одинаковые результаты. Разница лишь в том, что нод Fresnel позволяет устанавливать IOR (показатель преломления), что бывает крайне полезно, если вы знаете этот показатель для материала который создаете. А нод Layer Weight просто позволяет вам на глаз устанавливать желаемое отражение в диапазоне от 0 до 1.
3. Убедитесь, что есть что-то, что можно отразить
Я часто вижу людей пытающихся создать материал металла с использованием лампы (тип Солнце) и серого фона.
Металлы одни из наиболее отражающих материалов. У вас не получится заставить их отражать что-то, если отражать нечего.
Поэтому, будет не плохой идеей убедится, что в вашей сцене присутствует что-то, что металл сможет отразить.
Самый простой (и самый эффективный, как оказалось) способ, это использовать HDR-изображение в качестве окружающей среды. Я обычно рекомендую использовать их для освещения, потому что они дают вам точную копию освещения из реального мира (если они были сфотографированы правильно).
4. Смотрите за тем, что вы делаете
Вы когда-нибудь пытались моделировать с закрытыми глазами? Я думаю, что нет 😉
Так почему вы создаете свои материалы постоянно не проверяя, как это выглядит на модели?
Одной из первых вещей, которые я добавил в аддон Node Wrangler был Emission Viewer (предпросмотр). Суть такая же как и у нода для пост-обработки, только для шейдеров.
Кликнув по любому ноду с зажитым Ctrl + Shift вы подключите просмотр (который по сути является шейдером Emission). При наличии окна 3D-вида вы быстро сможете узнать, что получаете на выходе любого нода.
5. Используйте несколько световых предустановок
Много раз я проводил часы за настройкой материалов, но когда я импортировал результат в основной проект, я долго думал, что за ужас я сделал. А все потому, что освещение в сценах было настроено по разному.
Если вы работаете над чем-то статичным и в результате у вас будет одно изображение с одного угла — в таком случае все отлично. Но если вы работаете над объектом для анимации, кино или игры, то вам нужно убедится, что материал хорошо выглядит при различных типах освещения.
Для этого я собрал коллекцию из различных HDR-карт в отдельный blend-файл с различными настройками ламп. В процессе работы над материалом я несколько раз меняю освещение. В итоге я знаю, что мой материал будет выглядеть хорошо при любом освещении.
P.S. Если идея использования множества HDR-карт звучит устрашающе, смею вас успокоить. В июле мы выпустим новый аддон HDR library, который позволит быстро и легко переключаться между десятками HDR-карт. Следите за обновлениями;)
Вот и все! Надеюсь я не сильно утомил вас теорией и вы не забудете эти советы, когда в следующий раз приступите к созданию собственного материала 🙂
Использование Библиотеки Материалов / Blender
Библиотека материалов Verge3D, это коллекция готовых к использованию материалов, которые вы можете назначить своей модели в Blender. Ниже, вы можете ознакомиться с процессом установки и эффективным методом использования данных материалов.
Установка
В магазине Soft8Soft доступны библиотеки материалов, они представленны в виде тематических наборов, например:
- Набор Необходимых Материалов (На основе Eevee).
- Набор Материалов для Ювелирных Изделий (На основе Eevee).
- Набор Материалов для Техники (На основе Eevee, в разработке).
Просто распакуйте архив с библиотекой материалов в любую папку на вашем компьютере. Внутри распакованной папки вы найдете несколько файлов расширения blend (по одному на каждый материал). Текстуры используемые в материалах расположены в папке с названием material_maps. Папка environments содержит три варианта HDR изображений, которые вы можете использовать для окружения (каждый вариант представлен в разрешении: 1k, 2k и 4k).
Добавление Материалов в Проект
Чтобы использовать библиотеки материалов в проекте, вызовите диалоговое окно File / Append.
Затем перейдите в папку библиотеки и один раз нажмите на файл blend с материалом, который вы хотите добавить.
Нажмите один раз на папку Material.
. выберите материал и нажмите кнопку Append from Library.
Как только материал будет добавлен, у вас появится возможность назначить его для своей модели. Выберите модель, перейдите во вкладку Material, нажмите на маленькую кнопку рядом с названием материала (или рядом с кнопкой New, если у модели нет назначенного материала) и выберите из списка добавленный материал.
Настройка Окружения
Материалы сделанные под движок Eevee нуждаются в настроенном окружении, иначе они будут выглядеть темно из-за отсутствия отражений. В проекте создаваемом в Verge3D по умолчанию уже настроено окружение, которое вы можете использовать для своего приложения. Кроме того, вы можете настроить окружающую среду с нуля как показано в этом видео уроке. Для этой цели вы можете использовать любую из HDR текстур, находящихся в пакете материалов в папке environments.
Развёртка
Большинство материалов библиотеки требуют, чтобы у моделей была развёртка. Подумайте о том, чтобы развернуть свои модели для достижения наилучшего результата.
Настройка Ваших Материалов
Большинство шейдеров предлагают наборы входных данных, путем настройки которых вы можете создать уникальный материал, подходящий под ваши нужды.
Кроме того, в материале имеются специальные входы для удобного подключения карты нормалей и АО.
Разрешение Изображения
Некоторые материалы используют текстуры высокого разрешения (до 8k), которые могут существенно повлиять на скорость загрузки и производительность. Если необходимости в высоком разрешении текстур в вашем проекте нет, рассмотрите возможность ужать изображения.
Перемещение Текстур в Папку Приложения
Для обеспечения целостности вашего приложения (что важно, если вы передаете исходные данные проекта третьим лицам), можно сохранить текстуры, используемые добавленными материалами, в папке приложения, как описано ниже.
Откройте Image Editor (или UV Editor) в Blender. Выберите текстуру из выпадающего списка и проверьте её путь к файлу.
Если окажется, что путь к текстуре указан из папки библиотеки материалов, используйте меню Image / Save As, чтобы сохранить её в папке приложения.
Найдите другие текстуры библиотеки материалов и повторяйте эту операцию до тех пор, пока все текстуры не будут перемещены.
Вы можете проверить целостность вашего приложения, переместив его папку в другое место в вашей файловой системе. Откройте blend файл и вызовите диалоговое окно File / External Data / Report Missing Files.
Если какие-то текстуры, используемые в blend файле утеряны, внизу экрана появится соответствующее жёлтое предупреждение.
Свободные программы в офисе и дома
Это, пожалуй, самая увлекательная часть работы. После создания объектов хочется придать им вид реальных предметов вместо тех серых и безликих фигур, которыми они являются сейчас.
Скорее всего такое назначение материалов будет сугубо предварительным и в дальнейшем потребует уточнения. Это связано с тем, что ни сцена, ни освещение пока на настроены. Однако, в первом приближении материалы можно настроить и на этом этапе. Назначение материалов даст возможность видеть блики света, отражения, прозрачность — то, что делает сцену реальной в воображении зрителя. Это позволит более уверенно работать со сценой в дальнейшем.
Надо понимать, что во всех программах 3D моделирования объекты состоят всего лишь из бесконечно тонкой виртуальной оболочки соответствующей формы. Эта оболочка сама по себе не имеет каких-либо физических свойств, в том числе и оптических. Процесс назначения материала как раз и состоит в том, чтобы сопоставить нужные свойства с той или иной частью поверхности объекта.
При этом в Blender, да и в других программах тоже, нет возможности присвоить материал просто указав его название, например, стекло, металл, трава и т.п. Это было бы совершенно нерационально. Материалов существует так много, что перечень получился бы огромным. Да и выглядят одни и те же материалы в разных условиях по-разному.
Вместо этого материал требуется "создавать" из набора базовых физических свойств, таких как шероховатость, коэффициент отражения, прозрачность и других. Конечно, это сложнее и требует определенных знаний и опыта. Требуется овладеть инструментами, которые имеются в программе для "создания" материалов. Или, другими словами, для комбинирования базовых физических свойств поверхности. Взамен мы получаем гибкость и возможность добиваться нужного эффекта.
Полученный материал — это всего лишь набор чисел, который используется программой-рендером для расчета прохождения лучей света. Разные рендеры используют разные наборы и разные алгоритмы расчета. Это значит не только то, что результаты также будут отличаться друг от друга, но и то, что материалы, а точнее наборы данных, соответствующие материалам, которые подобраны для одного рендера, не подходят для другого. К сожалению, здесь пока нет стандартов. Реальность такова, что нужный рендер требуется выбрать уже сейчас, сразу после создания объектов, если это не было сделано раньше. Сказанное относится и к источникам света. В каждом рендере их математические модели свои.
Итак, для работы с материалами требуются по крайней мере две вещи: понимание основных свойств доступных рендеров с тем, чтобы выбрать наиболее подходящий из них и умение использовать инструменты для управления базовыми физическими свойствами поверхности, имеющиеся в выбранном рендере.
Программы-рендеры упоминались уже не раз. Теперь есть смысл остановиться на них подробнее. Именно они во многом определяют конечный результат.
Рендеры
Если говорить по-простому, то задача рендера — просчитать пути всех лучей в сцене от всех источников света — до камеры. Расчет проводится с учетом отражения, сквозного прохождения, преломления, изменения интенсивности и других эффектов, которые дают объекты. Задача довольно сложная и ресурсоемкая.
Принято делить все рендеры на два больших класса — физически точные (распространен термин Unbiased Rendering, что означает рендеринг без допущений) и имеющие допущения (Biased Rendering). Предполагается, что первые рассчитывают ход лучей в соответствии с точной физической моделью, а вторые имеют множество упрощений, используют трюки для имитации физики и даже не учитывают некоторые эффекты вообще. На самом деле реальная картина настолько сложна, что ни одна программа сегодня не в состоянии ей соответствовать полностью. Мало того, до сих пор природа некоторых оптических эффектов изучена не до конца, что уж говорить об их математической модели. Поэтому абсолютно точных рендеров не существует.
Тем не менее, условная граница между физически корректными и сильно упрощенными рендерами все же имеется. В первых количество допущений настолько мало, что результат рендеринга выглядит достаточно правдоподобно. Платой за это является большое время рендеринга и/или высокие требования к вычислительной мощности компьютера. Упрощенные рендеры работают намного быстрее, но результат может быть не очень реалистичным.
- Рендер Blender (Internal Blender Render). Этот рендер относится к классу рендеров с допущениями. Он изначально был встроен в Blender и долгое время был в нем единственным. Работает очень быстро, особенно на современных компьютерах. Хорошо подходит для создания сцен типа мультяшных, а также для анимации вообще. Фотореалистичных изображений в нем не получить, хотя правдоподобие может быть вполне достаточным для многих задач. Примерно с 2009 года Blender Render практически не развивается, исправляются только ошибки, найденные в коде. Разработчики решили постепенно заменить его на более совершенный рендер, чего пользователи программы очень ждали. Но Blender Render до сих пор присутствует в программе, настраивается очень просто и по-прежнему может использоваться для проектов с невысокими или специфическими требованиями к результату. В Blender он включен по-умолчанию.
- Cycles Render включен в Blender начиная с версии 2.5 и пришел на замену Internal Blender Render. Это физически корректный рендер. Он активно развивается и постоянно обрастает новыми возможностями. Производительность у рендера средняя, но может быть существенно увеличена при подключении к проведению вычислений графического процессора видеокарты. Позволяет получить очень реалистичные изображения, пригоден и для анимации. Cycles Render входит в состав Blender, но его нужно выбрать в настройках программы, чтобы использовать вместо Internal Blender Render.
- LuxRender является отдельным проектом. Он не входит в состав Blender и требует установки, которая впрочем довольно проста и описана на его домашнем сайте. После установки можно выбрать LuxRender в настройках Blender. Это физически точный рендер. Основой LuxRender явяется проект физически точного трассировщика лучей PBRT, который используется для научных целей, поэтому физика здесь на первом месте. В LuxRender учтено больше эффектов, чем в Cycles Render, поэтому он может давать еще более реалистичные изображения. Платой за это является большое время расчета. Процесс рендеринга очень похож на проявление фотографии — изображение возникает постепенно. Сложные сцены могут проявляться часами. Программа, кроме прочего, имеет собственный графический интерфейс и позволяет выполнять отложенный просчет сцены и изменять освещенность сцены даже после окончания рендеринга. Для анимации этот рендер лучше не использовать.
- Физические размеры модели должны соответствовать прототипу. О выборе масштаба сцены уже говорилось ранее.
- Материалы и источники света должны настраиваться после выбора рендера, а не до этого.
Выбор рендера в Blender производится в верхней части окна, справа от главного меню.
Выбор рендера в Blender.
В дальнейшем во всех примерах будет использоваться Cycles Render.
Инструменты для управления физическими свойствами поверхности
Для назначения поверхностям свойств, которые соответствуют каким-либо материалам, можно использовать два различных инструмента. Важно понимать, что оба они делают одно и то же. Мало того, настройки сделанные в одном сразу отображаются в другом.
Первоначально в Blender все настройки материала были сосредоточены в правой Панели свойств и становились доступны при нажатой кнопке Материал. Этот инструмент работает и сейчас (на иллюстрации находится справа). Но постепенно он заменяется на Редактор узлов (на иллюстрации это область слева), который можно отобразить в любом окне, если выбрать для него соответствующий пункт в списке видов (крайний значок слева в строке частного меню окна). Редактор узлов узлов удобнее, нагляднее и обладает бОльшими возможностями, чем то, что имеется в Панели свойств.
Инструменты для настройки материала.
Пользователи Blender высоко оценили положительные свойства Редактора узлов, поэтому разработчики постоянно совершенствуют его и планируют сделать основным инструментом не только для управления материалами, но и другими свойствами проекта. Уже сейчас Редактор узлов используется для настройки не только материалов, но и композиции и текстур.
Использование Редактора узлов рассматривается в этом разделе по причине того, что настройка материала позволяет наглядно продемонстрировать свойства этого инструмента и принцип его работы.
На иллюстрации видно, что сразу после создания объектов проект не содержит ни одного материала. Новый материал появится после нажатия кнопки Создать, причем неважно где это сделать — в Редактор узлов или в Панели свойств. Сразу после этого появится материал с названием, которое присваивается автоматически и которое можно изменить после щелчка левой кнопкой мыши в соответствующем поле. Материал присваивается тому объекту, который был в этот момент выделен. Для других объектов этот материал недоступен, но это можно изменить, нажав мышкой справа от материала букву F .
BSDF (Bidirectional Scattering Distribution Function) — двунаправленная функции распределения рассеяния. Это математическая функция, которая определяет вероятность того, что конкретный луч света будет отражен (рассеян).
По умолчанию материал имеет свойства: Диффузный BSDF, цвет белый, шероховатость 0 и некоторые другие. В окне Редактора узлов появились два прямоугольника (для отображения возможно потребуется отметить чекбокс Использовать узлы). Это и есть собственно узлы (nodes, ноды — все эти термины используются в литературе по Blender и являются эквивалентами). Узлы имеют точки разного цвета и соединены линией. Это требует пояснения.
Появление материала.
Узлы — это логические объекты, используемые для для управления в данном случае свойствами материалов, такими как цвет, шероховатость, коэффициент отражения и другими. Узлы имеют входы (слева) и выходы (справа). На вход попадает информация о каких-либо характеристиках материала. В узле над этой информацией производятся действия, которые зависят от свойств этого узла. Затем преобразованная информация передается на выход. Узлы можно выстраивать в цепочки для последовательного изменения свойств материала соединяя выходы предыдущих нодов с входами последующих.
- o желтые разъемы передают цветовую (например, RGB) информацию.
- o серые разъемы относятся к скалярным данным. Например, коэффициент смешивания, карта рельефа, прозрачность (Альфа и т.п.).
- o сиреневые (или фиолетовые) разъемы передают векторную информацию (нормали, касательные, направление на камеру и т.п.).
- o зеленые разъемы связывают шейдеры.
Как правило, соединяются сокеты одного цвета. Но далеко не всегда.
Неиспользуемые входные сокеты обычно автоматически заполняются подходящими значениями по умолчанию и часто имеют слайдеры для установки этих значений вручную.
Один выход может быть соединен с несколькими входами. Соединения входов и выходов показываются гибкими линиями, которые можно "отключать" и "подключать" мышкой. Сами узлы также можно перемещать мышкой по полю для более наглядного их расположения. Кроме того, узлы можно копировать ( Ctrl+C ) и вставлять ( Ctrl+V ).
Вращение колесика мыши изменяет масштаб просмотра всей карты узлов.
Различных узлов довольно много и все время появляются новые. Для правильного и свободного использования необходимо представлять их назначение и возможности. Узлы располагаются в пункте частного меню Добавить. Они сгруппированы здесь по функциональному назначению. Для добавления узла можно использовать также комбинацию клавиш Shift+A .
Шейдеры
Вернемся к иллюстрации, которая была представлена выше. Узел Диффузный BSDF — это и есть материал. Такие узлы имеют собственное название — шейдер. В данном случае шейдер является отдельным программным модулем, в котором заложены свойства материала. Шейдеров не много. Все они сосредоточены в подпункте частного меню Добавить -> Шейдер. Рассмотрим их подробнее. Все приведенные здесь изображения шейдеров, которые имеют логотип Blender, взяты из документации Blender, которая имеется в свободном доступе на сайте проекта. Там можно найти гораздо более подробную информацию о них, да и о других узлах тоже. Ссылка есть в Приложении. Напомним, что речь идет о материалах для Cycles Render, но не для других рендеров.
Диффузный BSDF (Diffuse BSDF) рассеивает свет и дает матовую поверхность.
- GGX дает размытое отражение.
- Бекман дает размытое отражение.
- Остро (Sharp) приводит к совершенно четкому отражению, как в зеркале.
Прозрачный BSDF (Transparent BSDF) — прозрачный материал без преломления. Только чистый белый цвет дает такой эффект, в остальных случаях лучи ослабляются или окрашиваются. Почти не применяется самостоятельно и не очень подходит для создания прозрачных материалов. Скорее это — Альфа (прозрачность), которую используют, например, для получения постепенного исчезновения объектов или похожих эффектов.
Преломляющий BSDF (Refraction BSDF) — материал дает глянцевое преломление для материалов, которые пропускают свет. Этот узел не следует использоваться сам по себе, лучшие результаты дает смешение с Глянцевым BSDF с помощью узла ввода Френель. Без такой комбинации получатся довольно темные края объекта.
Имеет несколько алгоритмов просчета характера отражения света от микронеровностей.
BSDF стекла (Glass BSDF) материал стекла. Его можно рассматривать как смесь преломления и отражения при скользящих углах. Но для стекла сделан специальный шейдер. Это вызвано тем, что стекло — материал, который постоянно встречается в реальности, его вид всем хорошо знаком. Поэтому малейшие ошибки при создании этого материала, как правило, сразу видны.
Стекло имеет тенденцию вызывать шум из-за каустики. По умолчанию цвет стекла не белый, а чуть сероватый (value = 0.8). Для получения белого надо увеличить интенсивность до 1.
Имеет несколько алгоритмов просчета характера отражения света от микронеровностей.
Просвечивающий BSDF (Translucent BSDF) похож на матовое стекло. При малом количестве сэмплов выглядит как состоящий из матовых крупинок, при большом — приобретает однородность.
Анизотропный BSDF — в реальном мире этот эффект можно увидеть на отполированных поверхностях с длинными параллельными микроцарапинами. Например, в результате механической обработки при шлифовке в одном направлении. Похожий эффект может возникать на поверхности материалов, состоящих из мелких параллельных волокон.
BSDF бархата (Velvet) — может использоваться для материалов, подобных ткани. Предназначен для использования вместе с другими шейдерами (например, Диффузный BSDF) и не особенно полезен без них.
Toon BSDF — имеет два режима: диффузный (Diffuse) и глянцевый (Glossy). Материал для мультфильмов.
BSSRDF — материал с подповерхностным рассеиванием. Здесь свет проникает на некоторую глубину, а затем переизлучается наружу и освещает поверхность изнутри (кожа, воск, мрамор, молоко).
Используется модель подповерхностного рассеивания SSS (Subsurface Scattering). Свет, проникая через поверхность полупрозрачного материала, рассеивается внутри самого материала и выходит из материала в другой точке. Рассеивание происходит путем многократного отражения в случайном направлении от частиц материала.
BSDF волос. Подходит для имитации не только волос, но и травы, хвои, перьев, чешуи и подобных им по структуре материалов.
Дыра (Holdout) — материал с Альфа=0, т.е. полностью прозрачный. Его бывает удобно использовать при композитинге для того, чтобы полностью пропустить лучи света, которые не должны в дальнейшем участвовать в расчетах.
- Излучение (Emission) объект с данным типом материала будет испускать свет и освещать сцену. Это один из вариантов освещения.
- Ambient Occlusion (АО, окружающее поглощение, затенение) — материал, освещенность которого зависит от других объектов. Эффект АО подробнее будет рассмотрен в заключительном разделе этой главы
- Фон. Часто бывает необходимо использовать для сцены задники. Они могут выполнять две задачи — быть фоном сцены, показывая какое-либо изображение и участвовать в ее освещении.
Из сказанного выше уже стало ясно, что шейдеры почти не применяются в одиночку. Реальные материалы почти всегда в той или иной степени обладают свойствами нескольких шейдеров одновременно. Например, материал может быть глянцевым, прозрачным и в то же время анизотропным. Для того, чтобы создать хороший материал, шейдеры обычно требуется комбинировать, а также использовать и узлы других типов. Для получения комбинации двух или более источников предназначены специальные шейдеры Смешать шейдеры (Mix) и Сложить шейдеры (Add).
Все шейдеры имеют настройки, которые для каждого из них соответствуют их физическим свойствам. Это может быть цвет, шероховатость, коэффициент преломления, глубина проникновения света и другие.
В структуре, которая получается при создании материала, обязательно должен присутствовать узел Вывод материала. Именно он применяет полученный материал к объекту.
Сказанного выше вполне достаточно для создания материала в первом приближении. На иллюстрации ниже видно, что в Редакторе узлов и в Панели свойств виден один и тот же материал. Изображение фигуры шахматного коня в нижней части показано после рендеринга ( F12 ).
Предварительное создание материала для фигур черного цвета.
Надо помнить, что ни камера, ни освещение пока не настраивались.
Текстуры — общие замечания
Очень часто созданный материал выглядит слишком уж хорошо, просто идеально. В реальности так обычно не бывает. Следы механической обработки, старения, грязи и другие подобные вещи придают предметам ту достоверность, которая и делает их реальными. Мы можем не замечать такие мелочи, но они всегда есть.
Иногда нужный материал вообще затруднительно создать, особенно если он имеет природное происхождение. Такими "трудными" материалами являются, например, волны или трава, лес, видимый с большого расстояния, облака. В подобных случаях можно использовать текстуры — заранее подготовленные изображения подходящих поверхностей и предметов.
В Blender имеется возможность применять два вида текстур — процедурные и на основе самостоятельного изображения.
Процедурная текстура (фон). |
Текстура-изображение на сфере. |
Процедурные текстуры являются трехмерными математическими функциями. Они хорошо подходят для имитации таких поверхностей как дерево, волны, облака и им подобных. Изображение образуется в области пересечения этой трехмерной функции с поверхностью объекта. Интересно, что любые сечения объекта снова дадут изображение текстуры, например, на "распиле" древесины.
Второй тип текстур — это просто картинки, которые берутся из подходящих файлов изображений. Это могут быть фотографии реальных объектов или изображения, предварительно созданные в графическом 2D редакторе. Такие текстуры могут придать трехмерной модели очень правдоподобный вид. Сложность здесь состоит в том, что текстуры-картинки являются двумерными объектами. Эти плоские изображения требуется накладывать на трехмерные поверхности сложной формы. Для этого в Blender применяется методика, которая, связана с использованием развертки 3D объекта.
Использование любых текстур похоже на нанесение рисунка на поверхность объекта. Форма объекта при этом не меняется, хотя рисунок может создавать зрительную иллюзию такого изменения. Например, текстура Волны, наложенная на плоскость, может быть очень похожа на настоящие волны, но плоскость при этом все равно остается плоскостью. Лучи при рендеринге будут отражаться от этой плоскости, а не от "волн". Хотя, если текстура получена при похожем освещении, то она может выглядеть очень реалистично.
Также важно понимать, что текстуры остаются всего лишь картинками. Сами по себе они не обладают свойствами какого-либо материала — не способны давать отблески, преломлять лучи или участвовать в других оптических эффектах. Поэтому текстуры всегда используют вместе с подходящим для поверхности материалом. Мало того, текстуру невозможно наложить на объект не назначив предварительно материал.
Процедурные текстуры
Мы все еще находимся в инструментах создания материалов — и в Редакторе узлов, и в правой Панели свойств. Признаком этого является то, что кнопка Шейдер (для первого) и кнопка Материал (для второго) — нажаты. Эта кнопка выглядит как глянцевый золотистый шар.
- Изображение текстура — в качестве текстуры используется изображение из файла PNG (предпочтительно) или JPG.
- Environment Texture (Текстура окружающей среды) похожа на предыдущую, но создает излучающие свет объекты на основе изображений из файлов PNG или JPG.
- Текстура неба.
- Текстура шума, Вороной (Voronoi), Масгрейв (Musgrave) представляют собой математическую реализацию соответствующей модели шума, где имеющиеся для узла неясные настройки можно изменять хоть до бесконечности.
- Текстура волны.
- Текстура градиента.
- Волшебная текстура (Magic). Эта текстура построена не на основе шума. Может использоваться для переливающихся материалов, таких как нефтяные пятна, тела насекомых и различных металлов.
- Текстура шахматной доски — изображение, составленное из квадратов двух цветов. Цвет можно выбирать. Масштаб задает количество клеток на объект — чем больше значение, тем больше клеток поместится, тем их размер будет меньше.
- Текстура плитки.
Принцип включения процедурных текстур в материалы почти всегда примерно один и тот же — текстура должна воздействовать на какое-либо свойство шейдера. Здесь все определяется опытом, очень могут помочь собственные эксперименты и примеры, которых достаточно в Интернете.
Вот как выглядит в Редакторе узлов настройка материала с использованием процедурной текстуры, который показан на иллюстрации выше.
Настройка процедурной текстуры (фон).
Еще один пример — материал для шахматной доски. Пусть это будет дерево. Его структура имеет волнообразный характер и состоит из более темных и более светлых участков. Цвет и чередование участков варьируются в очень широких пределах в зависимости от породы древесины и характера ее обработки. Мало того, "черные" и " белые" шахматные клетки визуально могут сильно отличаться не только друг от друга, но и от самой доски.
Чтобы придать шахматной доске ее привычный вид, надо решить две задачи: создать три подходящих материала и расположить эти материалы на соответствующих им участках. Напомним, что сам объект Шахматная доска был создан в предыдущем разделе.
Обычно одному объекту соответствует один материал. Но для объекта Шахматная доска нужны три. Для того, чтобы добавить материал, надо нажать мышкой знак "+", который расположен справа в области Слотов материала. После этого его нужно создать как обычно, например, в Редакторе узлов и дать каждому материалу понятное название. На иллюстрации видно, что имеется три материала: для доски и для черных и белых клеток. В подобных случаях материал расположенный сверху считается основным материалом объекта.
Знак "—" справа в области Слотов материала удаляет ненужный слот материала.
Три материала для шахматной доски.
Материалы можно создавать в Режиме объекта, но в этом случае их можно назначить только всему объекту целиком. Для назначения разных материалов различным частям объекта нужно перейти в Режим правки.
В Режиме правки можно просто выделить нужные грани и назначить им материал. Но бывает полезно такое выделение зафиксировать, что может понадобиться при дальнейшей работе над моделью. Делается это так.
В Режиме правки на Панели свойств включается отображение Данных объекта (кнопка в виде треугольника, слева от кнопки материала). После этого нужно выделить все грани (удерживая клавишу Shift ), соответствующие белым клеткам шахматной доски. В данном случае нужны именно грани, но вообще выделять можно и ребра, и вершины. Об инструменте, который управляет этим выбором уже говорилось ранее.
После того, как грани выбраны, можно объединить их в группу. Для этого нужно нажать мышкой знак "+", который расположен справа в области Группы вершин, затем нажать кнопку Назначить, которая расположена ниже. Название группы желательно сразу изменить на более понятное. Кроме кнопки Назначить имеются также кнопки для удаление, выделения или снятия выделения группы.
После того, как такая же операция будет проведена с черными клетками, объект будет иметь две группы граней, которыми можно манипулировать отдельно друг от друга.
Объединение граней в группу.
- На Панели свойств включается отображение Данных объекта. Выделяется нужная группа граней.
- На Панели свойств включается отображение Материал. Выбирается слот материала, соответствующий этой группе граней. Нажимается кнопка Назначить, расположенная ниже области слотов материала.
Готовая шахматная доска.
Рендер, показанный на иллюстрации, пока основан на материалах, созданных в первом приближении, для предварительной оценки будущего изображения. Освещение еще не настраивалось вовсе.
Текстуры-развертки
В противоположность процедурным текстурам, которые по своей природе являются трехмерными математическими функциями, текстуры-изображения всегда имеют только два измерения, они плоские. Для нанесения таких текстур на поверхность трехмерного объекта в Blender используется метод UV-текстурирования (UV Mapping). Свое название метод получил по обозначению осей координат U и V. Эти оси расположены в плоскости граней, которые образуют поверхность объекта. Каждая грань имеет свои оси U и V. Идея состоит в том, чтобы разбить плоское изображение на части, соответствующие граням объекта, а затем совместить одно с другим. Иначе говоря, требуется получить плоскую развертку объекта, каким бы сложным он ни был, а после этого подогнать изображение к этой плоской фигуре. Координаты U и V нужны для того, чтобы сохранить правильную ориентацию отдельных элементов изображения относительно друг друга.
Как и процедурные, текстуры-изображения накладываются на поверхности, которым уже назначен какой-либо материал, это обязательное условие.
UV-текстурирование (UV Mapping) в Blender почти полностью автоматизировано и выполняется очень просто. Но за простыми действиями скрыты довольно сложные процессы, что иногда вызывает некоторое недопонимание. Данный прием используется часто и поэтому в технике наложения текстур-изображений стоит разобраться. В качестве примера возьмем игральную карту, которая была создана в предыдущем разделе. Процесс наложения текстуры-изображения состоит из четырех этапов.
Сначала создается изображения для текстуры. Это может быть готовая фотография или скан рисунка, возможно после некоторого редактирования. Или это может быть изображение, созданное с нуля в 2D графическом редакторе специально для наложения на поверхность модели. Лучше использовать файлы изображений в формате PNG, который позволяет сохранять прозрачность. Но допустимы и другие форматы.
Подготовленное изображение надо открыть в окне Редактора UV/изображений (UV/Image Editor), выбрав соответствующий пункт в Текущем виде редактора этой области (на иллюстрации обведен красным слева внизу). Изображение открывается с помощью пункта меню Изображение -> Открыть изображение.
Окно Редактора UV/изображений (слева).
На иллюстрации справа видно окно 3D вида с исходным объектом. Видно, что ни размеры, ни пропорции изображения и объекта не совпадают. Однако, это совершенно не является препятствием для нанесения текстуры.
Теперь требуется создать развертку объекта. Процесс похож на разворачивание разрезанной в нескольких местах, бумажной модели на плоской поверхности. UV текстурирование выполняется в окне 3D вида в Режиме правки, при включенной панели Т, которая находится в состоянии Затенение/UV (вкладка отмечена красным овалом). Объекту Карта предварительно назначен материал и ему присвоено название Карта.
В данном конкретном случае развертка будет очень простой. Фактически плоская карта и ее развертка полностью совпадают. Тем не менее, описанные ниже шаги точно так же позволяют развернуть любой, даже самый сложный объект.
Разрезы всегда проходят по ребрам, поэтому для получения развертки нужно выделить те из них, которые для этого подходят наилучшим образом. Для сложных объектов придется подумать и выбрать нужные ребра. В случае плоской игральной карты можно просто выделить все ребра кроме тех, которые расположены в закругленных углах. Выделенные ребра помечаются оранжевым цветом.
Теперь надо пометить швы, которые пройдут по выделенным ребрам — нажать кнопку Пометить шов на панели Т. При этом швы будут выделены двойной толщиной и сменят цвет на темно-оранжевый. Швы не обязательно должны быть непрерывными — надо исходить из формы модели. Если разрез представляет собой замкнутую линию, то после получения развертки появится остров. Island (острова) — это независимые части UV развертки, полученные после разрезания.
После того, как шов помечен, надо переключиться в режим выделения граней и выделить их все (клавиша А ). Это важный момент. Ведь нам нужна развертка, состоящая именно из граней. Если грани не будут выделены, то развертка не получится.
Затем нужно нажать слайдер Развертка на панели Т или клавишу U , что то же самое. Появится меню, где надо выбрать нужный метод расчета развертки. Это — самый тонкий момент.
Обычно используется метод Развернуть. Это универсальный метод, который может быть использована для мешей любой формы. Есть методы, которые предназначены для получения разверток основных примитивов — куба, цилиндра, сферы или близких к ним по форме. Для лучшего овладения техникой имеет смысл попробовать разные методы и посмотреть на результат.
После разворачивания в окне Редактора UV/изображений появится развертка, наложенная на открытое ранее изображение. Если изображение развертки увеличить, то станет видно, что оно состоит из отдельных граней, тех самых островов, пока пустых элементов будущей текстуры. В промежутках между ними изображения не будет — наложение плоского изображения на объемную модель всегда сопровождается некоторыми потерями, это естественно. Важно, чтобы эти потери были минимальны.
Развертка получена.
Как только сделана развертка, Blender автоматически создает UV-текстуру. Текстуре присваивается имя, которое совпадает с именем файла изображения. Под этим именем созданная текстура доступна для всех объектов проекта.
После того, как развертка получена, ее нужно совместить с текстурой-изображением. Для каждой грани (или группы выделенных граней) в окне Редактора UV/изображений действуют клавиши S , G , R . Другими словами, прямо в окне Редактора UV/изображений грани развертки можно масштабировать, перемещать и вращать для получения наилучшего перекрытия ими текстуры-изображения.
После получения и доводки UV-текстуры требуется выполнить операцию, обратную разворачиванию — обернуть текстуру вокруг объекта. Для этого в Редакторе узлов требуется всего лишь указать, что материал использует изображение-текстуру вместо цвета. В окне 3D вида результат будет виден сразу, если установлен режим отображения Материал или С визуализацией.
Оборачивание текстуры вокруг объекта.
После этого можно считать наложение текстуры законченным и переключиться в Режим объекта.
Если имеется несколько одинаковых по форме объектов, то не требуется делать для каждого из них свою развертку. Для того, чтобы получить новую UV-текстуру на основе уже имеющейся развертки достаточно в окне Редактора UV/изображений открыть другое изображение с помощью пункта меню Изображение -> Открыть изображение. При этом будет создана еще одна текстура, уже с новым именем. Конечно, при этом каждому объекту надо назначать свой материал со своей текстурой.
Три карты.
У карт имеется вторая сторона — рубашка. Если бы карты имели толщину, то назначить материал рубашки было бы несложно, потому, что обратная сторона была бы в этом случае такой же поверхностью, как и лицевая, но в то же время не совпадала бы с ней. Но карты, которые имеются в данном случае, не имеют толщины. Их лицевая поверхность одновременно является и обратной. В 3D моделировании такие объекты встречаются часто. Если в таком случае все же требуется присвоить сторонам разный материал, то можно воспользоваться следующим приемом.
Прежде всего нужно создать UV-текстуру для обратной стороны. Это делается точно так же, как было показано выше, на основе той же самой развертки.
После этого нужно изменить уже имеющийся материал каждой карты таким образом, чтобы он использовал две UV-текстуры. Одна из них располагается на обратной стороне плоскости с помощью узла Геометрия (Добавить -> Ввод -> Геометрия).
Двухсторонний материал.
На самом деле материал здесь конечно один. Но он имеет разный рисунок сверху и снизу. Это хорошо видно, если повращать игральную карту мышкой.