Создание текстиля с помощью процедурных текстур
Здравствуйте. Меня зовут Ярков Дмитрий. Я живу в городе Екатеринбурге и работаю моделлером и визулизатором на проекте DO ROOM. Я использую 3ds Max и VRay и сегодня хочу познакомить вас с созданием материала вот такой зеленой ткани:
При создании материала будем использовать только процедурные карты. В процессе урока, я хочу рассказать не только о способах построения такого материала, но и описать, как грамотный визер должен смотреть на объект и уметь вычленять закономерности из кажущегося хаоса.
Поскольку создание материала тесно связано с освещением и рендером, придется сначала построить студию либо интерьер и настроить рендер. Я не буду подробно на этом останавливаться, но про гамму обязан рассказать, поскольку результирующие цвета будут напрямую зависеть от выбранной гаммы.
Я использую гамму 2,2. В общих чертах, она позволяет легче настроить теневые участки за счет смещения градаций светлости влево по шкале "черное-белое". Чтобы ее включить, зайдите в меню Customize->Preferences, перейдите на вкладку Gamma and LUT и поставьте настройки, как здесь:
Отлично, подготовительные операции проведены. Теперь, прежде, чем открывать редактор материалов, следует внимательно рассмотреть картинку и определить, как именно материал наложен на объект. Итак, что мы видим? Основная масса ткани - темно-зеленая, даже ближе к голубой. На ней разбросаны вкрапления бледно-зеленых точек, которые и представляют наибольший интерес. Но точки разбросаны не в хаотичном порядке. Давайте попытаемся уловить закономерности в их расположении.
Во-первых, особо густые вкрапления точек идут вдоль краев объектов, особенно там, где поверхность вогнута и соприкасается с другой поверхностью (например, деревянными ножками). Точки там настолько близко расположены, что создают общую бледно-зеленую массу. По мере удаления от краев, плотность точек падает.
Во-вторых, на открытых и плоских участках поверхности точки тоже есть, но их плотность меньше и они гораздо бледнее.
Начнем создавать материал. Открываем редактор материалов и создаем материал VRayMtl. Щелкаем на слоте справа от Diffuse и добавляем в него карту VRayDirt.
Что делает эта карта - уже все, наверное, знают. Грубо говоря, она применяется для создания "грязи" в углах и по краям объекта, при этом реагирует на любые пересечения или просто близко расположенные объекты. Вот демонстрация ее использования:
Как видите, основной цвет объекта - серый, но в местах пересечения с другими объектами он меняется на красный. Во втором случае стоит галочка Invert Normals, поэтому все наоборот. Нам эта карта понадобится для уплотнения массива точек на краях объектов. Параметры поставьте, как на рисунке:
Radius - задает величину распространения "грязи" от краев объекта к его центру. 30 см не так уж много: большая часть этого расстояния скроется картой, которую мы наложим.
Subdivs - задает качество дирта. При низких значениях будет шуметь.
Задаем цвета Occluded Color и Unoccluded Color. Первый - это наши точки, он будет бледно-зелено-голубой. Второй - основная масса ткани, будет темно-зелено-голубая. Можно отрендерить.
Что мы видим? Карта VRayDirt послушно поменяла цвет объекта с краев. Но пока что все слишком ровно, и теперь мы должны наложить на нее карту, чтобы появилась желанная неоднородность.
Теперь пора снова взглянуть на фотографию. Мы видим, что существует как минимум два уровня масштаба неоднородности. Первый - это мелкие бледные точки, перемежающиеся с темной массой ткани. Второй - это более крупные темные пятна, словно бы стирающие любые точки на своем пути:
Двигаться следует от большего к меньшему. Начнем с больших темных пятен. Идем в слот Radius и кладем туда карту Mix. Это, я думаю, классическая всем известная карта, позволяющая смешивать два цвета/карты по черно-белой маске. Цвета оставляем по умолчанию (черный-белый). В качестве маски (слот Mix Amount) кладем процедурную карту Planet. Чем хороша эта карта: она содержит большое количество цветов (8), которые можно весьма разнообразно смешивать. Вообще, эта карта, исходя из названия, предназначена для имитации поверхности планет из космоса: в ней есть три цвета для воды и пять цветов для материков и островов. Минус в том, что на эти цвета нельзя положить карты. Но мы обойдемся без них. Настройки ставим как у меня здесь:
Поскольку текстура процедурная, настраивать UVWMap на объектах или делать развертку не нужно. Теперь возвращаемся к карте VRayDirt и снижаем процент влияния карты Mix до 97 (число справа от слота). Это позволит нам получить более четкую бледную полоску у границ объектов. Рендерим:
Вот, уже приятнее. Появилось хаотичное разделение на темные и белые пятна. Переходим к следующему уровню - мелким точкам, ради которых все и затеивалось. Кидаем во второй слот карту Stucco. Еще одна классическая процедурная карта, чередующая два цвета по особому алгоритму. Настройки ставим как у меня здесь:
Настроек немного, поэтому разобраться легко. В нашем случае важными являются Size (размер текстуры) и Threshold (соотношение темных и светлых пятен). Рендерим:
Какие симпатичные точечки! Но почему их нет с внешних краев объекта (например, подушек)? С этим разберемся позже. На этом заканчиваем работу со слотом Radius и возвращаемся в корень VRayDirt. Теперь попробуем несколько разнообразить эти пятна, а то они слишком уж однородные. Кидаем в слот Occluded Color карту Smoke. Суть та же, что и у Stucco, просто немножко другой алгоритм. В оба слота кидаем еще по такой же карте. Вот настройки всех трех:
Как видите, карта большего размера включает в себя две карты меньшего размера, с разным уровнем яркости. Рендерим:
В целом стало чуть темнее, но это не беда - скоро исправим. Зато появилась дифференциация яркости, которую при желании можно усилить.
Давайте добавим белых пятен с внешних границ объектов. К счастью, это несложно. Возвращаемся на самый первый уровень материала, нажимаем правой кнопкой по VRayDirt и выбираем "Copy". Теперь переходим в этот VRayDirt, щелкаем правой кнопкой по единственному оставшемуся слоту Unocludded Color и жмем "Paste (Copy)":
Настройки второго VRay Dirt оставляем такие же, только ставим дополнительную галочку Invert Normals. Это позволит добавить наших точек не только с внутренних, но и с внешних краев объекта. Рендерим:
Отлично! Количество точек возросло вдвое, а их суммарная яркость увеличилась. Теперь возвращаемся к описанию материала: "на открытых и плоских участках поверхности точки тоже есть, но их плотность меньше и они гораздо бледнее".
Ок, в нашем новом VRayDirt как раз для этого есть свободный слот Unocludded Color. Кидаем в него уже знакомую карту Mix с текстурой Planet. Параметр Continent Size меняем на 9,0 - пусть текстура будет в 4 раза больше предыдущей.
Первый цвет Mix делаем темно-зеленым, ну как основная ткань. Во второй слот кидаем Stucco, а в него - две Smoke с такими настройками:
Рендерим:
Замечательно! У ярких массивов на фоне появились зеленые разводы. В целом, диффузная текстура выглядит теперь интересной и разнообразной. Вот как выглядит ее иерархия:
Одинаковыми цветами я выделил инстансные карты - две Mix и две Smoke. На этом с диффузной текстурой закончим.
Переходим в корень нашего материала. Не забудьте сохраниться - не дай бог, вылетит. Приступим к бампу. В принципе, ничего сложного в нем нет. Просто копируем нашу карту из слота Diffuse в слот Bump (методом Copy!) и делаем все встречающиеся цвета в нем черно-белыми (просто понижаем до нуля Saturation) - для большего контроля. Самые темные цвета (основная масса ткани) я сделал полностью черными, но это необязательно.
Возвращаемся в корень материала - теперь сделаем отражение. Не следует им пренебрегать - даже самый матовый материал отражает свет. Кирпич, бумага, ткань - любая поверхность. Вопрос только в силе отражения и его размытии. В нашем случае отражение очень размытое, да так, что собственно отражения и нет - остается только блик от источников света. Для таких случаев я применяю фейк. Идем во вкладку Options и отключаем параметр Trace Reflections. Теперь можно сколько угодно повышать силу отражения - его не будет, а вот блик останется:
Копируем нашу карту - на этот раз из бампа в рефлект. И тут нужно внимательно следить за цветами. Наше отражение зеленоватое, и оно должно быть контрастным. Первым делом отключите карту Unoccluded Color у последнего VRayDirt и поставьте вместо нее черный цвет - нам не нужно бликов на фоне. Осталось поменять только карты Smoke на Occluded Color обеих VRayDirt. Если вы еще не сделали их инстансными, сделайте сейчас: скопируйте Smoke с одного VrayDirt и вставьте в другой методом Paste (Instance). Теперь измените цвета карт на следующие:
Как видите, яркие зеленые цвета чередуются с полностью черными. В итоге получится контрастное отражение. Идем в корень материала и меняем параметр Refl. glossiness на 0.64 - сильно размытый блик. Финальный рендер!
Яркость пятен, попавших в зону блика, сильно увеличилась - хороший плюс к интересности материала! Материал ножек сделан по схожему принципу, останавливаться на нем не будем.
Итоговая иерархия материала:
В итоге получился достаточно сложный материал без единой растровой текстуры. Использование процедурных карт - большой плюс. Во-первых, это полная независимость от размера текстуры: процедурные карты не имеют пикселизации. Во-вторых, это отсутствие необходимости делать развертку. В-третьих, это очень гибкая система: можно в любой момент добавить более мелкие и более крупные детали на любом уровне детализации. Кроме того, наш материал очень легкий в изменении цвета. Достаточно лишь ввести новое значение Hue (Оттенок) в каждой ячейке - и новый цвет готов. Также можно контролировать цвета каждого уровня детализации. При желании, можно сделать их еще более неоднородными.
Результирующий материал можно скачать здесь.
Всем спасибо:)