プログラミング言語につきものなのが条件分岐と反復処理です。
条件分岐は「特定の条件下で処理を行う」というもの。
反復処理は「特定の条件を満たしている間、処理を繰り返す」というものです。
VEXの場合はどのように処理するのか、見てみましょう。
まずは反復処理を試してみましょう。
ジオメトリノードを作成し、Box ノードを作成します。Primitive Type は Polygon Mesh にしておきます。
反復処理を行うには For Each ノードを使います。ここでは For-Loop with Feedback ノードを作成しましょう。
普段のノードと違い、オレンジ色の枠に囲われた 2つのノードが作成されたと思います。Box ノードから接続しておきましょう。
ビューフラグを映しても何も起こりません。
For-Loop ノードでは オレンジの枠で挟んだ処理を繰り返すのですが、今は何の処理も設定していないので結果が変わらないのです。
Subdivide ノードを挟んでみましょう。Algorithm は OpenSubdiv Bilinear, Depth は 1 とします。
repeat_end ノードの Iteration を操作すると分割数が変化するのが分かります。
Iteration 回数分繰り返す設定になっているので 一度分割したフェースを再分割しているのです。
今はすべてのメッシュが同じように分割されているようになっています。
これを確率で再分割しないようにするためにはどうすればいいでしょうか?
subdivide ノードの前に こんな VEX を書いてみましょう。
これはrand 関数を使って各フェースに ランダムな値を設定し、その値が 0.15 を下回っていれば keep という名前の グループ を設定するというものです。
keep グループに指定されたフェースは分割せずに残すことにしましょう。
ジオメトリスプレッドシート上で見てみると グループを設定したフェースは 1 そうでないフェースは 0 が設定されています。
subdivide ノードには 処理を施すグループを指定するための Group という項目がありますので "!keep" と設定します。
グループ名の頭に "!" とつけると「~でない」という意味になります。
したがって keep グループに設定されていないフェースのみ分割することになります。
Iteration を操作して 結果を確認しましょう。