2023年7月16日日曜日

【Grasshopper_84】Point Deformコンポーネントを使って柔らかい凹凸表現をしてみた


今回のテーマはタイトルにもあるように、Point Deformコンポーネントを使ってキルティングのようなやわらかい凹凸表現を作ってみる方法についてです。

このコンポーネントはサーフェスのCVを移動変形させる機能を持っているため、比較的簡単に画像のような形状が作れるのが特徴です。

Step.1 XY平面上にひし形パターンを作る

・RhinocerosのXY平面上に適当な大きさの四角形を作り、Grasshopperに取り込んでひし形を配置します。

・入力サーフェスのUV方向を入れ替えたり反転させたりする、いわゆる調整用としてIntraLatticeプラグインに含まれているAdjust UVコンポーネントを途中で経由させ、パターン配置範囲を若干量、縮小させるためIsoTrimコンポーネントをその後ろにつないでいます。

・実際のひし形パターン配置はいつもおなじみの、LunchBoxプラグインのものです。

Step.2 ひし形を曲面に追従させる

・LunchBoxプラグインで作る形状は基本的に1次の直線で構成されているため、今回のように平面上に作る場合は目立ちませんが、3D曲面に作ったりするとバキバキした形状になります。よって、曲面になじませるために細工します。

・今回のケースでは、isoCurveコンポーネントを使ってU方向、V方向にそれぞれ5本の曲線を作り、基準となるサーフェスに投影し、NetWorkSrfコンポーネントにつないで新たにひし形サーフェスを作成します。三角のサーフェスは、今回は変形させないため、そのまま投影のみとしています。

・階層合わせのため、随所にShift Pathsコンポーネントを組み込んでいます。

Step.3 CVの位置を外周寄りに移動させる

・後工程で移動させるCVの位置を外周の方に寄せるため、追加で上のような方法で新しくサーフェス化しています。Step.2のノードの中に組み込んでも構いませんが、今回は完成後に追加したため別に組み込みました。

Step.4 移動させる点を選別する

・Step.3で作成したひし形サーフェスをSurface PointsコンポーネントにつないでCVを取り出します。今回のケースでは、隣合うひし形同志は連続性を保たせたいので、外周から2列分の点群はそのままにしておき、3列より内側部分の点群を移動させるため選別します。

・考え方としては、ひとまず全部の点の移動ベクトルを0とし、3列より内側の点群を、後の工程で移動ベクトルを求めてから差し替える方法をとります。

・取り出す情報は、すべての点の移動ベクトルを0に置き換えたものをAll_Vec、Surface Pointsコンポーネントから取り出したすべての点をAll_Pt、移動させる点のインデックス番号をMove_Index、移動させる点そのものをMove_Ptとして計4つです。

Step.5 移動ベクトルの計算

・選別した点群の移動ベクトル計算の部分です。3D曲面上に作ることを想定し、移動方向は各ひし形サーフェスの法線方向としています。

・曲面上の点の移動量は、ひし形サーフェスの中央が大きく、外に向かって徐々に小さくすることを考えたとき、計算式としてはサーフェスのUV座標を使う方法が最も簡単で綺麗に表現できるかなと思います。各ひし形サーフェスの中心のUV座標が(0.5,0.5)ですので、中心点と各点までの距離を三平方の定理で求め、GraphMapperコンポーネントにつないで凹凸の変化量をコントロールし、Remapコンポーネントを使って絶対量のコントロールを行うというものです。

・最後に点を移動させ、Step.4で求めた元の0ベクトルのデータに指定のインデックス番号を使って差し替えたら完成です。

Step.6 3D化する

・Point Deformコンポーネントにつなぐと3D化されます。

Step.7 完成

・最後に、周りの三角形のサーフェスも合体させたら完成です。

・Step.5のGraphをコントロールすると、凹凸量の変化が可能です。


・RhinoにBakeしたあとの縫合もバッチリです。ひし形の部分は、UVの数も同じなので斜め方向に1枚面にすることも可能です。

以上

0 件のコメント:

コメントを投稿

【Grasshopper_98】SporphとSurface Morphingの特徴、違いなどについて

今年もまたGWに突入しましたね。コロナ明けに円安、インバウンド特需のおかげで東京から郊外に出かけると例年以上に混雑に巻き込まれそうなので、昨年と同様、連休中は家に籠ってブログを更新します。今回のテーマは、Surface MorphingとSporphの違いについてまとめてみました。