Houdiniノード勉強回。
今回はVOPのfor Loop系。
vopでのfor loop処理がHoudini15から新しくなって、分からなくて困ったのです。
「なんじゃこりゃ」、「どうやって使うんじゃ」と思って調べたやつ。
・・・・・・前回同様、VimeoのMaster Class見ながら勉強したんですけどねw
VOP内でLoop処理は、Block Begin系ノードとBlock End系ノードをペアで使用することで実現するようです。
Loopの種類に応じて、使用するノードや組み合わせが微妙に違います。
VOP Network内でtabメニューからloopで検索すると、用途に応じてそれらをの組み合わせをプリセット化したものが出てきます。
これらから適当に選んで作ると、オレンジの領域で囲われたBlock Begin/Endのペアが作成されます。
このBlock Begin/Endの間にノードを入れていくと、それがLoop処理されます。
VOPのLoop、大きく分けて蓄積型とバラバラ型の2種類。
ひとつのデータに対して特定の処理を繰り返し実行し結果を蓄積してゆく蓄積型と、
複数のデータ(配列)それぞれに対して特定の処理を実行するバラバラ型。
シンプル蓄積型のFor Loopから使い方を見てきます。
標準的なLoopで、 指定回数分Loopを繰り返します。
tabメニューから”For Loop”で作成します。
ためしにノイズを10回かけてみた。ネットワークはこう。
Block Beginノードへの入力でLoopの設定をいくつか制御できます。
lenght inputへのコネクトでLoop回数を指定できます。
index inputへのコネクトでLoopを任意の回数の状態からスタートできます。(通常Loopのスタートは0回目から)
lenghtやindexの値はloop内でも参照可能。必要に応じてこれらの値を使うことができます。
Block Begin/Endの”Output Name”を同名で指定すると、そこでデータがループします。
複数の異なるデータをループ処理する場合は、Output Nameを付けると分かりやすいっぽい。
何も指定しないと、上から順番に対応しています。
一見、Block Begin/End間は繋がってないように見えるけど、ちゃんと繋がっています。
VimeoのMasterClassのヤツはこれでColorのSmoothやってましたね。
次、バラバラ型のFor-Each Loop。
VOP Network内でTabメニューから”For-Each Loop”を選択して作ります。
このループにはarray(配列)を使います。
配列の中身を順番にLoop処理してくれるようです。
VimeoのMasterClassではNeighbours(VEX)というノード使って隣接するポイントの配列を用意してました。
これ、便利ですね。これもHoudini15からのノードかな?
ネットワークの組み方は基本、For Loopと同じ。
先述のFor-LoopのでのColorのSmoothを、For-Each Loopで作るとこう。
For Loopの時の”lenght”が、”array”と”element”に置き換わった感じ。
arrayが配列でelementが配列の要素。
VOPのFor-Eachは、「配列のLoop処理」と覚えておけば間違いなしかな。
この[For Loop]、[For-Each Loop]を基本の型として、他に亜種がいくつもあります。
まず「For Loop Until」と「For-Each Loop Until」
それぞれ、「For Loop」「For-Each Loop」の機能拡張版。
Block EndノードがBlock End Break-ifノードに変わり、Conditionの入力が増えてます。
このConditionがFalse(0)の時、Loopが止まります。
つぎに「Do While Loop」。これもFor Loopの亜種です。
プログラムのDo While文と同様の機能です。
初めに一度Loop内の処理が実行されて、以降は条件がTrueである限りLoopを続けます。
Block EndにConditionの入力があります。このConditionがFalse(0)になるまでLoop処理が続きます。
つぎに「While Loop」
これはBlock BeginとBlock Endの両方にConditionの入力があります。
Beginの方のConditionはLoop処理前のチェックとして機能します。
このConditionがtrue(0意外)の場合のみLoop処理が始まり、EndのConditionがFalseになるとLoopから抜けます。
そんな感じです。
間違い不足等ありましたらご指摘を!
コメント