今回は、上画像の様なオブジェクトを生成していきたいと思います。難易度はさほど難しくないです。プラグイン LunchBox を使用しております。インストールは
から。また、TriRemesh コンポーネントを使用しておりますが、こちらは Rhino 7からの機能になりますのでご注意ください。
動画の方がよい方は以下のリンクからどうぞ!
概要
上画像がプログラムの全体像です。各ブロックごとに説明していきます。
Circle Packing
- Sphere コンポーネントで半径 100 の球体を作成します。
- TriRemesh コンポーネントを使用し、球体のサーフェイスを三角形メッシュに構成されたメッシュを生成します。
- kangaroo2 の TangentCircles コンポーネントで CirclePacking を生成する曲線を取得します。
voronoi を使用したパターン 1/2
- BoundingBox コンポーネントで球体を囲う Box を生成し、Scale コンポーネントで Box を 1.1 倍します。
- Populate 3D で Box 内にランダムに点を 400 点生成します。
- Voronoi3D コンポーネントで Box を Voronoi 分割します。
- Brep | Brep コンポーネントで元の球体と Vroronoi との交線を取得します。
voronoi を使用したパターン 2/2
- Clean Tree コンポーネントで List 内の空のブランチを削除します。
- Discontinuity コンポーネントで取得した交線の頂点を取得します。
- PolyLine コンポーネントで取得した頂点をポリラインでつなぎ、閉じたポリラインを生成します。
- Fillet コンポーネントで閉じたポリラインの頂点をフィレットします。
LunchBox を使ったパターン ①
- LunchBox の Quad Panels コンポーネントを使い、球体を四角形で分割します。
- Fillet コンポーネントで角に Fillet をかけます。
LunchBox を使ったパターン ②
- LunchBox の Triangular Panels A コンポーネントで球体を三角形で分割します。
- 空のブランチが生成されてしまうので、CleanTree コンポーネントで不要なブランチを削除します。
- Fillet コンポーネントで角に Fillet を掛けます。
Stream Filter でオブジェクトを切替
- Stream Filter コンポーネントを ValueList コンポーネントで生成した 4 種類のオブジェクトを切替できるようにします。
各曲線を内側にオフセット
- それぞれの曲線を内側にオフセットします。BoundingBox コンポーネントを Per Object にして、曲線を囲う Box を生成し、Volume コンポーネントで Box の中心を取得することで、曲線の中心付近を取得しまます。各曲線が平面になってないパターンがあり Area コンポーネントが使えないパターンがあるのでこのような方法をとってます。
- Scale コンポーネントで取得した中心付近の点を中心にして、各曲線を 0.7 倍して縮小します。
- Entwine コンポーネントで Scale 前と後の曲線を各ブランチに格納し、FlipMatrix コンポーネントで縮小前と後の曲線をペアでブランチに格納します。
曲線間にサーフェイスを生成
- Scale コンポーネントで曲線をすべて縮小し、曲線の集合体の内部に同様の曲線の集合体を生成します。
- ListItem コンポーネントで縮小前と後それぞれ、内側と外側の曲線を取得します。
- Ruled Surface コンポ―ネントで各曲線間にサーフェイス張り Merge コンポーネントでまとめて完成です。
- StreamFilter コンポーネントに接続した ValueList コンポーネントを変えて、別パターンでもうまくいってれば Ok です。
完成