ノードの各アトリビュート、そしてノード自身に、パラメータを追加することができます。mental ray のシーン記述言語にはこういったパラメータに相当する機能がないので、アトリビュートやシェーダ、フェノメナごとに与えられる特定のキーワードを認識するため、ファクトリ パーサは標準の mental ray 構文を超えた解析ができるように拡張されました。
.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
nodeid integer
キーワードが追加されない場合の既定値は 0、min/max および softmin/softmax は未定義、そしてショート ネームはノード上のアトリビュート数をカウントして一意に割り当てられます。同様に、固有のノード ID はノード数をカウントすることで定義されます。
アトリビュートに関しては、すべてのキーワードがすべてのアトリビュート タイプに意味を成すわけではありません。Maya および Node Factory でサポートする各データ型を以下に示します。
mental ray の型 | Maya の型 | 既定の型 | min/max | ソフトウェアの min/max |
---|---|---|---|---|
boolean |
boolean |
0/1 |
||
color |
float3 |
3 scalars |
||
integer |
long |
1 int |
1 int |
1 int |
Scalar |
float |
1 scalar |
1 scalar |
1 scalar |
vector |
float3 |
3 scalars |
3 scalars |
すべてのアトリビュートにショート ネームを付与できます。ファクトリはカラーの子ネーム/ショート ネームに R、G、B を追加し、ベクトルの子ネーム/ショート ネームに X、Y、Z を追加します。
例 1 (2 つのうち)
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
例 2 (2 つのうち)
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 のクラッシュやレンダリングの停止が起こる可能性もあります。
それぞれの mental ray シェーダ パラメータのタイプには以下を接続することになっています。
カスタムのマテリアルはシェーディング グループ ノードで指定できます。アトリビュート エディタ(Attribute Editor)で、このシェーダと併せて作成されたシェーディング エンジンの mental ray セクションに移動します。すべての Maya シェーダの無視(Suppress all Maya shaders)をオンに設定し、対応するアトリビュートに目的のカスタム シェーダを接続します。この時点で、シェーディング エンジンは mental ray マテリアルとして書き出しされる準備が整っています。このシェーディング エンジンを通常の方法で Maya オブジェクトに割り当てることも可能です。
あらゆる Maya ポイント、スポット、ディレクショナル ライトの mental ray セクションでカスタム ライト シェーダを指定できます。すべての Maya シェーダの無視(Suppress all Maya shaders)をオンに設定し、ライト シェーダを接続します。書き出しでは、ライトのその他の特性(方向、スポット円錐角度など)は保持されますが、このライト シェーダが既定の Maya シェーダにオーバーライドします。
独自に作成した出力シェーダ、ボリューム シェーダ、レンズ シェーダ、環境シェーダを、アトリビュート エディタ(Attribute Editor)のあらゆるカメラ シェイプ ノードの mental ray セクションで提供します。現状では、複数の出力シェーダを指定することはできません。
カスタム ジオメトリ シェーダを備えたトランスフォーム ノードにアタッチされているシェイプ ノードをオーバーライドさせることが可能です。Maya のトランスフォーム ノードの mental ray セクションにあるジオメトリ シェーダの有効化(Enable geometry shader)をオンに設定するだけです。トランスフォーム ノードには単一シェイプの子があるのが理想的です。
mental ray テクスチャ(Texture)ノードを使用します。mental ray テクスチャはシェーダ のアトリビュート エディタ(Attribute Editor)で「カラー テクスチャ、スカラー テクスチャ、ベクトル テクスチャ」パラメータを使って作成し、シェーダに接続されます。