#パースペクティブ、射影変換のはなし
なぜか GLU が使えなかったので glFrustum 関数を使うことに。
AE のデフォルトカメラでは幅 1920 の場合、画角が 39.5980 度らしい。
これを踏まえると、カメラからスクリーンまでは2666ぐらいらしい。
※単位は不明だが気にしないことにする。
glFrustum 関数 は以下の引数がある
void glFrustum(
GLdouble left , GLdouble right ,
GLdouble bottom , GLdouble top ,
GLdouble znear , GLdouble zfar
);
zfar は何でもいいけど、大きすぎると荒くなりそうなので 10000 ぐらいにした。
left, right, bottom, top は znear における指定らしいので、
znear を自分で決めた上で計算する必要がある。0 はだめ。なにも出ない。
AE のデフォルトカメラは中心にあるので 幅、高さの半分で
left と bottom がマイナスにした値、right と top はそのままの値になる。
先出の条件の場合、幅 1920 で、2666 ぐらいらしいので znear を26 としたらそれぞれ 100 で
割ればそれっぽい表示になる。たぶん
タンジェントとアスペクト比を計算した方が正確なのかな。それをしてくれるのが GLU のgluPerspective 関数だと思う。
#おまけ
回転は Xをマイナスにして、XYZ の順でした。見た目あわせなので根拠はありません。環境によると思います。