mental ray シェーダ言語拡張
 
 
 

名前付けのガイドライン

Maya 独自の構文拡張機能

ノードの各アトリビュート、そしてノード自身に、パラメータを追加することができます。mental ray のシーン記述言語にはこういったパラメータに相当する機能がないので、アトリビュートやシェーダ、フェノメナごとに与えられる特定のキーワードを認識するため、ファクトリ パーサは標準の mental ray 構文を超えた解析ができるように拡張されました。

キーワード付きでアトリビュートを追加する

.mi 宣言ファイルにキーワードを入れると、ノードの各アトリビュート、またはノード自体にパラメータを追加できます。

標準的な mental ray パーサが宣言ファイルを受け入れられるよう、キーワードには接頭辞 #: が付いている必要があります。標準的な mental ray パーサはキーワードをコメントとして認識し、無視します(ノード ファクトリ パーサは無視しません)。間違った位置にある特殊なコメントや、構文的に誤りのある #: コメントは、構文解析エラーの原因になり、エラーはスクリプト エディタ(Script Editor)に書き出されます。

キーワードを挿入する場所と、書く内容

#: 付きのコメントは、シェーダ パラメータまたはフェノメナ パラメータの後ろか、宣言の要件セクションの中の 2 箇所に表示できます。

キーワードが追加されない場合のデフォルトは 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 パーサの構文の対応

ファクトリ パーサは受け付けないが、mental ray のパーサは受け付ける事項を以下に示します。

 declare shader
 			vector
 			"reverse" (
			vector "input",
			)
 end declare

ファクトリ パーサはカンマでの構文エラーを通知します。

フック

ファクトリは mental ray シェーダ宣言を元に Maya ノードを作成します。いったん作成されると、これらの各ノードはカスタム mental ray シェーダ(正確にはシェーダの定義)を表すことになります。各ノードは以下の各種 Maya シーン構成要素で使用するのに便利です。

メッセージ アトリビュート

ノード ファクトリはライト、ジオメトリ、カラー テクスチャ、スカラー テクスチャ、ベクトル テクスチャ、ライト プロファイル、シェーダといった mental ray シェーダ パラメータをメッセージ アトリビュートとして登録しています。

ノードはすべて上記アトリビュートにコネクトできます(ノードをアトリビュート エディタの message attr にドラッグすると、ソース ノードのメッセージ アトリビュートがアトリビュートにコネクトされる。たとえば、node1.message -> mrShaderNode.shader)。ただし、正しくコネクトする必要があります。コネクトが不正だと、Maya のクラッシュやレンダリングの停止が起こる可能性もあります。

それぞれの mental ray シェーダ パラメータのタイプには以下をコネクトすることになっています。