STUDIO TAMA

thumbnail

投稿日:2021-12-11

【Grasshopper Tutorial】 Voronoi Tunnel

  • #Grasshopper

  • #GH Modeling

  • #Basic

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

概要

thumbnail

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

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

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

thumbnail
  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 つのデータに結合します。

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

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

サーフェイスを Voronoi 分割

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

Voronoi 分割をポリライン化

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

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

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

オブジェクトを拡大

thumbnail
  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 コンポーネント」で作成したサーフェイスをまとめます。

完成

thumbnail
thumbnail
thumbnail
thumbnail

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

【参考文献】

Grasshopper Docs :

https://grasshopperdocs.com/
目 次