2013-10-23 8 views
5

私はQGLWidgetを使用して3Dオブジェクトを描画しています。私のプログラムへの入力は、図形の面です。QGLWidget - 3次元中空オブジェクトの断面図

私がキューブを描きたいとき、それぞれが顔を表す6つの要素のリストを得て、各面は各点に対して4つの点(x、y、z)を含むということを意味する。

図面は完成しましたが、断面図を実装しようとしていますが、断面後の結果図形は中空のオブジェクトですどのように図形がくぼんでいないかのように断面結果を取得できますか?

+1

オブジェクトの一部をクリップし、内側にvoidの面を塗りたい –

+0

@ratchet freak:yes。 –

答えて

9

OpenGLは「オブジェクト」を認識しません。それは "固体"または "中空"を知らない。すべてのOpenGLの知識は点、線、三角形です。オブジェクトをしっかりと見せたい場合は、切り抜いたオブジェクトのジオメトリを計算して、新しいメッシュを作成しなければなりません。これを描画の入力データとして使用します。

カットアウトプロセスは、「ブーリアン幾何演算」としても知られている一連の演算の一部であり、「建設的なソリッドジオメトリ」とも呼ばれます。あなたがGoogleの場合は、十分な情報を見つけることができます。

2

あなたが達成しようとしていることは、2つのジオメトリオブジェクトにいくつかのboolean operationがあると思います。この目的のために、Boostに完全なジオメトリライブラリがあり、このアルゴリズムのうちの1つが必要です:diffまたはintersection。 例を挙げれば、特定のオブジェクト構造に対して簡単に変更することができます。