今回は、ベクトル場を使用して上の様なジオメトリを生成していきたいと思います。さほど難しい内容ではないので是非チャレンジしてみてください。こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がプログラムの全体像となっております。各ブロックごとに説明していこうと思います。
ベクトル場の発生点を作成
- Center Box コンポーネントで 1 辺 100mm の立方体を作成します。
- Populate 3D コンポーネントで作成した立方体内にランダムに点を生成します。今回は 5 点作成しました。
ベクトル場を生成
- Point Charge コンポーネントで先ほど生成した点から点に向かう(引力)磁場を発生させます。入力端子 P に先ほどの点を入力します。
- 入力端子 C(Charge)には磁場の強さを入力します。今回は‐1.00 を入力していますが、この値を正の値にすると点から離れていく磁場(斥力)を発生させることができます。
- 入力端子 D(Decay)には減衰値を入力できます。点から離れるにつれて磁場の強さを減衰させたい場合は入力します、今回は 1.0 を入力しています。
- 入力端子 B(Bounds)には磁場を発生させる境界を入力したい場合に入力します、今回は指定していません。
- Spin Force コンポーネントで生成した点に回転するような磁場を発生させます。入力端子 P に先ほどの点を入力します。
- 入力端子(Strength)に磁場の強さと R(Radius)に半径を入力します。今回はどちらも 1.000 を入力しています。Strength の値を負の値にすると回転方向が逆になります。入力端子 D(Decay)には減衰値を 1.0 で入力しています。
- Merge Fields コンポーネントで作成した磁場を結合します。
ベクトル場で点を動かす
- Populate Geometory コンポーネントで最初に作成した立方体の表面にランダムに点を発生させます。今回は 100 点発生させています。
- Field Line コンポーネントで発生させた 100 点を作成したベクトル場で移動させたときの軌跡を描写します。入力端子 N には Step 数を入力します。
ジオメトリ作成
- 取得した軌跡を使用してジオメトリを作成していきます。Perp Frames コンポーネントで各軌跡を等分割する位置に直行する平面を取得します。今回は各軌跡を 10 分割して 11 平面取得しています。
- Circle コンポーネントで取得した平面に円を作成します。
- 円の半径のリストを作成していきます。Range コンポーネントで 0 から 1 までのリストを 10 分割して 11 個値を取得します。
- Graph Mapper コンポーネントで取得した 0 から 1 を再設定していきます。Graph Type を Sine にし、0 から 1 までの値を Sine 波を使用して再設定しました。
- Multiplication コンポーネントで再設定した値に定数を掛けます。今回は 4 倍しています。
- 半径が 0 だとエラーを吐くので、Maximum コンポーネントで値が 0.0001 より小さい場合は 0.0001 を返すようにします。
- Circle コンポーネントの Radius 端子に接続し、Loft コンポーネントで円同士の間にサーフェイスを張り、上の様なジオメトリが生成できていれば OK です。
ジオメトリをグループ分け
- Partition List コンポーネントを使用して、取得したサーフェイスを 4 グループに分けます。100 サーフェイスあるので 25 要素ずつに分けています。
- Explode Tree コンポーネントで 4 ブランチのサーフェイスをそれぞれ取得します。こちらのサーフェイスをそれぞれ Bake して Rhinoceros でマテリアルを割り当てれば画像の様なジオメトリが完成です。
完成
以上になります。Vector Field に関しては他にもチュートリアルを作成しています。是非ご参考ください。