今回は上画像の様な、ベンチを作成していきたいと思います。さほど難易度も高くないので、Grasshopper を学習し始めの方も是非挑戦してみてください。こちらのチュートリアルは動画化してるので動画の方がいい方は以下のリンクからご覧いただければと思います。
概要

上画像がプログラムの全体像となっております。大まかな流れは以下の様になっております。
- ベンチ足元の外形を作成
- ベンチ座面の外形を作成
- ベンチ足元のプレート作成①
- ベンチ足元のプレート作成②
- ベンチ座面に厚みを持たせる
- 完成
ベンチ足元の外形を作成

- 「Circleコンポーネント」で円を作成します。今回は、半径2000、中心点は「Construct Pointコンポーネント」・「XY Planeコンポーネント」を使用し(0,0,0)を指定します。
- 「Divide Curveコンポーネント」で作成した円を分割します。今回は100分割しています。
- 「Moveコンポーネント」に「Divide Curveコンポーネント」で取得した分割点を接続します。これらの点をsin波を使用して波打たせていきます。
- 「Divide Curveコンポーネント」の出力端子t から取得できる値を「Remap Numbersコンポーネント」で角度にリマップしていきます。targetには「360×N(上画像では5)」を接続します。
- 角度のリストが取得できたので、「Radiansコンポーネント」でラジアンに変換します。
- 「Sineコンポーネント」でsine波を取得します。
- 取得したsine波の振幅が負の値は0として移動させないようにします。「Maximumコンポーネント」で取得したsine波のリストから負の値を0に置き換えます。
- 「Multiplicationコンポーネント」を使用してsine波の振幅を大きくします。
- 「UnitZコンポーネント」でZ方向のベクトルとします。
- 「Moveコンポーネント」にベクトルを接続します。点が波打ったかと思います。
- 「Scaleコンポーネント」で波打たせた点を縮小し、ベンチの内側を取得します。今回は0.5倍としています。
ベンチ座面の外形作成

- 波打たせた点、それを縮小させた点をそれぞれ「Interpolateコンポーネント」で曲線化します。入力端子Periodicを「Invert」して閉じた曲線とします。
- 「Scaleコンポーネント」でそれぞれ拡大します。今回は1.2倍しています。
- 「Rotateコンポーネント」で回転させます。上画像では0度としてますが、座面を回転できるようにしておきます。
- 「Moveコンポーネント」でZ方向に移動させます。今回は400移動させています。
ベンチ足元のプレート作成①

- 「Lineコンポーネント」で最初に波打たせた点、それを縮小した点をそれぞれ直線で結びます。出力端子は「Simplify」しておきます。
- 次に前項でZ方向に移動させた座面の曲線を「Divide Curveコンポーネント」で分割していきます。分割数は一番最初に円を分割ときの分割数を使用します。
- 「Explode Treeコンポーネント」で内側の曲線の分割点、外側の曲線の分割点をそれぞれ取得します。
- 「Lineコンポーネント」で内側の曲線の分割点、外側の曲線の分割点を直線でつなぎます。出力端子は「Simplify」しておきます。
- 「Ruled Surfaceコンポーネント」で2つの「Lineコンポーネント」で作成した直線の間にサーフェイスを張ります。上画像の様にサーフェイスができていればOKです。
ベンチ足元のプレート作成②

- 前項で作成したサーフェイスに厚みを持たせていきます。「Extrudeコンポーネント」に作成したサーフェイスを接続します。
- 「Evaluate Surfaceコンポーネント」でサーフェイスに沿った平面を取得していきます。入力端子Sを「Reparametrized」して、入力端子uvに「MDsliderコンポーネント」で(0.5,0.5)を入力していきます。
- 「Evaluate Surfaceコンポーネント」の出力端子Fからサーフェイスに対して垂直なベクトルが取得できています。「Amplitudeコンポーネント」に接続してベクトル長さを再設定します。今回は20としています。
- 「Reverseコンポーネント」でベクトルの正負を逆転して「Extrudeコンポーネント」の押し出し方向に接続します。
ベンチ座面に厚みを持たせる

- 「List Itemコンポーネント」を2つ用意し、ベンチ座面の外側曲線・内側曲線をそれぞれ取得します。
- 「Ruled Surfaceコンポーネント」で取得した曲線の間にサーフェイスを張ります。
- 「Extrudeコンポーネント」でZ方向に押し出します。今回は20押し出しています。
完成



以上になります!「Number Sliderコンポーネント」で設定したパラメーターを変更していろんな形状を試してみてください。