建設的なソリッド ジオメトリテクニックを使用してシェイプを構築する場合、レンダリング用のワイヤフレーム メッシュを構築するにはどうすればよいですか? CSG シェイプを直接レンダリングするアルゴリズムは知っていますが、一度だけワイヤフレーム メッシュに変換して、「通常どおり」レンダリングできるようにしたいです。
もう少し詳細を追加します。「ここに立方体、ここに球体との交点、ここに円柱を引く」などの形状の説明があれば、ポリゴン メッシュを計算できるようにしたいと考えています。
建設的なソリッド ジオメトリテクニックを使用してシェイプを構築する場合、レンダリング用のワイヤフレーム メッシュを構築するにはどうすればよいですか? CSG シェイプを直接レンダリングするアルゴリズムは知っていますが、一度だけワイヤフレーム メッシュに変換して、「通常どおり」レンダリングできるようにしたいです。
もう少し詳細を追加します。「ここに立方体、ここに球体との交点、ここに円柱を引く」などの形状の説明があれば、ポリゴン メッシュを計算できるようにしたいと考えています。
これらのライブラリは、あなたが望むことをしているようです:
www.solidgraphics.com/SolidKit/carve-csg.com/gts.sourceforge.net/
「三角多面体の構成立体幾何学」(1990) Philip M. Hubbard doi:10.1.1.34.9374も参照してください。
役に立つと思われる Google Scholar のリンクをいくつか紹介します。
要約から分かることは、基本的な考え方は、CSG モデルで利用可能なボリューム データからポイント クラウドを生成し、次にいくつかのより一般的なアルゴリズムを使用して 3D で顔のメッシュを生成し、そのポイント クラウドに適合させることです。
編集:さらに調査を行うと、この種の操作は「CSGからB-Rep(境界表現)への変換」と呼ばれます。その文字列を検索すると、便利な PDF が表示されます。
http://www.scielo.br/pdf/jbsmse/v29n4/a01v29n4.pdf
さらに詳しく説明すると、重要なアルゴリズムは「マーチング キューブ アルゴリズム」と呼ばれます。基本的に、CSG モデルを使用してボクセルを含むオブジェクトのボリューム モデルを作成し、マーチング キューブ アルゴリズムを使用してボクセル データから 3D メッシュを作成します。
私はBRL-CADアプリケーションMGEDで運が良かったので、CSGを使用して平面を交差させ、コマンドラインのg-stlコマンドを使用して境界表現を抽出することにより、凸多面体を構築できます。http://brlcad.org/Malcolmを確認して ください
入力プリミティブを多面体メッシュに変換できる場合は、libigl の C++ メッシュ ブーリアン ルーチンを使用できます。以下は、メッシュ (VA、FA) と別のメッシュ (VB、FB) の結合を計算します。
igl::mesh_boolean(VA,FA,VB,FB,"union",VC,FC);
ここで、VA は頂点位置の 3 行列による #VA であり、FA は VA への三角形インデックスの 3 行列による #FA などです。libigl で使用される手法は、Joe の回答で言及されている 2 つの手法とは異なります。三角形のすべてのペアが互いに交差し (空間加速度を使用)、結果のサブ三角形が出力サーフェスに属するかどうかに分類されます。