仕事の中で他ソフトから書き出したdwg等の3DモデルをRhinocerosにインポートする際に予期しない閉じたメッシュ面の反転がランダムに起きる事が時々起きるのですが、他ソフト側では正常にモデル作業が成されているようで、どうもデータを書き出して読み込む間に何かしらの問題が発生している事が考えられました。
いくつか方法を考えたうちの一つとして、単純に内向きになった閉じたメッシュのみを反転できるようなものを考えてみました。コードは画像2を参照下さい。
尚、閉じたポリサーフェスの場合はそもそも面の内向きをRhinocerosが許してくれないので今回の事例はあくまでメッシュでの話になります。
コードについて、SolidOrientationというメソッドを利用して面の内向き、外向きを確認しています。
Mesh.SolidOrientation Method
http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Mesh_SolidOrientation.htm
仮に一部のみ面が反転している場合も想定して、UnifyNormalsメソッドを利用して、面の向きを統一する事もしています。
http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Mesh_UnifyNormals.htm
画像1:左から正常な外向きの閉じたメッシュ、内向きの閉じたメッシュ、内にも外にも向いている閉じたメッシュ。
画像2:全選択してコンポーネントにセットした後、ベイクしたもの。正常なメッシュはそのまま、内向きのものは外向きに、内外に向いているものは内に向いているものだけ外に向く。
今回のコンポーネントは閉じたメッシュにのみ動作するもので、他の挙動は確認していませんのでご注意ください。
コメントをするにはログインしてください。