私はシャツのモデルを配置できる3Dヒューマノイドモデルを持っています。この状態では、OpenGLレンダリングは典型的なzファイティングの問題を抱えています。唯一の解決策は隠れた頂点がレンダリングされないようにすることです。隠れた頂点が自動的にレンダリングされないようにする方法や、隠れた頂点を削除するアルゴリズムを自動的に回避する方法はありますか?オープンループの3Dモデルの隠れた頂点を削除する
答えて
ステンシルバッファを使用するのが比較的簡単です。アイデアは簡単です。まず、glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE)
とglStencilFunc(GL_ALWAYS, 1, 1)
でシャツを描きます。これは、あなたがシャツを描くときはいつでもステンシルバッファにビットを設定します。次に、モデルをglStencilOp(GL_KEEP, GL_KEEP, GL_KEEP)
とglStencilFunc(GL_NOTEQUAL, 1, 1)
で描画します。これは、シャツが既に描いているピクセルに触れない場合にのみモデルを描画します。
欠点に関する注意:モデルを分割して問題のあると思われるセクション(胴体)にのみ適用する必要があります。そうしないと、モデルのシャツ上に描画される他の部分が遮られます(腕を言う)。最良の結果を得るには、シャツの裏面を刈るようにしてください。それは従って、多かれ少なかれランダム精度のばらつきに起因する画素ごとのある前に表示される同じ深さで、すなわち異なる面本物のz戦闘が、なら
、またglPolygonOffset
溶液を考える - GL_POLYGON_OFFSET_FILL
を有効にして(glPolygonOffset(1.0, 1.0)
を呼び出しますあなたが好きな場合は他の引数を使用してください; 1.0
はロットです)。オフセット充填を無効にするか、または同じ効果を持つglPolygonOffset(0.0, 0.0)
に続いてボディを描画します。
ポリゴンオフセットは、ジオメトリテストの対象となる前に、ジオメトリの深さ値をわずかにずらすように機能します。これは多かれ少なかれオフセットを与えたものがオフセットなしのものの後ろに同じか、少しだけ後ろにある限り前にあるべきだと言います。
- 1. 頂点の頂点を頂点で4.2で検証する
- 2. CのiGraphグラフの最大次数の頂点を削除
- 3. 頂点シェーダとフラグメントシェーダから法線を削除します
- 4. ポリゴン座標/頂点/ノード(GoogleマップV3)の削除方法
- 5. Three.jsのBufferGeometryから頂点とその属性を削除する
- 6. 3Dエンジン - 頂点の分割を正しく行う方法
- 7. 頂点シェーダ対頂点
- 8. 頂点からの頂点バッファ
- 9. テクスチャデータを頂点シェーダの頂点データとして解釈する
- 10. iPhone Cheetah 3D OpenGL ES頂点バッファオブジェクト(VBO)の例
- 11. 3D点群とCADモデルを一致
- 12. グラフの頂点のカバー - 同程度の頂点の混乱
- 13. JComponentとしてレンダリングされた頂点
- 14. 頂点シェーダのテクスチャルックアップ
- 15. 原点を見つけるスケーリングの3Dモデル
- 16. モデルを削除した後の関連付けを削除する方法
- 17. 複数のUV座標と頂点ごとのカスタム属性を持つ3Dモデルフォーマット
- 18. Djangoのモデル:()を削除
- 19. ボタンの点線を削除する
- 20. バックボーン削除モデル
- 21. jquerymobile隠しページを削除する
- 22. Railsネストされたモデル - アソシエーションを削除する
- 23. XNA - 頂点ストリーム?
- 24. 非ハッシュタイプ:「頂点」
- 25. バウンディングボックスの頂点を計算する
- 26. THREE.BufferGeometryオブジェクトの頂点を変更する
- 27. 頂点の数を計算するアルゴリズム
- 28. Blenderスクリプティング:選択した頂点のインデックス
- 29. VBOs Cでインターリーブされた頂点を使用する
- 30. 3Dアレイを3Dモデルに変換する
実際にZと戦っていて、交差していない場合、 'glDepthFunc(GL_LEQUAL);を試してみるか、深度テストをまったく使わないで、' glEnable(GL_CULL_FACE);でマルチパスレンダリングをする代わりにZソートを使います。 'glFrontFace(GL_CCW);'と 'glFrontFace(GL_CW);'の各設定では、最初に背面を、そして次に前面をレンダリングします。 – Spektre