logo search
Как использовать все возможности mental ray в р

Phenomena в 3ds max виден как обычный шейдер заданного apply типа

Для настройки вновь созданного phenomena требуется всего лишь два параметра - температура и интенсивность. Как видите, уменьшение параметров, требующих определения, связано с тем, что для большей части из них значения уже назначены в "коде" phenomena.

Как и шейдеры, phenomena предназначены прежде всего для создания сложных материалов на основе более простых материальных шейдеров. Реальным примером сложных phenomena является материал sss_fast_skin, который подробно рассмотрен в обзоре "Mental ray 3.3 для 3ds max. Часть 4. Упрощенная модель подповерхностного рассеяния SSS Fast" (http://www.ixbt.com/soft/ss_fast.shtml). Или Car paint Phenomenon, который появился в standalone mental ray версии 3.4 (файл paint.mi) и представляет собой сеть из шейдеров mi_metallic_paint, mi_bump_flakes, mib_glossy_reflections, mib_color_interpolate и mib_illum_lambert.

Car paint Phenomenon

Точный синтаксис определения phenomena выглядит следующим образом.

declare phenomenon

[ тип] " phenomenon_name "

( тип " parameter_name ",

..........................

тип " parameter_name " )

[ version version ]

[ shader

" name "

[ material

" name " ...

end material

[ light

" name " ...

end light

[ instance

" name "...

end instance

[ roots ]

[ options ]

end declare

В определении phenomena могут быть использованы любые шейдера, конструкции материалов, источников света и инстансы. Блок options предназначен для указания только необходимых условий, которые обязательно должны быть выполнены, прежде чем phenomena может быть вызван. Перед рендерингом mental ray проверяет эти условия в декларациях всех шейдеров и phenomena, используемых в сцене, разрешает конфликты и настраивает глобальные опции сцены, чтобы удовлетворить этим требованиям. Полный список опций включает: scanline on|off, trace on|off, shadow off, shadow on, shadow sort, shadow segments, face front|back|both, derivative [ 1] [ 2], object space, camera space, volume level.

Оператор root имеет для phenomena совершенно особое и очень важное значение. Он выполняет две функции: во-первых он определяет результат который возвращает phenomena, во-вторых он может дополнять сцену различными элементами.

Возможные типы root:

root shader в качестве возвращаемого значения определяется значение шейдера, как мы это видели в примере с light phenomena. По принятому соглашению в качестве результата phenomena должны быть указаны именные шейдеры без параметров: root = "name_shader". Тип результата шейдера должен совпадать с декларированным типом phenomena. Этот вид phenomena является основным для практического использования и эквивалентен регулярному шейдеру.

root material " material_name " указывает, что сконструированный phenomena будет материалом, при этом тип phenomena в декларации обязательно должен быть material. В этом случае phenomena может быть использован для создания собственной конструкции материала, который затем используется как регулярный материал, а не шейдер, везде, где применение материалов допустимо.

Из этих двух видов root в определении phenomena один обязательно должен присутствовать и наличие одного исключает присутствие другого. Таким образом, для mental ray phenomena - это либо обычный шейдер, либо материал.

Остальные виды root не являются обязательными и могут указываться совместно с одним из обязательных видов для дополнительных целей, в основном для введения шейдеров, операторов и геометрии в определения камеры и сцены. Все дополнительные виды root обрабатывается на предварительной стадии, до начала рендеринга, и после создания геометрии, шейдера или оператора удаляются из phenomena.

geometry shader, позволяет phenomena вводить в сцену процедурную геометрию при помощи геометрических шейдеров. После обработки на предварительной стадии, процедурная геометрия добавляется к описанию сцены и удаляется из phenomena.

volume shader, позволяет добавить объемный шейдер (например, шейдер атмосферы) для камеры.

environment shader добавляет шейдер окружения для камеры.

lens shader добавляет линзовые шейдеры для камеры

output shader output [ " type "] " format " [ opt] " filename " позволяют добавить шейдеры и операторы выводы в определение камеры до начала рендеринга. Например, если phenomena рассчитывает и записывает пользовательские данные, этот вид root позволит создать пользовательский буфер для их вывода.

contour store shader contour contrast shader позволяют вводить шейдеры для NPR (non photorealictic rendering).

volume priority priority (целое число), lens priority priority (целое число), output priority priority (целое число) определяют приоритет размещения шейдеров указанных типов в определении камеры.

Как видим, несмотря на простоту "программирования" phenomena, с их помощью можно решать довольно широкий круг задачи и они органично дополняют концепцию шейдеров, превращая их в "строительные кирпичики" шейдерных графов.

Важность phenomena для практического использования всегда подчеркивалась разработчиками. Совсем свежие новости из этой области - mental images расширили линейку своих продуктов, добавив, в числе прочих новых приложений, mental mill специально для облегчения разработки шейдеров и шейдерных графов (phenomena). В частности, mental mill позволяет разрабатывать, тестировать и настраивать шейдеры и phenomena для аппаратного и программного рендеринга при помощи интуитивного графического интерфейса в режиме реального времени и, в силу этого, предназначен для самого широкого круга пользователей. Подробнее об этом можно узнать здесь: http://www.mentalimages.com/2_0_products/index.html.

Ну что же, пора подводить итоги.

Итак, мы познакомились с конструкцией материалов mental ray, шейдерами, входящими в ее состав, их назначением и свойствами. Узнали в подробностях о работе материального шейдера, являющегося основой материала (да и основой расчетов изображений в mental ray тоже). Рассмотрели shader assignment - назначение шейдеров в качестве параметров других шейдеров, и познакомились с phenomena и правилами их определения.

Я надеюсь, что этой информации достаточно для понимания основных принципов работы mental ray с материалами и составляющими их шейдерами. А когда основной принцип ясен, с деталями разобраться намного проще.

Приложение 1.