image

Новости
Уроки и статьи
Загрузка
Обо мне
Ссылки

Введение

После выхода Mental Ray for Maya v1.0, я не предал ему особого значения. Тогда он меня разочаровал своими маленькими возможностями (как я тогда думал) и медлительностью (тоже оказалось не совсем верно). Тогда это было еще, что-то кривое и не совсем корректно работающее, но зато уже был Global Illumination и Caustica. Когда же вышла версия 1.5, я заметил некоторую тенденцию по внедрению Ментала. И в скоре мои лучшие предположения оправдались, Maya 5.0 имела встроенный Mental Ray! Мне стало интересно, почему выбор AW пал именно на Mental Ray.

Поиск информации показал, что возможности Ментала далеко за пределами того, что он может в Maya. Как говорится в хелпе Ментал, он может воспроизводить практически все физические и оптические эффекты, существующие в рендериге и, причем физически достаточно корректно. На проверку Mental Ray оказался серьезной функционально расширяемой системой с широкими возможностями.

Большая функциональность Ментала достигается за счет Custom Shaders, о чем и пойдет речь далее.

Подключение Custom shaders

Надо сказать, что AW сделали все, чтобы пользователи не смогли воспользоваться Custom shader’ами.
Этот случай еще раз напомнил мне старую добрую традицию AW, заложить в программу богатые возможности, но скрыть от пользователей возможности управления некоторыми из них. С надеждой что, мол, умный сам разберется, а другим и не надо.

По умолчанию Custom Shader’ы скрыты в Maya и поэтому первое, что предстоит сделать это включить их.

Делаем все как описано в хелпе.

Добавляем в Windows environment variables переменную MAYA_MRFM_SHOW_CUSTOM_SHADERS и устанавливаем ее в значение 1

image

Далее в Hypershade должна была появиться вкладка Create mental ray Nodes.

image

Если у вас уже на этой стадии возникли проблемы, то боюсь что эта статья не для вас.


Далее мы имеем в распоряжении набор шейдеров, но, как и следовало ожидать, подключение их не так просто.
Custom Shader’а поключаются к различным Майским объектам, таким как Shading Group, light sources, transform nodes, cameras, и global nodes.

Следующие типы mental ray shaders могут быть присоединены к Shading Group:

Materials
Shadow shaders
Volume shaders
Photon shaders
Photon Volumetric shaders
Displacement shaders
Environment shaders
Light Map shaders
Contour shaders (from the Miscellaneous section)

Любой подключенный менталовский шейдер сразу блокирует соответствующие атрибуты Майских шейдеров.

Создаем любой материал с Shading Group и присваиваем его объекту. Далее в Shading Group открываем вкладку mental ray и на поле Material Shader вешаем любой менталовский шейдер из вкладки Materials, например dgs_material.

image

И вот казалось мы так близки у цели, но… при рендере все менталовские шейдеры почему то получаются черного цвета не зависимо от установленного цвета. Единственно что можно добиться это отражение в них майских шейдеров. Хм…

Немного поразмыслив, приходим к выводу, что диффузной составляющей не хватает освещения. Менталовские шейдеры почему то не видят источники света. Причем даже если на Майский источник повесить менталовский шейдер света, то все равно результат будет тем же.

В некоторых шейдерах можно найти такой атрибут как mode. Ставим его в 2 (все остальные значения результата не дают) и… свершилось! Наконец то наши шейдера рендерятся нормально. Что же это за параметр и на что он влияет? Лезем в хелп…

Значение mode:
0 – использовать все источники света из light list.
1 - использовать источники света из global light list, которые соответствуют источникам света в light list.
2 - использовать источники света из global light list, которые не соответствуют источникам света в light list.
3 – игнорировать light list.

Делаем вывод – у каждого шейдера есть параметр light list, в котором содержатся все источники света, которые на него влияют, но он, почему-то по умолчанию пуст (все значения в менталовских шейдерах по умолчанию обнулены, и все цвета установлены в черный) поэтому ни один из источников света не освещал шейдер.
Так же еще есть, какой то global light list, в котором, по всей видимости, хранятся все источники света и которыми мы воспользовались, установив mode в значение 2.

Но как же быть с шейдерами у которых нет параметра mode? Как внести источники света в этот light list?
Читаем хелп дальше…
В описании каждого шейдера находим такой параметр как lights, который, судя по всему, и является списком, где хранятся используемые источники света. Причем в атрибутах шейдера его нет, однако в Connection Editor он присутствует.

image

Попробуем присоединить источник света к шейдеру.
После нескольких попыток и вариаций у меня ничего не получилось.
В очередной раз, читая хелп, я наткнулся на описание параметра lights, где говорилось, что он является массивом типа Message.
Message – Майский стандартный универсальный выходной поток с нода. По умолчанию параметр Message не виден в Connection Editor’е, и что бы его включить жмем Left Display->Show Hidden

image

Далее еще раз пробуем присоединить источник света к шейдеру.
Соединяем Message источника света и lights менталовского шейдера.

image

Первый элемент массива lights[0] теперь присоединен к Message одного из источников света.
Теперь все рендерится нормально.

Но, а как быть если в сцене несколько источников света?
Заглянем в Script Editor и видим последнюю команду.

connectAttr -f pointLightShape1.message mib_illum_blinn1.lights[0];

image

Модифицируем ее немного и запускаем.

connectAttr -f pointLightShape2.message mib_illum_blinn1.lights[1];

image

Теперь в Connection Editor’е появилась новая строка lights[1], которая связана с Message pointLight2.
При рендере используются два источника света.

image

Теперь к менталовским шейдерам можно присоединять и отсоединять источники света по своему усмотрению.

Процедура присоединения Message источника света к Lights шейдера в Ментале оказалась стандартной процедурой к которой придется привыкнуть если вы хотите пользоваться Custom Shader’ами.

Свои вопросы, предложения и пожелания прошу на puppet@rambler.ru
Удачи!
Ваш Puppet.