今回は、Grasshopperを使って上画像のようなMesh Domeを作成していきたいと思います。非常にシンプルなプログラムとなっているので、初級者向けとなっております。是非チャレンジしてみてください。
目次
概要

上画像がコードの全体像になります。大まかな流れは以下の様になります。
- 三角形でメッシュ化された球体を半分に切断してドームを作成
- 三角形メッシュのエッジを取得
- 三角形メッシュの中に納まる小さな三角形を作成
- エッジをパイプ化
- ランダムなカラーリストを作成
- 色付け
三角形でメッシュ化された球体を切断してドームを作成

- 「Mesh Sphereコンポーネント」を使用してMesh化された球体を作成します。入力端子Rに球体の半径を、入力端子U・Vにメッシュの密度を入力します。今回は原点(0,0,0)を中心とした半径10mの球体を25×25個のメッシュで作成してます。
- 「Mesh Sphereコンポーネント」で作成したメッシュは四角形のメッシュなので、「Trianglateコンポーネント」を使用して、それらを三角形に分割していきます。
- 「Mesh Split Planeコンポーネント」を使用して、球体を切断します。入力端子Mに「Trianglateコンポーネント」の出力端子Mを、入力端子Pには「XY Planeコンポーネント」を接続し、XY平面で球体を半分に切断します。
- 「Mesh Split Planeコンポーネント」の出力端子Aには切断した球体の上半分、出力端子Bには下半分が取得できました。今回は上半分のみを使用するので、出力端子Aを「Meshコンポーネント」に接続します。

三角形にメッシュ化された球の半分が取得できました。
三角形メッシュのエッジを取得

- 「Face Boundariesコンポーネント」を使用して、三角形メッシュのエッジをポリラインとして取得します。
- 「Boundary Surfacesコンポーネント」を使用して、三角形のポリライン内にサーフェイスを張っていきます。
- 「Deconstruct Brepコンポーネント」を使用して、作成した三角形のサーフェイスを「Face/Edge/point」に分割していきます。出力端子Eから、三角形メッシュのを構成する3つの直線が取得できました。
三角形メッシュの中に納まる小さな三角形を作成

- 「Deconstruct Brepコンポーネント」で取得した三角形メッシュを構成するラインの中点を取得し、それらをつなぐことで小さな三角形を作成します。「Curve Middleコンポーネント」を「Deconstruct Brepコンポーネント」の出力端子Eに接続します。不要な階層を含んでいるので、出力端子Mの上で右クリックを押しsimplifyしておきます。
- 取得した中点を「Polylineコンポーネント」を使用してポリライン化していきます。入力端子C (closed)上で右クリックを押し、InvertしTrueを入力することで、ポリラインが閉じで三角形になります。
- 「Boundary Surfacesコンポーネント」で三角形にサーフェイスを張ります。

「Boundary Surfacesコンポーネント」 以外をPreviewOffにして上画像のようになっていればOKです。
エッジをパイプ化

- 「Pipeコンポーネント」を使用して、三角形のエッジをパイプ化します。「Pipeコンポーネント」を2つ用意し、1つには「Deconstruct Brepコンポーネント」の出力端子Eを、もう1つには「Polylineコンポーネント」の出力端子を(小さな三角形のエッジ)接続します。
- 「Pipeコンポーネント」の入力端子Rにはパイプの半径を入力します。今回は適当に10mmを入力してます。

画像では分かりづらいですが、エッジがパイプ化されております。
ランダムなカラーリストを作成

小さな三角形に指定した色をランダムに割り当てていきます。
- 「Colour Swatchコンポーネント」を使用して、好きな色を複数用意します。今回は4色用意しました。
- 「Mergeコンポーネント」を使用して、用意した色をリスト化します。
- 「Randomコンポーネント」を使用して用意した4色の色を、小さな三角形の数分だけランダムにリスト化していきます。入力端子Rには「Mergeコンポーネント」を「List Lengthコンポーネント」で取得したListの長さ(上画像では4が取得できます)を接続します。こうすることで「0~ListLengthで取得した値」のRangeが入力されます。(上画像では「0 To 4」が入力されました。)
- 「Randomコンポーネント」の入力端子Nに色付けする小さな三角形の個数を入力します。「Boundary Surfacesコンポーネント」を「List Lengthコンポーネント」に接続し、個数を取得し「Randomコンポーネント」の入力端子Nに接続します。「Randomコンポーネント」の出力端子から、「0~4の範囲で、三角形の個数分」の数字が取得できました。
- 「Roundコンポーネント」を使用して、取得した値の小数点を切り捨てます。出力端子F(Floor)から「0~3」までの数字が三角形の個数分取得できました。
- 「List Itemコンポーネント」を使用し用意した4色をからランダムに三角形の個数分リスト化します。入力端子Lに「Mergeコンポーネント」の出力端子Rを接続します。
- 「List Itemコンポーネント」の入力端子i (index)に「Roundコンポーネント」を取得した「0~3までの三角形の個数分のリスト」を接続します。「List Itemコンポーネント」の出力端子から、三角形の個数分ランダムに4色の色コードが並べられたリストが取得できました。(※わかりにくい箇所あるかと思いますので、「Panelコンポーネント」でリストの中身を確認しながら実装してみてください)
- 「Graft Treeコンポーネント」でGraftしておきます。
色付け

- 「Custom Previewコンポーネント」と「Colour Swatchコンポーネント」を使用して色付けします。パイプ部分は今回はホワイトにしてます
- 小さな三角形部分を色付けしていきます。「Custom Previewコンポーネント」の入力端子Gに「Boundary Surfacesコンポーネント」の出力端子を接続します。入力端子Mには「Graft Treeコンポーネント」の出力端子を接続し、ランダムな色リストを渡してあげます。

「Custom Previewコンポーネント」以外をPreviewOffにして上画像のようになっていればOKです。
以上で完成となります。コード量も少なく比較的簡単なチュートリアルとなっております。ただ「Randomコンポーネント」でランダムな色リストを作成する箇所は、やや理解しづらいとこもあったかと思いますので、「Panelコンポーネント」でデータの中身を確認しながら実装していきましょう。
【参考文献】
- 「Parametric Design with Grasshopper 増補改訂版 建築/プロダクトのための、Grasshopperクックブック」石津優子(著),堀川淳一郎 (著)
- AppliCraft : https://www.applicraft.com/