2022年1月29日土曜日

【Grasshopper_54】ポリサーフェスに投影したら、曲線の向きがバラバラになる現象の対策法

前回に引き続き小ネタ関連ですが、ポリサーフェスに投影したら、投影曲線の向きがバラバラで、そのあとの立体化の段階で面が壊れてしまう現象がおきました。

原因は、元々の各サーフェスのUV座標の向きがバラバラだったのが原因ですが、ひとまず対処法を考えて見ました。

・上の図のように、UV座標軸の向きがバラバラな12枚のサーフェスを用意しました。

・作ったサーフェスの真下に、XY平面上に適当なパターンをGrasshopper上で配置します。

・ひし形と、それを0.2倍にスケールダウンしたひし形、及び中心点を取り出します。

・12枚のサーフェスをBrep Joinコンポーネントを使ってポリサーフェス化し、1枚のOpenBrepになっていることを確認してから、2種類のひし形を投影します。

・同時に、投影したひし形ごとの法線ベクトルを求めます。
考え方としては、Project Pointコンポーネントで投影した点1つにつき12枚のサーフェスすべての最短の点をFind Closest Pointコンポーネントを使って求め、D出力(距離)のデータを使って並び替えをします。その並び変えた順番を使い、投影した各点ごとに、UV座標とサーフェスそれぞれのリストの0番目(=最も近いサーフェス及びそのUV座標)を取り出し、最後にEvaluate Surfaceコンポーネントを使って法線ベクトルを求めます。

・投影した六角形のうち1辺の両端点を求め、2点間のベクトルを表示してみます。向きがバラバラな状態であることがわかります。

・オフセットした側のひし形を、法線ベクトルにしたがって移動させます。

・階層合わせが必要になりますので、先ほど求めた法線ベクトルを、ひし形の4辺分(=4つ分コピー)し、適当な距離で移動させます。

・Loftでそれぞれのエッジをつないでサーフェス化しました。ところどころ、面がねじれています。

・Edge surfaceやNetwork Surfaceなど、エッジの向きに影響されないコマンドは特に問題ありませんが、Loftはカーブの向きに影響されてしまうためねじれてしまいます。

・対策は上の図のような感じです。

・Flip Curveコンポーネントを上の図の位置に差し込みます。

・投影前の曲線の向きをガイドとし、投影した曲線の向きを揃えます。階層合わせが必要になるのでG入力にGraftをつけるのを忘れないようにします。その結果、きれいなサーフェスを張ることができます。

元々のサーフェスのUV軸の向きをRhino側で揃える方法もありますが、わざわざ面倒なときはFlip Curveを使って揃える方法をおすすめします。

0 件のコメント:

コメントを投稿

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

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