.mi 宣言ファイルにキーワードを入れると、ノードの各アトリビュート、またはノード自体にパラメータを追加できます。
標準的な mental ray パーサが宣言ファイルを受け入れられるよう、キーワードには接頭辞 #: が付いている必要があります。標準的な mental ray パーサはキーワードをコメントとして認識し、無視します(ノード ファクトリ パーサは無視しません)。間違った位置にある特殊なコメントや、構文的に誤りのある #: コメントは、構文解析エラーの原因になり、エラーはスクリプト エディタ(Script Editor)に書き出されます。
#: 付きのコメントは、シェーダ パラメータまたはフェノメナ パラメータの後ろか、宣言の要件セクションの中の 2 箇所に表示できます。
default scalar [scalar [scalar]] max scalar [scalar [scalar]] min scalar [scalar [scalar]] shortname "string" softmax scalar softmin scalar hidden boolean
キーワードが追加されない場合の既定値は 0、min/max および softmin/softmax は未定義、そしてショート ネームはノード上のアトリビュート数をカウントして一意に割り当てられます。同様に、固有のノード ID はノード数をカウントすることで定義されます。
アトリビュートに関しては、すべてのキーワードがすべてのアトリビュート タイプに意味を成すわけではありません。Maya および Node Factory でサポートする各データ型を以下に示します。
すべてのアトリビュートにショート ネームを付与できます。ファクトリはカラーの子ネーム/ショート ネームに 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 シーン構成要素で使用するのに便利です。
ノード ファクトリはライト、ジオメトリ、カラー テクスチャ、スカラー テクスチャ、ベクトル テクスチャ、ライト プロファイル、シェーダといった mental ray シェーダ パラメータをメッセージ アトリビュートとして登録しています。
ノードはすべて上記アトリビュートに接続できます(ノードをアトリビュート エディタ(Attribute editor)の message attr にドラッグすると、ソース ノードのメッセージ アトリビュートがアトリビュートに接続される。たとえば、node1.message -> mrShaderNode.shader)。ただし、正しく接続する必要があります。接続が不正だと、Maya のクラッシュやレンダリングの停止が起こる可能性もあります。
カスタムのマテリアルはシェーディング グループ ノードで指定できます。アトリビュート エディタ(Attribute Editor)で、このシェーダと併せて作成されたシェーディング エンジンの mental ray セクションに移動します。すべての Maya シェーダの無視(Suppress all Maya shaders)をオンに設定し、対応するアトリビュートに目的のカスタム シェーダを接続します。この時点で、シェーディング エンジンは mental ray マテリアルとして書き出しされる準備が整っています。このシェーディング エンジンを通常の方法で Maya オブジェクトに割り当てることも可能です。