今回はGrasshopperのプラグインで、物理演算が行えるKangaroo2を使用して上画像の様なドームを作成していきたいと思います。Kangaroo2を用いることができれば、デザインの幅も更に広がるかと思います。是非参考にしてください。こちらのチュートリアルは動画化しておりますので、動画の方がよい方は是非以下のリンクからのぞいてみてください。(※事前にfood4RhinoからKangaroo2をインストールしておいてください。メジャーバージョンが2以降のもの(Kangaroo2.○.○)をインストールしてください。それ以前はKangaroo1となり機能が異なります。)
目次
概要

上画像がプログラムの全体像となっております。
それでは各グループごとに説明していきたいと思います。
ベースとなるメッシュ作成

- 「Circleコンポーネント」で半径20mの円を作成します。
- 「Divide Curveコンポーネント」で作成した円を分割します。上画像では5分割しています。
- 「Cull Patternコンポーネント」で取得した分割点から特定の点を取得します。入力端子Pで右クリックを押し、Set Multiple Booleansで「False,True,False, True, True」で0番目と2番目を消去したリストを取得します。
- 「Polylineコンポーネント」で取得した点からポリラインを作成します。入力端子Cを「Invert」して閉じた曲線にします。
- 「TriRemeshコンポーネント」で三角形メッシュで分割します。入力端子Itersにはメッシュの細かさを入力します。今回は10を入力しておきます。
- 「Mesh Edgeコンポーネント」で作成したメッシュのエッジを取得します。
荷重の作成

- メッシュに掛ける荷重を作成します。「Mesh Edgeコンポーネント」のE2端子から「Curvesコンポーネント」でメッシュの内部のエッジを取得します。
- 「Discontinuityコンポーネント」で取得したエッジの頂点を取得します。
- 「Loadコンポーネント」で荷重を作成します。先ほど取得したエッジの頂点を入力端子Pに接続し「Flatten」します。この点に荷重をかけていきます。
- 「Loadコンポーネント」入力端子FV(Force Vector)に荷重をかける方向を入力します。今回はZ方向に荷重をかけていきます。
- 「Loadコンポーネント」入力端子W(Weighting)にスカラー値を入力します。今回は20を入力しています。
変形させるオブジェクトの指定

- 「Showコンポーネント」で結果を出力させたいオブジェクトを指定します。「TriRemeshコンポーネント」で作成したメッシュを指定します。
メッシュエッジをスプリング化

- メッシュのエッジに弾性力を持たせます。「Mesh Edgeコンポーネント」で取得したエッジからE1(外周部)とE2(内部)のエッジを「Mergeコンポーネント」でまとめておきます。
- 「Lengthコンポーネント」でエッジに弾性を与えていきます。
拘束する点を決定する

- 「Curvesコンポーネント」で「Mesh Edgeコンポーネント」のE1端子から外周部のエッジを取得します。
- 「Join Curvesコンポーネント」で取得したエッジを結合します。
- 「Discontinuityコンポーネント」で結合したエッジの頂点を取得します。上画像の黄色○箇所が取得できるかと思います。
- 「Anchorコンポーネント」で取得した頂点を拘束します。入力端子は「Flatten」しておきます。
演算の実行

- 「Mergeコンポーネント」に「Showコンポーネント」・「Loadコンポーネント」・「Lengthコンポーネント」・「Anchorコンポーネント」をまとめておきます。一番上D1に「Showコンポーネント」がくるように接続し、入力端子はすべて「Flatten」しておきます。
- 「BouncySolverコンポーネント」を使用して物理演算を行っていきます。GoalObjectsに「Mergeコンポーネント」の出力端子を接続します。
- 「BouncySolverコンポーネント」の入力端子Resetに「Buttonコンポーネント」を接続してBool値を入力できるようにします。ボタンを押してTrueが入力されると、演算がリセットされます。
- 「BouncySolverコンポーネント」の入力端子Onにも「Buttonコンポーネント」でBool値を入力できるようにします。このボタンを押し続けている間(Trueが入力されている間)は演算がされます。
- 「BouncySolverコンポーネント」の入力端子Onのボタンを押して(押し続ける)演算を開始してみましょう。上画像の様になればOKです。リセットのボタンを押せば、リセットされます。
演算結果を複製

- 「List Itemコンポーネント」の0番目で演算後のメッシュを取得します。
- 「Rotateコンポーネント」で回転させながら複製させていきます。入力端子Pに入力する回転中心は、Anchorさせたポイントから「List Itemコンポーネント」で1ポイント取得してきます。
- 「Seriseコンポーネント」で回転角のリストを作成します。Stepで60度ずつ増やし、Count6とします。
- 「Radiansコンポーネント」で角度を弧度法に変換し、「Rotateコンポーネント」に接続します。上画像の様になればOKです。
メッシュエッジを立体化

- 「Face Boundariesコンポーネント」で「Rotateコンポーネント」の出力端子かか変形後のメッシュのエッジを取得します。
- 「Areaコンポーネント」で各三角形メッシュの中心点を取得します。
- 「Scaleコンポーネント」で三角形メッシュのエッジを取得した各中心点を基準に縮小します。今回は0.8倍しています。
- 「Ruled Surfaceコンポーネント」で縮小前と後のエッジの間にサーフェイスを張ります。
- 「Extrudeコンポーネント」で取得したサーフェイスをZ方向に押し出します。
完成

上画像の黄色○箇所を変更してみます。円の分割数を8、回転する基点をリストの3番目にしてみました。
上画像の様になりました。変数を変更していろんな形状を試してみてください。




以上になります。Kangaroo2はたくさんの方がいろんなチュートリアルを作成していますので、他にも試してみてください。
【参考文献】
- Grasshopper Docs : http://grasshopperdocs.com/
- AppliCraft : https://www.applicraft.com/