可通过在 .mi 声明文件中包含关键字来为节点上的每个属性及节点本身提供其他参数。
这些关键字必须以 #: 为前缀,以便声明文件仍为标准 mental ray 解析器所接受;由于这些标准 mental ray 解析器(而不是节点工厂解析器)会将这些关键字认作注释,因此会将其忽略。错误位置的特殊注释或语法错误的 #: 注释会导致解析错误,这些错误会写入“脚本编辑器”(Script Editor)。
此类 #: 注释可在两个位置显示:着色器参数或现象参数之后,或声明的要求部分中。
default scalar [scalar [scalar]] max scalar [scalar [scalar]] min scalar [scalar [scalar]] shortname "string" softmax scalar softmin scalar hidden boolean
如果未提供这些附加的关键字,则默认值为 0;未定义最小值/最大值和软最小值/软最大值;通过计算节点上的属性来唯一指定短名称。同样,唯一的节点 ID 也通过计算节点来确定。
对于属性,不是每个关键字对于每种属性类型都具有意义。Maya 和节点工厂支持以下属性:
可为每个属性提供短名称。工厂将 R、G、B 附加到颜色子名称/短名称,并将 X、Y、Z 附加到向量子名称/短名称。
declare shader vector #: shortname "ov" "multiplyDivide" ( integer "operation", #: default 1 min 0 max 2 vector "input1", #: default 1. 1. 1. vector "input2" #: default 1. 1. 1. ) #: #: nodeid 6894 # This is the node ID for binary Maya files. #: version 1 end declare
declare shader struct { color "outColor", #: shortname "oc" scalar "outAlpha" #: shortname "oa" } "ramp" ( array struct "colorEntryList" { scalar "position", #: default 1. color "color" #: default 0.8 0.8 0.8 }, #: shortname "cel" # compound's short name scalar "uWave", #: shortname "uw" #: default 0.5 #: softmin 1E-5 softmax 1 #: min 1.0E-05 max 1 scalar "vWave", scalar "noise", scalar "noiseFreq", scalar "hueNoise", scalar "satNoise", scalar "valNoise", scalar "hueNoiseFreq", scalar "satNoiseFreq", scalar "valNoiseFreq", # Inherited from Texture2d vector "uvCoord", #: shortname "uv" vector "uvFilterSize", scalar "filter", scalar "filterOffset", boolean "invert", #: default 0 boolean "alphaIsLuminance", #: default 1 color "colorGain", #: default 1.0 0.8 0.8 #: min 0.1 0.1 0.1 max 0.5 0.5 0.5 color "colorOffset", scalar "alphaGain", #: shortname "ag" scalar "alphaOffset", #: shortname "ao" color "defaultColor" ) #: #: nodeid 6895 # Node ID for binary Maya files #: apply texture version 2 end declare
有关工厂解析器不接受但 mental ray 的解析器接受的语法的详细信息:
declare shader vector "reverse" ( vector "input", ) end declare
工厂从 mental ray 着色器声明中创建 Maya 节点。创建后,每个此类节点均代表一个自定义 mental ray 着色器(准确地说是着色器定义)。此类节点可以方便地与各种 Maya 场景实体一起使用。