私は拡張現実アプリケーションに取り組んでおり、3 つの異なる種類のジオメトリのレンダリングを並べ替える必要があります。
レベル 1
バックグラウンド ジオメトリ。これは、基本的なアーキテクチャを表す一連の三角形です。壁など
レベル 2
写真飛行機。空間の平面にテクスチャとして配置された建築の写真。その平面は幾何学的にレベル 1 の前にあります (仮想カメラから見て)
レベル 3
動的ジオメトリ。これらは、シーンを拡張するためのボックスなどのプリミティブです。これらはレベル 1 の座標系内に正しく配置されているため、幾何学的にレベル 2 の後ろにあります。
望ましい効果:
a) Level_2 を常に Level_1 の前に描画したい これは、イメージ プレーンをカメラの近くに配置することで自動的に実現されます。
b) Level_1 に対して Level_3 を正しくオクルードして、Level_1 の壁の後ろに部分的に配置されている場合、ダイナミック ボックスの一部を隠したい。これは、通常のパイプラインでも自動的に発生します。デプステストなど
c) Level_3 のすべての Fragments/Pixel を、実際には Level_2 の背後にある場合でも、Level_2 の上に描画したいと考えています。この効果により、オブジェクトが写真の一部に遮られているように見えるはずです。
「sortkey」属性を介してこの効果を達成できるX3Dom(webglにレンダリングされる)にアプリケーションがあるため、これが可能であることを知っています。しかし、純粋な OpenGL では同じ効果を再現できませんでした。Stencilbuffer または Z-Buffer トリックの単純な使用法であると考えましたが、機能しません。Level_3 ジオメトリに「常にパス」を与えるにはどうすればよいですか? または、Level_2 が Level_1 のみを非表示にし、Level_3 が両方の前にある場合でも、Level_3 を非表示にするにはどうすればよいですか?
基本的に:
1) Level_2 は Level_1 を隠します
2) Level_1 と Level_3 は互いに遮ります
3) Level_3 の可視部分 (Level_1 に対して) は Level_2 によって遮られません
何か助けはありますか?
ありがとう!