今回は Grasshopper の基礎として、上画像の様なランダムな傾斜を持つオブジェクトを作成していきたいと思います。基本的な内容となってますので、初学者の方は是非挑戦してみてください。こちらの記事は動画化していますので、動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がプログラムの全体像となっております。
各グループごとに解説していこうと思います。
グリッド作成
- 基準となる四角形グリッドを作成します。Rectangle コンポーネントで 1 辺 1000mm の四角形を作成します。
- Divide Surface コンポーネントで作成した四角形を分割します。今回は縦・横どちらも 10 分割しています。
- 分割点を基点にRectangle コンポーネントで更に四角形を作成します。入力端子 P に分割点を接続しFlattenしておきます。1 辺の長さは分割点同士の距離をとってます。上画像の様な四角形グリッドが作成されていれば OK です。
四角形グリッドをランダムな高さに移動
- Move コンポーネントで作成した四角形グリッドをランダムな高さで Z 方向に移動させます。
- Random コンポーネントでランダムな高さのリストを作成します。Construct Domain コンポーネントで高さの範囲を決めます。今回は 50~100mm で設定しました。
- List Length コンポーネントで四角形グリッドの数量を取得し、Random コンポーネントに接続します。高さのリストが取得できました。データ構造を合わせるために出力端子をFlattenしておきます。
- UnitZ コンポーネントで Z 方向のベクトル化します。Move コンポーネントに接続して移動が完了します。
サーフェイスの傾き面を作成
- 移動させた四角形グリッドの中心点をArea コンポーネントで取得します。
- Plane Normal コンポーネントで取得した中心点をそれぞれの原点とした XY 平面を作成します。この平面をランダムに傾けていきます。
- Random コンポーネントで傾けるためのランダムな角度のリストを作成します。傾きの範囲はConstruct Domain コンポーネントで作成します。今回は‐30 度~30 度としています。
- List Length コンポーネントで四角形の数を取得しRandom コンポーネントに接続します。ランダムな角度のリストが取得できました。
- Radians コンポーネントで角度のリストを弧度法に変換します。
- Rotate コンポーネントで作成した平面を傾けていきます。先ずは YZ 平面に、先ほど作成した角度のリストを使用して傾けていきます。
- Rotate コンポーネントで傾けた平面を更に XZ 平面に傾けていきます。先ほどと同様にランダムな角度のリストを使用して傾けます。
- 上画像の様に作成した平面がランダムに傾いていれば OK です。
四角形グリッドの押し出し
- 最初に作成した四角形グリッドを、Extrude コンポーネントで Z 方向に押し出します。
- 押し出し距離は先ほど作成したランダムに傾けた平面より十分高い距離とします。以前四角形グリッドを Z 方向に移動した際の 3 倍の距離で押し出しています。
押し出した四角形グリッドを傾けた平面でカット
- Brep | Plane コンポーネントで押し出して作成した直方体とランダムに傾けた平面の交線を取得します。出力端子はFlattenしておきます。
- Split Brep Multiple コンポーネントで取得した交線で直方体を取得した交線でカットします。もしエラーが出たら、交線が直方体の高さ内に納まっていない可能性があるので、平面を傾ける角度を緩くしてみてください。
- List Item コンポーネントでカットした下側のオブジェクトを取得します。
- Cap Hole Ex コンポーネントでカット面にキャップをします。
完成
以上で完成です。順を追って実装していけば簡単に実装できるかと思います。
Panel コンポーネント
などでデータ構造を確認しながら進めてみてください。