私はOpenGL 2Dのゲームで錐台のカリングを実装しようとしています。この時点で私のゲームの幾何学的オブジェクトの唯一の種類は長方形なので、これはかなり簡単だと思いましたが、予期せぬ結果が出ています。視野角が45度で、対地遠近法が0.01と50の対称透視投影を設定しました。視線ベクトルは常にz軸に平行であり、カメラはx軸とy軸に沿ってのみ移動できます。Frustum Culling Rectanglesの問題
私の考えは、私が追いかけようとしている矩形のz座標でカメラに現在見える世界の空間の矩形領域を取得することでした。カメラ錐台の中心を見ているので、次のように、私は、この可視矩形領域のエッジまでの距離を計算する:
GLfloat maxDistance = givenRectangle.z * tanf(0.5 * (fovAngle * M_PI/180));
そしてIが追加にx及びy座標からこの距離をsubstractカメラは最大と最小の可視xとyを取得し、指定された矩形をテストしてこれらの値の中間にあるかどうかを調べます。
私の質問は、ここで正しい軌道に乗っているかどうか、なぜ私がz = 5にオブジェクトを持っているときに上記の公式が馬鹿げた小さな値(何か* 10^-37)カメラは(0,0,0)ですか?
3Dを意味しないのですか? –
うんうんうまく技術的には私は3Dの視点で2次元矩形しか持たないので、それを何とかしたいと思っています。私は透視投影を望んでいる理由は、ズームインとズームアウトができるようにするためです。トップダウンカメラの向き – Jacob
私はその部分を教えてください:私は追加し、最大と最小の可視xとyを得るために、カメラのxとyの座標からこの距離を引くと、与えられた矩形をテストするそれがこれらの値の間にある場合。 – jocelyn