今回は上画像の様な、パビリオンを作成していきたいと思います。Sin 波を使用した簡単な例となっております。是非実装してみてください。こちらのチュートリアルは動画化しているので、動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がプログラムの全体像となっております。
各ブロックごとに説明していこうと思います。
基準円の作成
- 基準となる円を作成します。Circle コンポーネントで半径 10m の円を作成します。
- Divide Curve コンポーネントで作成した円を分割します。今回は 10 分割しています。
- List Item コンポーネントで円の分割点の最初の点を取得します。
- Insert Items コンポーネントで取得した最初の点を、リストの一番最後に挿入します。
Sin 波の作成
- パビリオンを波打たせるための Sin 波を作成します。Length コンポーネントで円の長さを取得します。
- 先ほど使用したDivide Curve コンポーネントから取得できる、円上での位置を表す t 値のリストに、Insert Items コンポーネントでリストの最後に円の長さを挿入します。
- Remap Numbers コンポーネントで作成した t 値のリストを角度のリストにリマップします。Bounds コンポーネントでリストの最大値から最小値までのドメインを取得して、入力端子 S(Source)に接続します。
- Remap Numbers コンポーネントの入力端子 T(Target)は-360 の倍数を入力します。今回は 3 倍の -1080 を入力します。
- Radiuns コンポーネントでリマップされた角度のリストを弧度法に直します。
- Sine コンポーネントで弧度法に直したリストをもとに Sin 波を生成します。
- Multiplication コンポーネントで取得した Sin 波の振幅を大きくします。今回は 2500 を掛けています。
- Unit Z コンポーネントで Z 方向のベクトルに変換します。
分割点を Sin 波で移動
- Move コンポーネントで最初に作成した、分割点のリストを先ほど作成した Z 方向のベクトルで移動させます。
- Interpolate コンポーネントで移動させた点を通る曲線を作成します。入力端子 Periodic を Invert して閉じた曲線とします。
- Scale コンポーネントで作成した曲線を縮小して複製します。今回は 0.2 倍しています。
- Divide Curve コンポーネントで縮小前と後の曲線をそれぞれ分割します。今回は 100 分割しています。縮小した方の分割点のリストはGraftしておきます。
Pavilion 先端位置を決める
- 先ほどDivide Curve コンポーネントで分割して取得した、縮小前の曲線の分割点のリストをMove コンポーネントで Z 方向に移動させます。今回は 2000mm 移動させています。出力端子はGraftします。この点が Pavilion の先端になります。
- Merge コンポーネントで移動させた分割点のリストと、先ほど作成した曲線の縮小後の分割点のリストを結合します。
Pavilion の足元位置を決める
- Point コンポーネントで縮小後の分割点のリストを取得します。
- Project コンポーネントで取得した分割点のリストを投影します。今回は投影先に(0,0,-3000)を原点とした XY 平面としています。この位置が Pavilion の足元になります。
Pavilion のベースとなる曲線を作成
- Merge コンポーネントで分割点のリストと投影した分割点のリストを結合します。
- Nurbs Curve コンポーネントで結合したリストを使用し、各点を通る Nurbs Curve を生成します。今回は入力端子 D(Curve Degree)には 2 を入力しています。
Pavilion の外形となるサーフェイス生成
- Offset Curve コンポーネントで先ほど作成した Nurbs Curve をオフセットします。今回はオフセット距離を 300mm としています。
- Ruled Surface コンポーネントでオフセット前と後の Nurbs Curve の間にサーフェイスと張ります。
- Relative Item コンポーネントで前項で作成した Nurbs Curve のリストのパスを1つずらします。入力端子 T はSimplifyし、入力端子 O には{1}を入力します。入力端子 Wp はInvertしておきます。
- Ruled Surface コンポーネントで先ほどオフセットした Nurbs Curve と Relative コンポーネントでパスと 1 つずらした Nurbs Curve の間にサーフェイスを張ります。
- Merge コンポーネントで作成したサーフェイスをまとめます。これで完成です。
完成
以上になります!Sin 波を使用した簡単な例となってます。是非挑戦してみてください!
【参考文献】