Primの有無で処理を分岐する
表題の通り、SOLARIS で特定の Prim がある場合、処理を分岐したりさせたい場合
若干悩んだのでメモがてら書いていきます。
やりたいことは、例えば /Root のような特定の決められた Prim があるときだけ
処理をしたい..のように、Prim の有無で Switch を切り替えたいというもの。
ただ、PythonExpression 内で現在のノードの Stage をうまく拾えなかったので
別の方法を試してみます。
サンプルでは、CheckPrim がある場合は何もしない(Switch index = 0 )
Prim がない場合は PrimA を作ります ( Switch index = 1 )
まず、PythonScript ノードで、その時点でのノードの有無をチェックします。
チェックしたパラメータを、Switch ノードでどう使うかというと、
こちらの記事の Store Parameter Values を使用します。
このノードは、USD のレイヤーには値を書きたくないけれども、Houdini 内だけで
なにかしらのパラメーターを保持したい場合などに
HoudiniLayerInfo Prim に、パラメーターをセットする機能です。
今回のように、条件などを一時的に保存したい...等にちょうど良い機能です。
import loputils
node = hou.pwd()
stage = node.editableStage()
prim = stage.GetPrimAtPath('/Check')
check = 0
if prim.IsValid():
check = 1
loputils.storeParameterValues(node,'__check',check,propertytype='int')