Как создать двусторонний шейдер

Maya Complete
- Rendering

Урок посвящён созданию двусторонней шейдерной группы, в которой на две разные стороны предмета назначены два разных узла материала.

Play Movie

Play Movie [~150kb]

Шаг Первый

Выполните Create > NURBS Primitives > Sphere.

Нажмите клавишу 3 на клавиатуре для смягчения сферы.

Щёлкните на сфере правой кнопкой мыши и выберите из выпавшего меню Isoparm. Отметьте изопарму, ближайшую к вершине сферы. Она окрасится желтым.

Шаг Второй

Выполните Edit Surfaces > Detach Surfaces. Эта команда разделит сферу вдоль выделенной изопармы

Выберите верхнюю часть и удалите. Теперь вы можете одновременно видеть наружнюю и внутреннюю поверхности сферы. Очень удобно использовать эту поверхность для тестирования вашей двусторонней шейдерной группы.

Шаг Третий

Откройте Hypershade. Выполните Create > Create New Node... В таблице Materials выберите материал Blinn. Убедитесь, что опция With shading group включена.

Используя Attribute Editor, измените цвет материала Blinn на красный и назначьте на сферу. Цвета помогут вам далее различать поверхности сферы.

Шаг Четвёртый

В Hypershade выполните Create > Create New Node... и выберите:

в Materials:

 материал Phong с выключенной опцией With Shading Group.

в Utilities:

 Condition
 Sampler Info

Phong будет использоваться для второй поверхности, в то время как утилиты узлов будут строить двустороннюю природу шейдерной группы.

Шаг Пятый

Средней кнопкой мыши перетащите узел samplerInfo на узел condition. Откроется Connection Editor.

Свяжите аттрибут flipped Normal узла samplerInfo с аттрибутом First Term узла condition.

Увеличить
Увеличить изображение

Это назначит нормаль поверхности как управляющую состоянием. Когда рендерер видит точку на внутренней поверхности, узел samplerInfo сообщает ему, что это flipped Normal, и узел condition изменяет материал.

Шаг Шестой

Средней кнопкой мыши перетащите узел blinn на узел condition.

Свяжите аттрибут Out Color узла blinn с аттрибутом Color1 узла condition.

Это назначит материал blinn на первую сторону шейдерной группы.

Увеличить
Увеличить изображение


Шаг Седьмой

Средней кнопкой мыши перетащите узел phong на узел condition.

Свяжите аттрибут Out Color узла phong с аттрибутом Color2 condition.

Это назначит материал phong на вторую сторону шейдерной группы.

Оставьте Connection Editor открытым для следующего шага.

Увеличить
Увеличить изображение

Шаг Восьмой

Щёлкните по кнопке Clear All в Connection Editor.

Отметьте узел Blinn и щёлкните по Show Up and DownStream потокам, чтобы видеть blinn1SG.

Удалите связь между узлом Blinn1 и узлом BlinnSG в Hypershade.

Используя среднюю кнопку мыши, перетащите узел condition на секцию Outputs в Connection Editor.

Используя среднюю кнопку мыши, перетащите узел blinn1SG на секцию Inputs в Connection Editor. Свяжите аттрибут Out Color узла condition с аттрибутом Surface Shader узла blinnSG.

Это позволит подлежащей сети подключиться непосредственно к узлу шейдерной группы. Шейдер готов к рендерингу.

Увеличить
Увеличить изображение

Примечание: если у вас включено hardware texturing, вы не увидите шейдерную группу в правильном отображении. Вам будет необходимо отрендерить её для наблюдения результата.

Шаг девятый

Теперь вы можете добавить свет к вашей сцене, настроить Render Globals и отрендерить сцену для финала.

Примечание: если вы хотите поменять поверхности местами, откройте узел condition в Attribute editor измените опцию Operation с Equal на Not Equal.


Шаг десятый

Посколько вы имеете два узла материалов для поверхностей, вы можете применять различные texture maps для разных материалов.

По-настоящему, вы должны применить color map, specular map и bump map к узлу материала Blinn для имитации дерева и затем применить другие карты к материалу Phong для создания эффекта натурального камня.

Заключение

Создание двусторонних шейдеров, назначающих разные материалы на стороны объектов, является весьма выгодным способом работы с некоторыми поверхностями. Одежда - хороший пример тому, как можно применить грубую шерсть снаружи и блестящий шёлк внутри.

Вы можете применять шейдер из этого урока для ваших объектов. Вы можете даже использовать этот шейдер как шаблон для собственных экпериментов по вашему усмотрению.


Примечание: существует одно ограничение - внутренняя поверхность не будет отражать и преломлять лучи при отражении. Изображение справа иллюстрирует это. Вы видите, что гранит внутренней поверхности не отражается в зеркале.

Шейдер урока: double.ma[~4kb]

Автор: R. Magee
Перевод: iLUNGA


148 0 850 3
0
RENDER.RU