Architecture GH Basics GH Tutorial Grasshopper

【Grasshopper Tutorial】 Voronoi Tunnel

今回は、上画像の様なVoronoi分割を使用したトンネルを作成したいと思います。難易度的も初級程度なので、是非挑戦してみてください。
こちら動画化もしておりますので、動画の方がよいかたは以下のリンクからご覧ください。

概要

上画像がプログラムの全体像となっております。大まかな流れは以下です。

  1. トンネルの断面となる基準円を作成
  2. トンネルの基準サーフェイスを作成
  3. サーフェイスをVoronoi分割
  4. Voronoi分割をポリライン化
  5. ポリラインをサーフェイス化
  6. オブジェクトを拡大
  7. 完成

トンネルの断面となる基準円を作成

  1. トンネルの両端部に円を作成します。「Construct Pointコンポーネント」・「XZ Planeコンポーネント」で、(0,0,0)、(0,60000,0)を中心としたXZ平面をそれぞれ作成します。
  2. 「Circleコンポーネント」で作成したXZ平面に円を作成します。上画像では両方とも半径13mとしてます。
  3. 「Lineコンポーネント」で作成したXZ平面をの原点をつなぐ直線を作成します。
  4. 「Evaluate Curveコンポーネント」に作成したLineを接続し、入力端子を「Reparametrized」します。入力端子tに0.5を入力することで、Lineの中点を取得します。
  5. 「XZ Planeコンポーネント」を接続し、取得したLineの中点を原点としたXZ平面を作成します。
  6. 「Circleコンポーネント」でトンネル中間部の断面を作成します。上画像では半径8mとしてます。
  7. 「Mergeコンポーネント」で作成した3つの円のリストを1つのデータに結合します。

トンネルの基準サーフェイスを作成

  1. 「Sweep1コンポーネント」で作成した3つの円を断面としたサーフェイスを作成します。入力端子R(Rail)に先ほど作成した直線を入力し、入力端子S(Sections)に先ほど「Mergeコンポーネント」で作成した円のリストを接続します。
  2. 「Brep | Planeコンポーネント」「XY Planeコンポーネント」で、作成したサーフェイスとXY平面との交線を取得します。
  3. 「Surface Splitコンポーネント」でサーフェイスを取得した交線で切断します。
  4. 「List Itemコンポーネント」の0番目を取得し、上画像の緑色のようなサーフェイスが取得できていればOKです。

サーフェイスをVoronoi分割

  1. 「Bounding Boxコンポーネント」で作成したトンネルの基準サーフェイスを囲うような直方体を作成します。
  2. 「Populate 3Dコンポーネント」で直方体内部にランダムに点を作成します。上画像では600点作成しています。
  3. 「Voronoi 3Dコンポーネント」に作成した点を入力しVoronoi分割します。
  4. 「Brep | Brepコンポーネント」でトンネルの基準サーフェイスとVoronoi分割との交線を取得します。上画像のようなCurvesが取得できていればOKです。

Voronoi分割をポリライン化

  1. 「Discontinuityコンポーネント」で取得したCurvesの頂点を取得します。
  2. 「Discontinuityコンポーネント」で取得した頂点のデータ内に空のブランチが含まれてしまっているので、「Clean Treeコンポーネント」空のブランチを消去します。入力端子Eの上で右クリックを押し「Invert」します。
  3. 「Polylineコンポーネント」で取得した頂点をつなぐポリラインを作成します。入力端子Cの上で右クリックを押し「Invert」することで閉じたポリラインが作成されます。

ポリラインをサーフェイス化

  1. 「Offset Curve Looseコンポーネント」で取得したポリラインをオフセットします。Voronoi分割の各セルの内部側にオフセットしたいので、負の値で入力します。上画像では-40を入力しています。
  2. 「Ruled Surfaceコンポーネント」でオフセットしたラインとの間にサーフェイスを張ります。拡大してみると上画像のようにサーフェイスが張られているのがわかります。

オブジェクトを拡大

  1. 作成したオブジェクトを拡大し、拡大前と後をつないでいきます。
  2. 「Curve Middleコンポーネント」で一番最初に「Lineコンポーネント」で作成した直線の中点を取得します。「Pointコンポーネント」で近くまで持ってきましょう。
  3. 「Curvesコンポーネント」「Polylineコンポーネント」の出力端子につなぎます。
  4. 「Scaleコンポーネント」で拡大します。拡大中心を先ほど取得したラインの中点とし、倍率は上画像では1.10倍としました。
  5. 「Ruled Surfaceコンポーネント」で拡大前と後の間にサーフェイスを張ります。
  6. 続いて、前項でポリラインをオフセットしサーフェイスを張ったかと思います。そのサーフェイスを「Scaleコンポーネント」で同様に拡大します。
  7. 続いて、前項でオフセットしたポリライン自体を拡大します。「Offset Curve Looseコンポーネント」の出力端子を「Scaleコンポーネント」に接続し同様に拡大します。
  8. 「Ruled Surfaceコンポーネント」で拡大前と後とでサーフェイスを張ります。
  9. 「Mergeコンポーネント」で作成したサーフェイスをまとめます。

完成

以上で完成です!パラメーターを変えていろんな形状を試してみてください!

【参考文献】

Grasshopper Docs : https://grasshopperdocs.com/

-Architecture, GH Basics, GH Tutorial, Grasshopper