今回は、Grasshopper を使って上画像のような Mesh Dome を作成していきたいと思います。非常にシンプルなプログラムとなっているので、初級者向けとなっております。是非チャレンジしてみてください。
概要
上画像がコードの全体像になります。大まかな流れは以下の様になります。
- 三角形でメッシュ化された球体を半分に切断してドームを作成
- 三角形メッシュのエッジを取得
- 三角形メッシュの中に納まる小さな三角形を作成
- エッジをパイプ化
- ランダムなカラーリストを作成
- 色付け
三角形でメッシュ化された球体を切断してドームを作成
- 「Mesh Sphere コンポーネント」を使用して Mesh 化された球体を作成します。入力端子 R に球体の半径を、入力端子 U・V にメッシュの密度を入力します。今回は原点(0,0,0)を中心とした半径 10 mの球体を 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 コンポーネント」でデータの中身を確認しながら実装していきましょう。
【参考文献】