GH Basics GH Tutorial Grasshopper Objects

【Grasshopper Tutorial】 Randomly placed blocks

今回は上画像の様なブロックをランダムに配置していきます。基本的な内容になっております、是非挑戦してみてください。

概要

上画像がプログラムの全体像となっております。各ブロックごとに説明していこうと思います。

モジュールを作成

  1. Rhinocerosで配置してくブロック、モジュールを作成します。この時のサイズは、1×1×1の立方体の中に納まるサイズで作ります。今回は上画像の様な、3方向に延びるブロックを8種類作成しました。

作成したモジュールをGrasshopperにセット

  1. 生成したモジュールをGrasshopperに配置していきます。
  2. 3方向に延びたブロックと、立方体は別のBrepコンポーネントにセットします。
  3. 3方向に延びたブロックについては、MeshコンポーネントでMesh化します。この時Graftしておきます。
  4. Groupコンポーネントに接続し、FlattenしたものにList Lengthコンポーネントでブランチの数量を取得しておきます。
  5. 立方体については、Volumeコンポーネントで中心点を取得しておきます。こちらもGraftしておきます。

モジュールを配置する位置を作成

  1. Construct Pointコンポーネントで先ほど作成したモジュールと離れた位置に点を作成します。
  2. Squareコンポーネントで作成した点を基点にグリッドを生成します。Sizeは1、Extend Ex, Eyはそれぞれ12に設定し、12×12のGridを生成ました。
  3. Seriesコンポーネントで0~15まで1ずつ上がっていくリストを生成し、Unit ZコンポーネントでZ方向のベクトルに変換します。
  4. MoveコンポーネントでGridのCorner PointsをZ方向に複製します。

モジュール配置点を間引く

  1. Rhinocerosで変形した球体の様なジオメトリを作成し、先ほど生成した点に重ねます。その後GrasshopperのBrepコンポーネントにセットします。
  2. Point in Brepコンポーネントで生成した点が作成した球体の中にあるか、外にあるかをBool値で取得します。
  3. Dispatchコンポーネントで球の外にある点を取得します。

  1. Jitterコンポーネントで球の外側にある点のリストをランダムに並べ替えます。適当にSeed値を接続しておきます。
  2. List Lengthコンポーネントで点数量を取得し、Divisionコンポーネントで点の数量をモジュールの数で割ります。
  3. Roundコンポーネントで切り上げた数値を取得します。
  4. Partition Listコンポーネントでランダムに並べ替えたリストを先ほど切り上げた数値の数でブランチに格納することで、モジュールの数のブランチに点をグループ分けします。

モジュールを配置

  1. Vector 2Ptコンポーネントで先ほど8グループに分けた点を、最初に生成した立方体の中心点からのベクトルを取得します。
  2. Moveコンポーネントでモジュールを先ほど生成したベクトルを使用し移動させます。

完成

  1. 作成したものをBakeして、X方向・Y方向にMirrorしたら完成です。もちろん、MirrorするところまでGrasshopperでやるのもいいかと思います。

以上になります。モジュールの配置にルールを指定したい場合、Monocerosというプラグインを使用するのもありかと思います。是非チャレンジしてみてください。

-GH Basics, GH Tutorial, Grasshopper, Objects
-, ,