2

簡単な質問:利き手は、オルソゴノールビューの近距離と遠距離の値を変更しますか?たとえば、左利きで見下ろすzは正(遠くに行く)であり、右利きで見下ろすzは負の値です。

これは、左利きのニア/ファーの場合は-1,1であり、右利きのニア/ファーの場合は1、-1である必要があることを意味しますか?それとも常に-1,1ですか?

4

1 に答える 1

4

たとえばglOrtho()を使用して射影行列を作成する場合は、より近い深度とより遠い深度のクリッピング平面の値を提供します。実際の行列を見ると、投影後の結果のz座標は次のようになります。

z_proj = (-2 * z_view - far - near) / (far - near)

の場合far > near、この値はz_view減少するにつれて増加します。つまり、小さいz_viewオブジェクトは、大きいオブジェクトよりも遠くにありますz_view。これは、カメラの前にあるオブジェクトのz値が負である右手座標系に相当します。

の場合far < near、この値は増加するz_viewにつれて増加します。つまり、大きいz_viewオブジェクトは、小さいオブジェクトよりも遠くにありますz_view。これは、カメラの前にあるオブジェクトのz値が正である左手座標系に相当します。

z_viewさらに、の-nearマップとへ-1z_viewマップ-farに気付くかもしれません+1

実際の(絶対)値は、シーンによって異なります。通常、カメラの後ろには何も表示したくありません。nearしたがって、0(またはシーンの最初のオブジェクトまでの距離)に設定できます。far少なくとも、カメラから最も遠いピクセルの距離に設定する必要があります。左手座標系を使用する場合は、これらの値を反転します。たとえば、右利きの場合は[0、2]は、左利きの場合は[0、-2]になります。

これについて常に考えたくない場合は、射影行列の利き手部分を別のスケール行列に抽出できます。

ProjectionRH = Ortho * Scal(1, 1,  1)
ProjectionLH = Ortho * Scal(1, 1, -1)
于 2013-02-12T17:18:14.363 に答える