2021年1月30日土曜日

【Grasshopper_39】複数のサーフェスにまたがったパターンの配置方法


久々のGrasshopperネタを投稿してみます。

車のモデリングデータは数多くのサーフェスで構成されているので、複数のサーフェスにまたがってパターンを配置したい場合が出てきます。

平面であれば、新たに一枚のみのサーフェスに張りなおしても、ほぼ誤差のない状態でパターンを配置できるんですが、車のボディーとかシートみたいな、複雑な自由曲面で構成されているところはそれが難しいので、なるべく元のサーフェスを維持したまま配置したいところ。

そんなわけで、今回はこんなやり方をしてみました。もっとこうしたほうがいいよ、みたいなアイデアがあればぜひ、共有させてください。

Step.1 まずは適当なサーフェスを用意


・サーフェスを複数、用意します。形はお好みです。
・サーフェス自体はトリム、アントリムどちらでも大丈夫ですが、結合コマンドを実行したとき1枚のポリサーフェスになるよう、各エッジは指定の誤差の範囲内であることが条件です。

Step.2 用意したサーフェスを1枚化したものを新たに用意


・Step.1で用意したサーフェスに対し、1枚にくっつけた物を追加で用意します。
・アントリムサーフェスであれば、RhinoでMergesrfコマンドを使うとマージされて1枚にまとまります。トリムサーフェスの場合はそれが使えませんので、新しく構成カーブを作ってサーフェスをLoftもしくはNetwork srfコマンドを使って張りなおします。
・後の工程で、元の3枚のサーフェスに戻しますので、ここで作る1枚面は多少は誤差があっても影響はありません。

Step.3 1枚化したサーフェスをXY平面上に展開


・Step.2で作った1枚面に対し、Rhinoのコマンド欄でSquishを実行し、XY平面上に展開サーフェスを作ります。上の図の左側がそれです。

Step.4 展開したサーフェスを張り直し


・Step.3で展開したサーフェスはトリムされた状態のため、エッジを抽出し、LoftあるいはNetwork srfを使ってサーフェスを張りなおします。元の展開サーフェスは捨てて大丈夫です。

Step.5 パターン配置範囲を求める(任意)


・展開したサーフェスに目一杯配置する場合はこの工程はスルーしてください。範囲を少し狭めたい場合は、上の図のように新しくサーフェスを用意します。

Step.6 パターンを2Dサーフェスに配置


・ここからGrasshopperに移ります。
・Step.5で作成したパターン配置用のサーフェスを取り込み、Lunch BoxプラグインのDiamonds Panelを使ってひし形を配置します。Offset on Srfを使ってオフセット曲線を取り出しつつ、中心点も同時に求めておきます。

Step.7 3Dサーフェス(近似面)にマッピング


・Step.6で作成したひし形カーブと中心点を、3Dサーフェスにマッピングします。
・上のノード内で3D近似面と記載している取り込み端子は、Step.2で用意した1枚サーフェスのことです。
・ひし形のカーブはフィレットをかけたうえで、Explodeを使って計8つの辺に分解し、Rebuild Curveを使って3次曲線に変更しています。
・中心点のマッピングは、ノード下側の組み方が簡単かなと思います。

Step.8 元のサーフェス上の点と法線ベクトルを求める


・Step.7で求めた中心点は、あくまで1枚化したサーフェス上のものであり、元の3枚のサーフェス上にはない状態です。そこで、上の図のようにノードを組み、元のサーフェス上の中心点と、その点における法線ベクトルを求めます。
・考え方としては、マッピングした各点と3枚のサーフェスとの最短距離を求め、距離でソートをした上で距離が最も短くなる点を選ぶというものです。

Step.9 元のサーフェスに投影する


・いよいよ投影に移ります。
・投影先は、3枚の元のサーフェスを取り込み、Brep joinで1枚のポリサーフェスにします。
PanelでOpne Brepが一つだけの状態であればokです。複数のOpen brepが出来ている場合はエッジ同志の誤差が大きく1枚とみなされていないため、Step.1に戻って精度を上げてみましょう。
・後の工程で階層合わせが必要なため、Path Mapperを使って階層の深さを1段浅くしていますが、ここはケースバイケースなので、各自の階層を見て調整してください。

Step.10 凸サーフェスを作る


・これまでに作ってきたノードを上の図のように組み合わせて、凸形状を作ります。
・中心点を法線ベクトルに沿って10mm移動させ、投影した曲線の端点との間に直線を結んで3D化しています。

Step.11 穴をあけるための切断形状を作る


・この後の工程でサーフェスに穴をあけるための切断形状を作ります。ついでに、リストの長さも取り出します。

Step.12 サーフェスの穴あけ加工


・今回は3枚のサーフェスをBrep joinで合体させたbrepを加工するので、Split Brepを使います。
・ただし、このSplit Brepの使い勝手が悪く、まとめて穴開けするのができないため、Anemoneというプラグインを使ってループ処理を組み込みます。
※Pythonが組める人はそちらでもOKです。
・処理速度があまり早くないので、完了まで少々時間がかかります。普段はEnableをOFFにしておいたほうがいいです。
・Loop StartのExpression欄は数合わせのためx-1を入力します。


以上で完了です!

0 件のコメント:

コメントを投稿

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

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