web-dev-qa-db-ja.com

gluPerspectiveパラメーター-それらはどういう意味ですか?

gluPerspectiveパラメーターについて疑問に思います。

すべての例で、fovyが約45〜60度に設定されていることがわかります。別の値に設定しようとしましたが、オブジェクトは消えてしまいます。

aspect値は常に比率である必要がありますか?なぜそれを変えるのでしょうか?

zNear, zFar-再度、通常の値は約10および500+です。

42
Despair

4つのパラメーターの目的は、次のようにview frustumを定義することです:

perspective frustum

錐台の外側には画面上に何も表示されないはずです(これを達成するために、パラメーターを使用して4x4マトリックスを計算し、それを使用して各頂点をいわゆるクリップスペースに変換します。錐台内かどうかは簡単です)

視野パラメータは、基本的にカメラ位置を通過する平面と画面の上部とを通過する別の平面との間の角度ですカメラの位置と画面の下部。この角度が大きいほど、世界を見ることができますが、同時に見ることができるオブジェクトは小さくなります。

その影響を観察するには、キーを押すことで徐々にFOVを増減できるシンプルなアプリをコーディングすることをお勧めします-次に、いくつかの球体やその他の基本オブジェクトをレンダリングし、変更時に何が起こるかを確認します。

アスペクト比は、ビューポートのアスペクト比です。 (上記の図では、ビューポートはニアクリッピングプレーンにあります)ビューポートのアスペクト比は異なる場合があるため、それを定義できるのは理にかなっています。

zNearとzFarの値は、カメラ位置と、ニアおよびファークリッピングプレーン間の距離をそれぞれ定義します。 zNearよりもカメラに近いものも、zFarよりも遠くのものも表示されません。両方の値は> 0でなければならず、明らかにzFar> zNearでなければなりません。 zFarは、レンダリングするすべてのものが見えるように理想的に選択する必要がありますが、必要以上に大きくすると、深度バッファーの精度が無駄になり、zファイティングと呼ばれるちらつき効果が生じる可能性があります。同様に、zNearをカメラに近づけすぎると同じ効果が生じる場合があります。実際、zFearよりも適切なzNear値を持つことが重要です。これがなぜ起こるのかを正確に知りたい場合は、 this one または this one のような詳細な説明を読む必要があります。

79
gemse