PxrSeExpr

PxrSeExpr

images/seExpr.png

ペイントテクスチャやビルトインノードに頼るよりも、プロシージャルマテリアルやパターンを試行できる方がアーティストにとっては便利な場合があるため、PRManにはこのSeExprノードが含まれています。 このノードは、Disney AnimationsのオープンソースであるSeExprシステムをベースにしたスクリプト可能なパターンジェネレータおよびコンバイナです。 ファクトリプラグインの中では、このノードの"ダイナミックバインディング"機能は独特です。 パターンネットワークのオーサーは、アップストリームノードを任意の(名前を付けた)接続ポイントに接続することができ、SeExprスクリプトでこれらのノードを参照することができます。

尚、RixShadingContextのデータはスクリプトで直接利用可能です。 現在のところ、このデータに含まれているのは、P, Vn, VLen, Nn, Ngn, Tn, s, tで、 これらの名前のどれかを入力に指定すると、その入力が無視され、RixShadingContextデータが優先されます。

入力パラメータ

Expression(エクスプレッション)

パターンの生成に使用するSeExprスクリプト。 追加の入力接続は、SeExprエクスプレッション変数に、"あとでバインド"されます。

RIB: string expression
デフォルト: ""

出力パラメータ

resultRGB

エクスプレッションスクリプトの結果がベクトルの場合の3チャンネル出力。

resultR

resultRGB出力からの1番目のチャンネル。

resultG

resultRGB出力からの2番目のチャンネル。

resultB

resultRGB出力からの3番目のチャンネル。

resultF

エクスプレッションスクリプトの結果がスカラーの場合、この出力パラメータにその結果が返されます。

サンプル

2つのカラーテクスチャを混合するSeExprスクリプトは、以下のとおり:

Pattern "PxrTexture" "tex1" "string filename" ["checker.tx"]
Pattern "PxrTexture" "tex2" "string filename" ["ratGrid.tex"]
Pattern "PxrSeExpr" "mixer"
        "float mix" [0.5]
        "reference color c1" ["tex1:result"]
        "reference color c2" ["tex2:result"]
        "string expression"
["\
$c = $c1*$mix + $c2*(1-$mix); \
$c\
"]
                      

PxrSeExprノードには1つだけ正式な入力があります。エクスプレッションのテキスト文字列です。 他のすべての入力はダイナミックです。つまり、レンダラーは、これらの入力はスクリプトで変数として使用されるものと想定します。 上記の"mix"のような参照のないパラメータは、RIバインディングで与えられた値になります(ここでは.5)。 参照パラメータは、パターングラフの評価を引き起こします(ここでは、2つの上流テクスチャノードの実行を引き起こします)。

また、SeExprを使用して、フレックのように法線を錯乱させることもできます。 この錯乱を、LMMetalBump Normalパラメータに接続すると、 メタリックフレックペイントを簡単に作成できるようになります。

res = cvoronoi(P*floatInput1) * 2 - 1;
res *= floatInput2;
res += Nn;
res = norm(res);
res
                      

デバッグ

エクスプレッションをデバッグするなら、printfを使用して値をstdoutにプリントすることができます。

res = cellnoise(P);
msg = printf("My result = %f %f %f",res[0],res[1],res[2]);
res
                      

関連項目