非凸多面体オブジェクトにブール演算を実装し、それらを OpenGL でレンダリングしたいと考えています。多面体でブール演算を行うための 2 つの主要な手法について読んだことがあります。境界表現 (BReps) と構成的立体幾何 (CSG) です。いくつかの論文によると、CSG でブール値を実装する方が簡単なはずなので、BRep ではなく CSG を使用することを考えています。BRep は頂点とポリゴンによってジオメトリを記述しますが、CSG は、ツリー構造内で結合される円柱や球などの基本的なプリミティブ オブジェクトを使用します。BRep でブール値を実行することは、交差しているポリゴンを切り取り、不要なポリゴンを削除することによって実装されることを知っています (操作が和集合か差か...)。しかし、ブール演算は CSG に関してどのように実装されるのでしょうか? CSG ブール演算を実装するにはどうすればよいですか? 私はすでにインターネットを見ていて、たとえばこれを見つけましたhttp://evanw.github.io/csg.js/またはhttps://www.andrew.cmu.edu/user/jackiey/resources/CSG/CSG_report.pdf 興味深いことに、これらのアルゴリズムは単に BRep を使用してブール値。そのため、CSG の利点がどこにあるのか、または CSG ブール値の実装がより簡単な理由がわかりません。
8367 次
3 に答える
0
私の意見では、CSGはまったく簡単ではありません
- しかし、それはより正確です
- 使用されている円柱、球などはありません...
- 代わりに、曲線の回転面が使用されます
CSG の操作
- 同じ軸を持つ回転面で (bool) 操作を行う場合
- 次に、曲線で操作を行うだけです...(これは、CSGがBRepよりも優れている場所です)
- 軸が同じでない場合は、CSG ツリーに新しいエントリを作成する必要があります
- また、互換性のあるオブジェクトに対する操作 (同じ結合/交差面でのボックスの結合/切断など) は、それらのサイズを更新するだけで実行できます ...
- しかし、ほとんどの実装はそのようなことを行わず、代わりにすべての操作がツリーに格納されます
- これにより、ツリーの変更後にレンダリングが遅くなります
- また、レンダリングは、それ自体の操作中ではなく、レンダリングまたはプリレンダリング段階ですべての操作を実行する必要があります
- これにより、CSG の実装がより複雑になります。
- 私が見た唯一の利点は、モデルが分析表現を持つことができることです
- 特に複数の操作がその上にある場合、これははるかに正確です...
于 2014-09-25T07:27:34.683 に答える