今回はGrasshopperを使用して上画像のような、木板を連ねたようなデザインをしたベンチを作成してみたいと思います。コンポーネント数も比較的少なく、簡単なチュートリアルとなっております。初級者でも問題なくできるかと思いますので是非チャレンジしてみてください。
概要

大まかな流れは以下の様になります。
- ベンチの元となるオブジェクトを作成
- 木板を設ける位置の算出
- 木板の元となるサーフェイスを作成
- 木板の元となるサーフェイスを押し出し
以上となります。早速解説していきます。
ベンチの元となるオブジェクトを作成

- Rhinocerosを使用して上1枚目画像のような元となるオブジェクトを作成していきます。今回は「Ellipsoidコマンド」で楕円形のようなソリッドを作成しました。


- オブジェクトを変形させていきます。「Rebuildコマンド」を使用して制御点を増やしていきます。制御点数はu・v方向どちらも15としました。「編集」⇒「制御点」⇒「制御店表示をオン」を選択すると、上画像の様に制御点が表示されます。
- 「Lineコマンド」を使用して2枚目の画像の様に、オブジェクトの頂点と頂点を結ぶ直線をモデル化しておきます。


- 「Ctrl+Shiftキーを押しながら選択」することで、制御点を選択することができます。ガムボールを使用して好きな形状にしてみてください。
(※ガムボールの使用方法がわからない方は以下の記事を参照してみてください。)
木板を設ける位置の算出

Grasshopperに移動します。木板の位置を算出していこうと思います。
- Rihinocerosで作成したオブジェクトをSetしていきます。「Brepコンポーネント」に楕円形のオブジェクトを「Curveコンポーネント」に楕円形オブジェクトの頂点を頂点を結ぶLineをSetします。
- 「Divide Curveコンポーネント」を使用して、「Curveコンポーネント」にSetしたLineを分割していきます。分割した位置に木板が設置されます。入力端子Cに「Curveコンポーネント」の出力端子を、入力端子Nには「NumberSliderコンポーネント」を使用して分割数を入力します。今回は50を入力しました。
- 「Interpolateコンポーネント」を使用して分割点を結ぶCurveを作成していきます。入力端子Vに「Divide Curveコンポーネント」の出力端子Pを接続します。(※「Polylineコンポーネント」でも問題ないですが、頂点を結ぶLineが直線でない場合もあるかと思いますので、緩やかなカーブで結ぶ「Interpolateコンポーネント」を使用してます)
- 「Perp Framesコンポーネント」を使用して、各分割点における直線と垂直な平面を求めていきます。

上画像の様に、各分割点にPlaneが作成されていればOkです。
(※もしかしたらPlaneが小さくて見えにくい方もいるかもしれません。その場合は、Grasshopperのメニューバーで「Display」⇒「Preview Plane Size」⇒数字を大きくしてみてください。)
木板の元となるサーフェイスを作成

- 「Brep | Planeコンポーネント」を使用して、元となるオブジェクトと先ほど求めた各分割点におけるPlaneとの交線を求めることで、各分割点における木板の断面線を求めていきます。入力端子Bに「Brepコンポーネント」の出力端子を接続し、入力端子Pには「Perp Framesコンポーネント」の出力端子Fを接続します。
- 「Brep | Planeコンポーネント」の出力端子Cに「Panelコンポーネント」を接続して中身を確認すると、最初と最後に空のブランチが作成されてしまってます。これは、元となるオブジェクトの頂点における交線を算出しようとしているものの、頂点なので交線は算出することができず空のブランチのみを吐き出してしまっております。後々エラーにつながるので、空のブランチを消去していきます。
- 「Brep | Planeコンポーネント」の出力端子Cに「Flattan Treeコンポーネント」を接続し、データをFlattanすることで空のブランチを消去します。
- 「Flattan Treeコンポーネント」を「Graft Treeコンポーネント」を使用してGraftします。これで空のブランチが消去されました。
- 「Boundary Surfacesコンポーネント」を使用して各交線をサーフェイス化していきます。

上画像のように各分割点におけるサーフェイスができていればOKです。
木板の元となるサーフェイスを押し出し

- 「Boundary Surfacesコンポーネント」で作成したサーフェイスの位置を木板の厚みの中心としますので、「Moveコンポーネント」を使用して、厚みの半分の距離移動させます。入力端子Gに先ほど求めたサーフェイスを接続します。
- 「Moveコマンド」の移動させる方向のベクトルを取得していきます。「Perp Framesコンポーネント」の出力端子Fに「Vectorコンポーネント」を接続することで、各Planeに垂直なベクトルを取得できます。
- 「Amplitudeコンポーネント」を使用してVectorの長さを設定します。入力端子Aに木板の厚みとなる数値を入力します。今回は20mmとしています。
- 「Divisionコンポーネント」でベクトルを基準となるサーフェイスの移動距離に直します。板厚の半分なので2で割っております。
- 「Moveコンポーネント」の入力端子Tに「Divisionコンポーネント」の出力端子を接続し基準となるサーフェイスが板厚の半分移動できました。
- 「Extrudeコンポーネント」を使用して移動させたサーフェイスを板厚分押し出していきます。入力端子Bには「Moveコンポーネント」の出力端子Gを、入力端子Dには「Amplitudeコンポーネント」の出力端子に「Negativeコンポーネント」で方向を逆転させたベクトルを接続します。

上画像の様に木板ができていればOKです。最後に「Custom Previewコンポーネント」と「Colour Swatchコンポーネント」を使って好きな色にしてみてください。


以上になります。複雑そうに見えて、実は結構簡単にできてしまいます。初級者向けとなってますので、しっかり中身を理解しながらチャレンジしてみてください!