Houdini 15 から新しいループブロックノードタイプがVOPs内に追加された。これにより、従来は Subnet を使って行っていたループ処理がSubnetノードなしに組み込めるようになった。Subnetを使った方法はループのルーチンをカプセル化できたため視認し易かったが、Subnet 内外への行き来と結線が非常に面倒であった。
ここでは新しいBlockノードのうち、If文の作成方法を紹介。
あわせて、細かい新機能のうち、- Shift + Enter によるノード作成
- x キーによる VOP ノードでの Visualizeノードの作成
使用したバージョン: 15.0.179.22 (H15 Beta)
シーンファイルへのリンクは一番下にあり。
1. 元のシーン作成
Grid (ポリゴン平面)を作成しノイズを一部のみに与える。
- Grid 作成
- Size 10x10
- Rows と Columns をそれぞれ 100x100
- Attribute Vop を作成
- Anti-Aliased noise 作成
- aanoise1 の Signature を "1D Input, 1D Noise" から "3D Input, 3D Noise" に変更。
- Length ノード作成
- Compare ノードを作成
- Two Way Switch を作成
- TAB -> Two Way Switch で twoway1 ノードを作成。
- compare1 の出力を twoway1 の Condition に
- aanoise1 の出力を input1 に
- Globals のCd を input2 に
- Visualize をはずし、twoway1 の出力を geometryvopoutput の Cd に接続
上記赤線の部分を RMB クリックし、VEX/VOP Options->View VEX Code... を実行。表示されるコードの下の方を見ると、ノイズ (vop_fbmNoiseFV) が全体にかかっていることがわかる。
そこで if を使って領域を限定する必要がある。
2. H14 までの方法
Houdini 14 までは、if ノードを作成、その中に if が True の時に実行するノードを配置する必要があった。この (旧) if ノードは H15 では TAB メニューに表示されないので、テキストポート経由で作成する必要がある。
- Textport を表示。以下のコマンドを入力。
cd /obj/grid/attribvop1
opadd if
これで (旧) if ノード (if1) が出来る。 - aanoise1 を コピー (Ctrl+C)
- if1 の中に入り、 ペースト (Ctrl+v)結果は twoway1 の場合と同じになる。
- twoway1 は削除。
- VEXコードを先ほど同じ要領で見ると、ノイズ (vop_fbmNoiseFV) が if 構文の中で実行されるようになっていることがわかる。
3. H15 からの方法
Houdini 15 から If Block ノードグループを使用。これは、if_begin と if_end ノードの2つで構成されている。この二つは、旧 if ノード内部のsubinput と suboutput に相当する。ただし、他のノードと同じレベルに出来るため、ノードへの出入りの手間が不要になる。
- TAB -> If Block を実行。青く囲まれた二つのノード if_begin1 と end_if1 が出来る。
- if_begin1 の condition に compare1 を
- False の場合の値 globals の Cdを if_begin1の最初の入力に接続
- True の場合の値 aanoise の出力を end_if1 の入力に接続
- 結果となる end_if1 の出力を output1 の Cd に接続
これで同じ結果になる。
まとめ
- if_begin ノードに False 時の値のノードを、if_end ノードに True の値のノードを接続する。
- if_begin1を選択すると begin1 と end1の間に水色の接続線が描かれ、この二つがつながっていることがわかる。
- end_if1 の Enclose Inputs をオンにすると aaonise が青い領域に含まれる。オフにすれば外れる。
-
ノードを確定時に Enter の代わりに Shift+Enter を実行するとノードが自動的に接続され、作成したノードに表示フラグが設定される。
-
VOPノード内で、カーソルをノードの出力の上に配置、xキーを押すと、Visualize ノードが作成され、そのノードの出力結果が確認可能になった。
シーンファイル:
- if_block.zip (36KB) ここで使っているファイルは
- if_original.hip: 元シーン
- if_h14_if.hip: H14の if
- if_h15_if.hip: H15の if
0 件のコメント:
コメントを投稿