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

Назначение mib_cie_d в качестве параметра цвета светового шейдера точечного источника в 3ds max

Phenomena

Возможность назначения шейдеров в качестве параметров лежит в основе phenomena. Phenomenа расширяют концепцию шейдеров, позволяя строить из простых шейдеров более сложные, соединяя их в разветвленные цепочки (shader graph) посредством параметров. Для mental ray phenomena не отличается от обычных шейдеров - как и шейдеры, phenomena так же должны быть декларированы и имеют параметры, значения которых должны быть определены перед использованием. Как и шейдеры, phenomena должны иметь свой mi-файлы, которые хранят их "код". Но в отличие от шейдеров, phenomena не являются настоящими программами, поэтому для них не нужен dll (dso) -файл с программным кодом, реализующим их функции. По сути, phenomena просто описывают какие шейдеры, в какой последовательности и для каких параметров используются.

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

Назначение mib_cie_d в качестве параметра светового шейдера, в примере который мы рассмотрели чуть выше, может быть оформлено как phenomena.

declare phenomenon

color

"light_color_phen"

(scalar

"temp",

scalar

"inten")

apply light

version 1

#"код" phenomena#

shader

"color_light"

"mib_cie_d" (

"temperature"

= interface "temp" ,

"intensity"

= interface "inten")

shader

"my_light" "

mib_light_point" (

"color"

= "color_light",

"shadow"

on,

"factor"

"factor"

0,

"atten"

off,

"start"

0,

"stop"

40)

root

= "my_light"

end declare

Параметры phenomena "temp" и "inten" являются интерфейсными параметрами, то есть предназначены для передачи значений извне для параметров шейдера mib_cie_d: "temperature" = interface "temp" и "intensity" = interface "inten". Затем, шейдер mib_cie_d назначается в качестве параметра другого шейдера - mib_light_point, его значение определит цвет источника света (параметр "color"). Наконец, оператор root определяет значение, которое будет возвращать phenomena. В данном случае это значение шейдера my_light типа mib_light_point. Обратите внимание, что тип возвращаемого шейдером my_light результата и объявленный тип результата в декларации phenomena идентичны - color. Такая идентичность типов - обязательное условие.

Если написанный выше "код" сохранить в файл с расширением .mi, например "my_phen.mi", и подключить его при помощи директивы mi "путь_к_файлу\my_phen.mi" в rayrc или в standard.mi, то phenomena "light_color_phen" может быть использован в сцене как обычный световой шейдер:

$include

"my_phen.mi"

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

shader

"my_light_color"

"light_color_phen"

("temp"

; = 2500,

"inten"

= 1

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

Более того, phenomena "light_color_phen" будет виден в 3ds max как обычный световой шейдер с двумя настроечными параметрами - температурой и интенсивностью.