前回に引き続き小ネタ関連ですが、ポリサーフェスに投影したら、投影曲線の向きがバラバラで、そのあとの立体化の段階で面が壊れてしまう現象がおきました。
原因は、元々の各サーフェスの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点間のベクトルを表示してみます。向きがバラバラな状態であることがわかります。
・Loftでそれぞれのエッジをつないでサーフェス化しました。ところどころ、面がねじれています。
・対策は上の図のような感じです。
・オフセットした側のひし形を、法線ベクトルにしたがって移動させます。
・階層合わせが必要になりますので、先ほど求めた法線ベクトルを、ひし形の4辺分(=4つ分コピー)し、適当な距離で移動させます。
・Edge surfaceやNetwork Surfaceなど、エッジの向きに影響されないコマンドは特に問題ありませんが、Loftはカーブの向きに影響されてしまうためねじれてしまいます。
・Flip Curveコンポーネントを上の図の位置に差し込みます。
・投影前の曲線の向きをガイドとし、投影した曲線の向きを揃えます。階層合わせが必要になるのでG入力にGraftをつけるのを忘れないようにします。その結果、きれいなサーフェスを張ることができます。
元々のサーフェスのUV軸の向きをRhino側で揃える方法もありますが、わざわざ面倒なときはFlip Curveを使って揃える方法をおすすめします。
0 件のコメント:
コメントを投稿