Architecture GH Basics GH Tutorial Grasshopper

【Grasshopper Tutorial】 Waffle Tree

今回は、上画像の様なWaffle Structureを使用したTreeを作成していきます。難易度は高くはないですが、データ構造の理解は必須となっております。このチュートリアルは動画化しているので、動画の様がよい方は以下のリンクからご覧いただければと思います。

概要

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

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

基準となる円の作成

  1. 「Circleコンポーネント」・「Construct Pointコンポーネント」・「XY Planeコンポーネント」を用い(0,0,0)を中心としたXY平面に半径500mmの円を作成します。
  2. 「Moveコンポーネント」で作成した円をZ方向に5000mm移動させます。
  3. 「Scaleコンポーネント」でZ方向に移動させた円を拡大させます。上画像では5倍にしています。中心点は「Areaコンポーネント」で円の中心を取得し、入力します。
  4. 3つの円ができたかと思いますので、「Divide Curveコンポーネント」を3つ用意し、それぞれの円を分割し分割点を取得します。今回は15等分しています。 

縦方向部材の基準線作成

  1. 取得した分割点をそれぞれ「Flip Matrixコンポーネント」でリストのデータ構造を変換します。
  2. データ構造を変換したリストを「Nurbs Curveコンポーネント」に接続し、縦方向部材の基準線を作成します。上画像の様な曲線ができていればOKです。

縦方向部材の基準サーフェイス作成①

  1. 「Scaleコンポーネント」を用いて、小さい円の分割点2つを縮小します。中心点はそれぞれの円の中心を指定し、0.5倍に縮小します。
  2. 「Moveコンポーネント」で、大きな円の分割点・先ほど作成した小さな円の分割点のうち上側にある方を、Z方向に500mm移動させます。上画像のような緑の点が取得できるかと思います。

縦方向部材の基準サーフェイス作成②

  1. 「Rectangle 3Ptコンポーネント」で先ほど作成した点を通る長方形を作成します。
  2. 「Boundary Surfacesコンポーネント」で作成した長方形にサーフェイスを張ります。
  3. 「Surface Splitコンポーネント」で作成した長方形サーフェイスを、以前作成したNurbs Curveでスプリットします。
  4. 「List Itemコンポーネント」でリストの1番目を取得して、上画像の緑部分のサーフェイスが取得できていればOKです。

縦方向部材に厚みを持たせる

  1. 「Extrudeコンポーネント」で作成したサーフェイスに厚みを持たせていきますが、押し出し方向のベクトルを取得していきます。
  2. 「Evaluate Surfaceコンポーネント」で各サーフェイスの中心点を取得します。入力端子Sを「Reparametrized」し、入力端子uvには「MD Sliderコンポーネント」で(0.5,0.5)を入力します。
  3. 「Evaluate Surfaceコンポーネント」の出力端子Fに「Unit Vectorコンポーネント」接続し、サーフェイスに対して垂直なベクトルが取得されます。
  4. 「Amplitudeコンポーネント」でベクトル長さを再設定します。今回は25mmとしています。
  5. 「Extrudeコンポーネント」を2つ用意し、先ほど取得したベクトルで押し出していきます。片方は、「Reverseコンポーネント」でベクトル方向を逆転させ、正方向に25mm、負の方向に25mm押し出していきます。合計で厚み50mmとなります。
  6. 「Brep Joinコンポーネント」で2つの押し出しを結合します。上画像の様に厚みを持っていればOKです。これで縦方向の部材は完成です。

水平方向の部材作成①

  1. 続いて水平方向の部材を作成していきます。「Divide Curveコンポーネント」で序盤に作成したNurbs Curveを分割します。今回はN=10を入力し10分割しました。(※上画像では何も入力されてませんが、デフォルトが10となってます。)
  2. 「Cull Indexコンポーネント」で分割点のうち、最初と最後の点を除いたリストを取得します。入力端子iに0と-1を入力します。
  3. 「Flip Matrixコンポーネント」で、取得したリストのデータ構造を変換します。
  4. 「Inerpolateコンポーネント」で分割点をつなぐ曲線を作成します。入力端子Pを「Invert」することで閉じた曲線になります。上画像の緑色の曲線が取得できていればOKです。

水平方向の部材作成②

  1. 先ほど作成した曲線を「Scaleコンポーネント」で縮小します。各中心点を「Areaコンポーネント」で取得し、倍率は0.5倍とします。
  2. 「Boundary Surfacesコンポーネント」で縮小前の曲線と縮小後の曲線の間にサーフェイスを張ります。
  3. 作成したサーフェイスを「Extrudeコンポーネント」で押し出します。- Z方向に押し出します。今回は - 50mm押し出しています。上画像緑色箇所の様になっていればOKです。これで水平部材は完成です。

最上部の枠作成

  1. 「Curveコンポーネント」で最初に作成した大きな円を取得します。(※上画像の黄色枠で囲ったコンポーネントです。)
  2. 「Offset Curveコンポーネント」で取得した円を50mm外側にオフセットします。
  3. 「Boundary Surfacesコンポーネント」で2つの円の間にサーフェイスを張ります。入力端子を「Flatten」します。
  4. 「Extrudeコンポーネント」でZ方向に押し出します。押し出し距離は、500mmとします。(※上画像の緑枠のコンポーネントから取得してきます。)
  5. 上画像の様に円形の枠ができていればOKです。

最上部の部材作成①

  1. 最後に最上部の部材を作成していきます。「Lineコンポーネント」で縦部材天端の直線を取得します。
  2. 「Divide Curveコンポーネント」で取得した直線を分割します。Nに10が入力されており、10分割されています。
  3. 「Cull Indexコンポーネント」で分割点の最初と最後を消去したリストを取得します。Indexに0,-1を入力します。

最上部の部材作成②

  1. 部材の基準線を作成します。「List Lengthコンポーネント」で点の数を取得します。「Seriseコンポーネント」で長さのリストを作成します。入力端子Sに50、入力端子Nに50、入力端子Cには「List Lengthコンポーネント」で取得した点の数を入力します。
  2. 「Line SDLコンポーネント」を2つ用意し分割点を中心とした直線を作成します。入力端子Sには分割のリストを接続し、入力端子Lに「Seriseコンポーネント」で作成した長さのリストを入力します。入力端子Dには直線の方向を接続しますが、縦方向の部材に厚みを持たせた際に使用したベクトルを使います。(※上画像の緑枠・黄色枠を参照)
  3. 「Join Curvesコンポーネント」で直線をそれぞれ結合します。
  4. 上画像の様に緑色の様な直線ができていればOKです。

最上部の部材作成③

  1. 作成した直線をランダムに回転させていきます。「Curve Middleコンポーネント」で中点を取得しておきます。
  2. 「Randomコンポーネント」を用いてランダムな角度のリストを作成します。入力端子Rに「-30~30」を入力、入力端子Nには前項で取得した分割点の数を入力します。-30度~30度の間でランダムな数値のリストができました。
  3. 「Radiansコンポーネント」で角度のリストをラジアンに変換します。
  4. 「Rotateコンポーネント」で先ほど取得した直線の中点を中心に、ランダムな角度のリストで回転させます。上画像の緑箇所の様に直線に角度がついていればOKです。

最上部の部材作成④

  1. 先ほど回転させた直線をもとに部材を作成していきます。「Offset Curveコンポーネント」で20mmオフセットします。
  2. 「Loftコンポーネント」でオフセット前の直線とオフセット後の直線との間にサーフェイスを張ります。この時、オフセット前の直線が取得できる「Rotateコンポーネント」の出力端子は「Graft」「Simplify」し、「Offset Curveコンポーネント」の出力端子は「Simplify」して接続します。
  3. 「Extrudeコンポーネント」で押し出していきます。押し出し距離は、上画像の緑枠箇所のベクトルから取得し、「Reverseコンポーネント」でベクトルを反転させます。-500mm押し出せます。
  4. 上画像の緑色部分の様に部材ができていればOKです。

完成

  1. 最後に出力結果を「Brepコンポーネント」にそれぞれ格納し、「Mergeコンポーネント」でまとめておきましょう。

以上になります。記事のボリュームが多くなってしまうので、今回は部材同士の結合部の切り欠きや2D描写・ナンバリングまではできませんでしたが、是非チャレンジしてみてください。

-Architecture, GH Basics, GH Tutorial, Grasshopper
-, ,