今回は、上画像の様な三角形の表面を折りたたんだようなものを作成していきます。ついでにカウンターもつくってバーカウンターみたいにしています。若干ボリュームのあるチュートリアルかもしれませんが、Panelコンポーネントでデータの中身を確認しながら進めていただければと思います。また、内部のバーカウンターの様なものは、LunchBoxとWeaverbirdというプラグインを使用しております、インストールしていなければこちらからインストールできます⇒ (LunchBox, weaverbird)
こちらのチュートリアルは動画化しております、動画の方がよい方は以下のリンクからどうぞ!
目次
概要

上画像がプログラムの全体像となっております。各ブロックごとに説明していこうと思います。
基準となる円弧を作成

- Arcコンポーネントで半径3000、中心角度120度の円弧を生成します。
- Perp Framesコンポーネントで生成した円弧に直行する平面を生成します。
- 作成した平面にArcコンポーネントで更に円弧を生成します。今回は、角度のドメインを20度~230度としています。
- 生成した円弧をDivide Curveコンポーネントで分割します。今回は14分割しております。
分割点のオフセット

- 生成した分割点の一部を円弧の内側にオフセットしていきます。Scaleコンポーネントで分割点を円弧の中心点を基点に0.9倍縮小します。
- Dispatchコンポーネントで奇数番目と偶数番目の点を分けます。
- List Lengthコンポーネントで各円弧上の点の数を取得します。
- Seriesコンポーネントで点の0~数まで1ずつ増える数列を取得し、Dispatchコンポーネントで偶数と奇数を分けます。
- Replace Itemコンポーネントで元の円弧上にあった分割点のリストの一部をオフセットした点に置き換えていきます。今回は、奇数番目の円弧に関しては、奇数番目の分割点をオフセットし、偶数番目の円弧は、偶数番目の分割点をオフセットしたものに置き換えます。
- Replace Itemコンポーネントに元の分割点のリストを接続し、DispatchコンポーネントのBの端子から取得できる、奇数番目の点にを置き換えるItemとして接続します。置き換えるIndex番号は、先ほど取得した数列の奇数のリストを接続します。これで、分割点のうち、奇数番目の点が円弧の内部にオフセットされました。
- Replace Itemコンポーネントをもう1つ用意し、偶数番目に関しても同様な処理をし、偶数番目の点がオフセットされたリストを取得します。
- これらのうち、奇数番目の円弧には、奇数番目の点がオフセットされている分割点を、偶数番目の円弧は偶数番目のものを割り当てていきます。
- Split Treeコンポーネントで特定のブランチを取得していきます。Tree StaticsコンポーネントでブランチのPathが取得できるので、Dispatchコンポーネントで奇数番目のPathを取得し、Split Treeコンポーネントに接続します。
- 偶数番目の方も同様に処理します。
- Mergeコンポーネントでまとめて目的とする点を取得できました。
(※ややこしかったかと思いますが、Polylineコンポーネントを接続してみると何をやっていたかわかりやすいかと思います。↓)

三角形サーフェイスの生成

- 先ほどの分割点を頂点とする三角形を生成していきます。ここも若干ややこしいので、Point List などで各点の番号を確認しながらやることをお勧めします。
- 結ぶ点としては、ある点A1からみて、円弧上の次の点A2、隣の円弧上の点B1、(A1,A2,B1)で1つの三角形、もう1つの三角形はB1から見て、B1の円弧上にある次の点B2、隣の円弧の点A2、(B1, B2,A2)でもう1つの三角形となります。
- Relative Itemコンポーネントでブランチを1オフセットします。
- Shift Listコンポーネントでブランチ内のリストを1つずらします。
- 4PointSurfaceコンポーネントで三角形を生成します。Relative ItemコンポーネントのAの端子からA1の点を取得し、Shift ListコンポーネントからA2の点を、Relative ItemコンポーネントのBの端子からB1の点を取得します。(A1,A2,B1)の三角形が完成です。
- (B1, B2,A2)も同様に結んでいきますが、先ほど生成した三角形サーフェイスと法線方向を合わせるために、B1⇒A2⇒B2の順に反時計回りに接続します。上画像の様に、三角形サーフェイスが折たたまれたよううな形状が完成します。
三角形サーフェイスの押し出し

- 先ほど生成した三角形サーフェイスをEntwineコンポーネントでまとめます。ブランチ状態を保持したいので、Graftでまとめます。
- Areaコンポーネントで各サーフェイスの中心点を取得します。
- Scaleコンポーネントで取得した中心点を基点に三角形サーフェイスを縮小します。今回は0.6倍してます。
- Plane Originコンポーネントで三角形の中心点Originとした平面を取得します。ここから面外方向に向いた法線ベクトルを取得できるので、Amplitudeコンポーネントでベクトル長さを30に再設定します。
- Moveコンポーネントで先ほど縮小した三角形を面外方向に移動させます。
- Brep Edgesコンポーネントで縮小前の三角形と移動後の縮小された三角形のエッジを取得し、Ruled Surfaceコンポーネントでエッジ間にサーフェイスを生成します。
- Mergeコンポーネントで縮小前の三角形、縮小後の移動した三角形、その間を結ぶサーフェイスをまとめておきます。
内部側にフレームを生成

- 分割点を移動させたのリストのとこまで戻り、点をPolylineコンポーネントでつなぎます。
- Offset Curveコンポーネントで内部側に100オフセットします。
- Weaveコンポーネントでオフセット前と後のポリラインをセットでまとめ、Loftコンポーネントでサーフェイスを張ります。
- Areaコンポーネントで生成したサーフェイスの中心点を取得し、Plane Originコンポーネントで法線方向のベクトルを取得します。
- Extrudeコンポーネントで法線方向に10押出し、押し出したものをMirrorコンポーネントで複製し完成です。Mergeコンポーネントでまとめておきましょう。
カウンターの作成

- ここからはおまけみたいなものですが、バーカウンターの様なものを作成していきます。
- 最初に生成した円弧をOffset Curveコンポーネントで400と‐200オフセットします。
- Weaveコンポーネントでまとめ、Loftコンポーネントでサーフェイスを張ります。
- ExtrudeコンポーネントでZ方向に -900押し出します。
サーフェイスをグリッド分割

- 生成したBrepをDeconstruct Brepコンポーネントで分解し、List Itemコンポーネントで上面と底面を取得します。
- LunchBoxプラグインの。Quad Panelsコンポーネント四角形に分割します。u方向は5分割v方向は10分割としています。
- Scaleコンポーネントでで分割した四角形を縮小します。基点は各四角形の中心点とします。
- Explode Treeコンポーネントで上面のサーフェイスと底面のサーフェイスを分けて取り出します。
上下のサーフェイス間にサーフェイスを張る

- Partition Listコンポーネントで上下のサーフェイスをそれぞれ長手方向10枚ずつブランチに分けていきます。
- Dispatchコンポーネントで偶数番目のサーフェイスと奇数番目のサーフェイスに分けます。
- Ruled Surfaceコンポーネントで上面の偶数番目のサーフェイスと底面の奇数番目のサーフェイス、上面の奇数と底面の偶数サーフェイスを結びます。
- Flip Matrixコンポーネントで長手方向に5つブランチに入っているBrepを短手方向に5つブランチに格納していきます。
- Dispatchコンポーネントで奇数番目と偶数番目に分け、片方ずつ取り出してMergeコンポーネントでまとめます。上画像の様にX状に取得できていればOKです。
Weaver birdで加工

- 先ほどX状に取得したBrepを加工していきます。LunchBoxプラグインのTriangle Panels Bコンポーネントで三角形パネルに分割します。
- Simple Meshコンポーネントでメッシュ化します。
- Weaverbird's Picture Frameコンポーネントでメッシュのエッジから一定距離を残してくりぬきます。
- Weaverbird's Mesh Thickenコンポーネントで厚みを持たせます。
カウンター天板生成

- カウンターの天板を生成します。Deconstruct Brepコンポーネントから上面のサーフェイスを取得してきます。
- LucnchBoxプラグインのQuad Panelsコンポーネントで四角形に分割していきます。u方向は10、v方向は80分割します。
- List Lengthコンポーネントで分割した四角形の枚数を取得し、Randomコンポーネントで枚数分のランダムな数字を取得します。20~40で取得しております。
- ExtrudeコンポーネントでZ方向に押し出します。押し出し距離は先ほど取得したランダムな値で押し出します。
完成

最後に作ったものをMergeコンポーネントでまとめ、Custom PreviewコンポーネントとColour Swatchコンポーネントで色付けして完成です。

以上になります。今回は、データツリーをしっかり理解していないと難しかったかと思います。Panelコンポーネントで中身を確認しながら1つ1つ理解して進めていっていただければと思います。