Контроль карты смещения в Maya - Displacement Mapping
В этом уроке мы рассмотрим некоторые простые узлы в Maya, редактор материалов Hypershade и в конце концов научимся как использовать узел Multiply-Divide (узел Умножения-Деления), чтобы контролировать интенсивность и глубину карты смещения (displacement map).
Этот уроке мы рассмотрим некоторые простые узлы в Maya, редактор материалов Hypershade и в конце концов научимся как использовать узел Multiply-Divide (узел Умножения-Деления) дабы контролировать интенсивность и глубину карты смещения (displacement map). Хоть в этом уроке все расписано довольно-таки детально, и описан каждый шаг, у Вас должны быть начальные навыки работы в Maya, понятие о редакторе материалов Hypershade и узлах.
Maya это узлы! Все что вы когда-либо создадите в Maya является узлом. К примеру если Вы создали сферу, Maya просто создаст узел трансформации (Transform Node) который содержит информацию об этой сфере. Узлы в Maya имеют огромное количество функций. Они часто используются в редакторе материалов для создания связи с объектами, материалами (shaders) и от них зависит как эти объекты будут выглядеть будут выглядеть.
И так приймемся за дело. Для начала откроем окно редактора материалов (Hypershade) и посмотрим что там к чему.
А вот и он - заветный Hypershade)
Давайте разбираться, в левой панели редактора материалов (Hypershade) находиться список всех узлов, которые вы можете создать посредством банального перетаскивания этих узлов в рабочую зону редактора, зажав среднюю кнопку мыши (колесико мыши). Верхняя панель редактора содержит все материалы, текстуры, узлы, источники света, камеры и т.д. существующие в сцене. Нижняя панель, это Ваша рабочая зона. Здесь вы будете «собирать» материалы и соединять узлы воплощая все свои фантазии).
Начнем с создания материала Lambert. Как уже писалось ранее, просто нажмите и держите среднюю кнопку мыши (колесико) находясь курсором над материалом Lambert, и перетащите его на рабочую область, как показано на следующей картинке. Кстати, если Вы не видите рабочую область, на следующей картинке стрелкой указано переключение видами редактора материалов (Hypershade). Просто нажмите на изображение двух черных прямоугольников разделенных полоской.
И так, мы создали материал Lambert. Он очень скучный сейчас, весь серый, и не привлекательный. Давайте-ка покрасим его в шахматную структуру. Если вы пролистаете вниз левую панель, в разделе 2D Textures Вы найдете текстуру шахмат (Checker), перетащите ее в рабочую область. Как вариант Вы можете создать ее через меню Create – 2D Textures – Checker. Теперь ваша рабочая область должна выглядеть таким образом:
Выберите checker1 и зажав среднюю кнопку мыши перетащите его поверх материала Lambert. Теперь наша рабочая зона выглядит так:
Выберите в выпадающем меню пункт color, чтобы создать связь нашего узла checker1 с материалом lambert2. Практически, это создало связь с параметром узла checker1 - checker1.outColor с параметром материала lambert2 -lambert2.color
В результате Вы увидите линию идущую от узла checker1 к материалуlambert2, это говорит о том, что они соединены. Наведя на эту линию курсор, Вы увидите какие именно параметры соединены. Теперь мы имеем замечательный материал в шахматной раскраске. Но будет гораздо лучше, если этот материал к чему-то применить. Давайте создадим плоскость NURBS (NURBS plane) и применим к ней наш материал. Выберите в меню Create – NURBS Priitives – Plane.
Оставив плоскость выделенной, откройте редактор материалов, наведите курсор поверх нашего шахматного материала, нажмите правую клавишу мыши, и не отпуская ее выберите в открывшихся меню пункт Apply Material To Selection
Если Вы не видите шахматной структуры в видовом экране, просто нажмите клавишу 6 на числовой клавиатуре чтобы перейти в режим отображения текстур. Если вы выполните визуализацию сцены то вы увидите шахматную плоскость .
Великолепно! Теперь вы знаете основы работы в редакторе материалов Hypershade и понятие узлов. А теперь пришло время узнать о всех прелестях параметра смещения (Displacement).
Карта смещения - Displacement Map
Смещение в Maya осуществляется узлом смещения который присоединяется к группе материала и смещает согласно карте текстуры точки относительно объекта. Белая часть карты смещения отодвигает точки наружу от объекта, а черная смещает точки объекта внутрь .
И так, мы имеем материал шахматки с чисто черными и белыми цветами, примененный к плоскости. Так почему бы нам не использовать карту текстуры шахматки как карту смещения? Белые участки будут смещены наружу, а черные внутрь. Вот пример того, о чем мы говорим (и что вы сами сделаете через несколько минут):
Я уверен что многие из Вас используют текстуры смещения в Maya, или какой-либо другой программе. Если Вы использовали карту смещения в Maya ранее, вы наверняка замечали, что вы не можете регулировать ее интенсивность (и соответственно длину смещения), за исключением изменения контраста текстуры которую вы используете в карте смещения. Вот мы и создадим узел Умножения-Деления чтобы контролировать интенсивность карты смещения. Сначала мы создадим материал без узла Умножения-Деления ( multiplyDivide ) чтобы продемонстрировать как он подсоединяется к связям в материале. Это даст вам более полное представление о том, как узлы в сцене работают между собой и как образуется изображение при визуализации.
Вот вид финальной структуры узлов материала:
Вы наверное заметили, что здесь присутствуют 3 узла которые мы еще не создали. Крайний справа цветной узел, это группа материала ( Shading group ( SG ) ). Это, как говорит нам помощь Maya ( Maya help ), “это совокупность материалов, текстур и источников света которые рационально описывают необходимые атрибуты необходимые для затенения, отражения и освещения для финальной визуализации объекта в изображение”. Геометрические объекты без группы материала это просто каркас. Вы уже имеете этот узел в структуре материала. Чтобы увидеть его, выделите узел checker 1 и нажмите меню Graph – Input and Output Connections . Как вариант, Вы можете нажать правую клавишу мыши над узлом checker1 и выбрать Graph Network в появившемся меню.
Остальные два узла, это узел Умножения-Деления ( multiply - divide ), который выглядит как математические знаки умножения и деления, и материал смещения ( displacementShader 1), который выглядит как плоскость со смещением вида которого мы пытаемся достичь операцией смещения!
Вы наверняка заметили, что узел смещения присоединен к группе материала (Shading Group). Это потому, что смещение по сути тоже материал. Группа материала по особенному соединена с узлом смещения (displacement node ). Вы можете увидеть это выделив группу материала и посмотрев ее редактор атрибутов ( attribute editor ) нажав ( Ctrl + a ). Создадим узел смещения и подсоединим его к связям материала ( shader network ). В окне редактора материалов Hypershade , пролистайте левую панель пока не увидите подменю Displacement. Раскройте его и увидите узел смещения.
Перетащите его средней кнопкой мыши в рабочую зону. Наш входящий параметр смещения это выходящий параметр насыщенности цвета outAlpha checker 1. Давайте откроем Редактор связей (Connection Editor) чтобы соединить карту текстуры шахматки с узлом смещения. Вот и редактор связей:
Узел checker 1 надо поместить в левую сторону т.к. он должен передавать значение outAlpha. Узел displacementShader 1 надо поместить на правую сторону, т.к. он должен параметр outAlpha принимать. Выделите узел checker 1 и нажмите клавишу Reload Left . Следом выделим узел displacementShader1 и нажмем Reload Right.
Теперь самая простая часть. Нажмите сначала на параметре Out Alpha на левой панели, а потом на правой на параметр Displacement. Если Вы вернетесь в окно Редактора материалов Hypershade Вы увидите, что теперь узлы текстуры шахматки (checker 1) и узел смещения (displacementShader 1) связаны между собой, но узел смещения не связан с группой материала. Чтобы связать их, выделите узел displacementShader1 и нажмите Reload Left. Теперь выделите группу материала lambert 2 SG (shading group) и нажмите Reload Right. Когда обе стороны обновлены нажмите сначала на параметр Displacement на левой панели, а потом нажмите на правой Displacement Shader. Фактически эти действия соединяют параметр displacementShader 1. displacement с параметром lambert 2 SG . displacementShader.
Теперь если Вы выполните визуализацию, Вы получите изображение которого мы и ожидали.
Вот мы и добились смещения вглубь и наружу! Но что делать, если мы захотим чтобы белый цвет поднимал точки выше? Сейчас параметр регулирующий интенсивность смещения outAlpha текстуры шахматки checker 1 попадает сразу же в узел смещения (displacement shader), но мы можем перехватить это значение и обработать по своему желанию. Для этого мы и хотели создать узел Умножения-Деления (multiplyDivide). Этот узел получает входящий результат, умножает, усиливает или делит его на то значение которое вы зададите, и выдает выходящий результат дальше.
Фактически это выглядит так:
checker1.outAlpha à multiplyDivide.input1X
multiplyDivide.ouputX à displacementShader1.displacement.
И так, давайте же создадим этот узел .
В окне Редактора материалов Hypershade выбираем Create – General Utilites – Multiply Divide.
Возвращаемся в Редактор связей (Connection Editor), выбираем узел checker 1 и нажимаем Reload Left, потом выбираем узел multiplyDivide 1 и жмем Reload Right. Соединяем “Out Alpha” с “Input1 X” поочередно нажав на них.
Затем выбираем узел multiplyDivide 1 и жмем Reload Left, следом выбираем узел displacementShader 1 и жмем Reload Right. Когда обновлены обе части окна соединяем показатель "Output X" с ”Displacement”.
Если вы выполните визуализацию сейчас, Вы не увидите никаких изменений. Так как нам надо изменить значение outAlpha умножив его до того как оно попадет в узел смещения. И так выберите узел multiplyDivide 1 и откройте его Редактор атрибутов (Attribute Edito r). Заметьте что первое поле ввода значения Input1 окрашено в желтый цвет. Это значит что это входящее значение другого узла . Чтобы умножить это значение нужно ввести в первое поле ввода значения Input2 значение увеличения . Следственно если мы введем значение 10, то длинна смещения увеличиться в 10 раз, а если мы введем 0,5 то уменьшиться в 2 раза. Попробуйте и выполните визуализацию.
Неплохо правда? Попробуйте сделать то же самое используя свои текстуры. Вот быстрый пример использования текстуры созданной в Photoshop. Чистое смещение, без моделирования:
Источник: jeremiahgrant.com
Перевод: 3dcenter.ru
{fcomment}