GH Basics GH Tutorial Grasshopper

【Grasshopper Basics】 Random Tilt Surface

今回はGrasshopperの基礎として、上画像の様なランダムな傾斜を持つオブジェクトを作成していきたいと思います。基本的な内容となってますので、初学者の方は是非挑戦してみてください。こちらの記事は動画化していますので、動画の方がよい方は以下のリンクからどうぞ!

概要

上画像がプログラムの全体像となっております。

各グループごとに解説していこうと思います。

グリッド作成

  1. 基準となる四角形グリッドを作成します。Rectangleコンポーネントで1辺1000mmの四角形を作成します。
  2. Divide Surfaceコンポーネントで作成した四角形を分割します。今回は縦・横どちらも10分割しています。
  3. 分割点を基点にRectangleコンポーネントで更に四角形を作成します。入力端子Pに分割点を接続しFlattenしておきます。1辺の長さは分割点同士の距離をとってます。上画像の様な四角形グリッドが作成されていればOKです。

四角形グリッドをランダムな高さに移動

  1. Moveコンポーネントで作成した四角形グリッドをランダムな高さでZ方向に移動させます。
  2. Randomコンポーネントでランダムな高さのリストを作成します。Construct Domainコンポーネントで高さの範囲を決めます。今回は50~100mmで設定しました。
  3. List Lengthコンポーネントで四角形グリッドの数量を取得し、Randomコンポーネントに接続します。高さのリストが取得できました。データ構造を合わせるために出力端子をFlattenしておきます。
  4. UnitZコンポーネントでZ方向のベクトル化します。Moveコンポーネントに接続して移動が完了します。

サーフェイスの傾き面を作成

  1. 移動させた四角形グリッドの中心点をAreaコンポーネントで取得します。
  2. Plane Normalコンポーネントで取得した中心点をそれぞれの原点としたXY平面を作成します。この平面をランダムに傾けていきます。
  3. Randomコンポーネントで傾けるためのランダムな角度のリストを作成します。傾きの範囲はConstruct Domainコンポーネントで作成します。今回は‐30度~30度としています。
  4. List Lengthコンポーネントで四角形の数を取得しRandomコンポーネントに接続します。ランダムな角度のリストが取得できました。
  5. Radiansコンポーネントで角度のリストを弧度法に変換します。
  6. Rotateコンポーネントで作成した平面を傾けていきます。先ずはYZ平面に、先ほど作成した角度のリストを使用して傾けていきます。
  7. Rotateコンポーネントで傾けた平面を更にXZ平面に傾けていきます。先ほどと同様にランダムな角度のリストを使用して傾けます。
  8. 上画像の様に作成した平面がランダムに傾いていればOKです。

四角形グリッドの押し出し

  1. 最初に作成した四角形グリッドを、ExtrudeコンポーネントでZ方向に押し出します。
  2. 押し出し距離は先ほど作成したランダムに傾けた平面より十分高い距離とします。以前四角形グリッドをZ方向に移動した際の3倍の距離で押し出しています。

押し出した四角形グリッドを傾けた平面でカット

  1. Brep | Planeコンポーネントで押し出して作成した直方体とランダムに傾けた平面の交線を取得します。出力端子はFlattenしておきます。
  2. Split Brep Multipleコンポーネントで取得した交線で直方体を取得した交線でカットします。もしエラーが出たら、交線が直方体の高さ内に納まっていない可能性があるので、平面を傾ける角度を緩くしてみてください。
  3. List Itemコンポーネントでカットした下側のオブジェクトを取得します。
  4. Cap Hole Exコンポーネントでカット面にキャップをします。

完成

以上で完成です。順を追って実装していけば簡単に実装できるかと思います。Panelコンポーネントなどでデータ構造を確認しながら進めてみてください。

-GH Basics, GH Tutorial, Grasshopper
-,