今月は、2年ほど前にYoutubeに投稿されていた、subD形状を変形させる仕組みを簡易再現する方法を紹介します。
元ネタのYoutube動画のリンクを貼っておきます。
Grasshopperのノード自体は公開されていないため、詳細な部分までは再現できていませんが、基本的な考え方は同じかなと思います。
必要なプラグインは、LunchBoxとWeaverbirdです。
Step.1 XZ平面上に六角形を配置する
・XZ平面上に四角形を作り、その中にLunchBoxプラグインに入っているHexagon Cellsコンポーネントを使って六角形を敷き詰めます。・縦方向の個数(今回のケースではV方向の数)は奇数個のほうが形が綺麗になります。
・tパラメーターは-1から0.5ぐらいの範囲で動かします。
Step.2 純粋な六角形を取り出す
・外周部の半欠け六角形を省くため、Explodeコンポーネントにつないで辺を分解し、6本かどうかを判定し、Cull Patternコンポーネントにつないで純粋な六角形のみ選別します。Step.3 六角形を縦列ごとに階層分けする
・後の工程のことを考えて、一つの階層になっている六角形を、縦列ごとに階層分けをします。・手順
①Areaコンポーネントにつないですべての六角形の中心点を求める
②求めた中心点の、X座標値を取り出し、その数値で六角形の順番をソートする
③X座標値は整数値のみ使いたいので小数点の左と右で分離して左側(整数部分)のみ取り出す
④Create SetsとEqualsコンポーネントを組み合わせて階層分けするためのTrueとFalseに変換する
⑤Cull Patternコンポーネントにつないで階層分けを実行する
Step.4 Z方向で順番を揃える
・Step.3の状態だと、Z方向に順番が揃っていないため、先ほどと同じくAreaとDeconstructコンポーネントを使って六角形の中心点のZ座標値を取り出し、ソートします。・List Itemコンポーネントにつないで、一番下の六角形が選択されたらOKです。
・ひとまず、六角形の前半部分は完了です。Hex_Crv_Aと名前をつけて、次に進みます。
・ここまでの状態で、Hexagon Cellsコンポーネントのtパラメーターをマイナス側にすると、上の画像のように隣り合う六角形が干渉してしまうので、これを解消する仕組みを次の手順から作っていきます。
Step.5 左右の三角部分のカット
・まずは左右の小さな三角形部分を除去するため、六角形を辺に分解し、三角部分に相当する4本をそれぞれ交点を求めてカットし、再び結合します。上の図の緑色の状態です。・作業のしやすさを考えて、六角形の一番上と一番下の行はCull indexコンポーネントの0と-1指定で外しています。
・隣同志の六角形はShift Listコンポーネントの1と-1で指定し、それぞれ相関をとってカットすると上の画像のようになります。(Shift ListコンポーネントのwはいずれもFalseです)
Step.7 六角形にまとめる
・最後に上の端点間、下の端点間をLineでつなぎ、結合して六角形の閉曲線にします。この六角形をHex_Crv_Bという名前にします。・階層を合わせるため、最後にShift Pathコンポーネントにつないでいます。
・黄色のパネルに表示されている階層になればOKです。
Step.8 切り替えスイッチを作る
・Step.4で作成したHex_Crv_Aの方も、数と階層を合わせるため、Cull Indexコンポーネントの0と-1指定で一番上と一番下の六角形を削除し、Shift PathコンポーネントにつないでHex_Crv_Bと条件をそろえてからStream Filterコンポーネントにつなぎます。・Stream Filterコンポーネントは、簡単にいうと切り替えスイッチの役割を果たします。0か1(もしくはTrueかFalse)をG入力につなぐと、それに応じて0と1の入力データが切り替わります。電車の線路のポイント切り替えみたいな感じですね。
・今回は、Hexagon Cellsコンポーネントのt入力値がプラスかマイナスでHex_Crv_AとHex_Crv_Bを切り替えるので、t入力をLarger Thanコンポーネントにつないで0以上か否かを判定し、TrueもしくはFalseの値で切り替えるようにしました。
Step.9 奥側の六角形を作る
・六角形の内側部分をScale NUコンポーネントにつないで作り、Y方向に移動させます。Step.10 subD化して完成させる
・一番最後の工程です。ここが一番の肝になります。・まずはStep.8で作成した、切り替え後の六角形とStep.9で作成した、スケールダウンさせた六角形の間にLoftコンポーネントにつないでNurbsサーフェス化します。六角形はポリカーブになっているので、Explodeコンポーネントにつないで辺に分解してからLoftにつなぐときれいに折れた状態のサーフェスになります。Loft Optionはストレートを選んでいますが、他の設定でもほぼ同じです。
・その後ろで、Simple Meshコンポーネントにつないでメッシュに変換します。なるべく単純なメッシュにすると形がきれいになりますので、Simple Mesh以外は使わないほうがいいです。
・その後ろに、バラバラ状態のメッシュを結合してウェルド作業をさせるため、WeaverBirdプラグインに含まれているJoin Meshes and Weldコンポーネントにつなぎます。W入力はTrueに設定します。
・その後ろで、SubD from MeshコンポーネントにつないでsubDサーフェスに変換します。I入力はTrueです。これにより、SubD特有のヌメヌメした形になります。
・最後に、Mesh from SubDにつないでメッシュに戻します。D入力はメッシュの密度に関するパラメーターで、お好みで設定します。最後のメッシュ化は特に必須ではありませんが、トップ画像のように網目の構成カーブを表示させたいときはメッシュ化が必要ですね。
0 件のコメント:
コメントを投稿