パース ビューと正投影ビューを組み合わせたいのですが、うまくいきません。
X 座標と Y 座標が正射投影で、Z 座標がパースペクティブである必要があります。明確にするために、OpenGL 座標から画面表示への目的の変換のスケッチを追加しました。
(チュートリアルから始めましたが、値の上位、下位などを取得する方法が見つかりませんでした。)
パース ビューと正投影ビューを組み合わせたいのですが、うまくいきません。
X 座標と Y 座標が正射投影で、Z 座標がパースペクティブである必要があります。明確にするために、OpenGL 座標から画面表示への目的の変換のスケッチを追加しました。
(チュートリアルから始めましたが、値の上位、下位などを取得する方法が見つかりませんでした。)
おそらくglFrustum
これを達成するために使用できます。
標準の遠近法マトリックスを使用し、カメラがボックスの正面を向いている場合、X/Y は均一になりますが、カメラから離れると X/Y 座標が中心に向かって移動し、標準的な視差効果のために縮小されます。あなたが描いたのは、ウィンドウの上部への動きです。透視投影を標準の中心より下にトリミングするだけです。そこに出番がありglFrustum
ます-通常は対称的な上下の引数を下に移動し、必要な軸に沿ってカメラ/ビューマトリックスを整列させると、目的の投影が得られます。
カメラ/ビューを回転させると、X/Y 平面での均一な投影が破壊されます。カメラの動きについては、境界のパンと移動に制限されglFrustum
ます。
EDIT考えてみるとglTranslatef(shearX, shearY, 0)
、呼び出しの前に a を投げてgluPerspective
、同じことを達成することができます。