深度ソートを使用して基本的なオブジェクト透明度を行っています。深さのI /(Z1 + Z2 + Z3)、(Y1 + Y2 + Y3)/ 3、/ 3カメラからiは、{(X1 + X2 + X3)として計算モデルの三角形のすべての中心に(二乗)距離を使用します3}。結果はほぼ良好ですが、いくつかの間違いがあります。 OpenGL深度ソート
をソートして
をソートせずに
猿の頭は私がこれらのエラーについて何かできることはありますか?
深度ソートを使用して基本的なオブジェクト透明度を行っています。深さのI /(Z1 + Z2 + Z3)、(Y1 + Y2 + Y3)/ 3、/ 3カメラからiは、{(X1 + X2 + X3)として計算モデルの三角形のすべての中心に(二乗)距離を使用します3}。結果はほぼ良好ですが、いくつかの間違いがあります。 OpenGL深度ソート
をソートして
をソートせずに
猿の頭は私がこれらのエラーについて何かできることはありますか?
完璧な方法で三角形をソートする方法はありません。 opengl.org wikiのTransparency Sortingの記事の最後の例を見てください。
@kos: Order Independent Transparency with Dual Depth PeelingとAlpha to Coverageをご覧ください。
あなたは画面整列粒子を持っている場合を除き、任意の三角形をソートすることは実際にはかなり困難です。完璧な結果を得るには、三角形の分割を開始する必要があります。
@tiburが言うように、あなたはいくつかの簡単な近似で逃げることができますが、order-independent transparency(OIT)はあまりにもまともなソリューションです。ただし、OpenGL 3時代のグラフィックス機能が必要です。私はいくつかの方法を示しimplementation available on githubは、正確な OITはかなり速いようにする必要があります。
"adaptive transparency"、 "multi-layer alpha blending"、 "hybrid transparency"をご覧ください。これらは、おおよその近似解ですが、一般的な場面では非常に良い結果をもたらします。
いくつかの類似した質問...
あなたはそれをソート助けることができる体について何かを知っていれば、数学的に言えば。
は、例えば立方体の面が深さは、単独重心(面中心)でソートすることができます。正方形の面Aの中心がBの中心より近くにある場合、BはAの前に決して存在しません(また、立方体の場合)。
実際に凸面の場合、面はオリエンテーションだけでソートされています。
固定機能またはプログラマブルパイプライン? – genpfault
が修正されました。私は、距離の配列を作成し、それを並べ替えると、インデックス配列内の対応する値を交換、最後にglDrawElements。 – spacevillain