ユーザーの位置に応じて、シーンの 3D パースペクティブを実現しようとしていました。ユーザーが軸から見ていないときに歪みを実現するための非対称錐台アプローチについて読みました。
軸外投影を行うために使用したコードは次のとおりです。
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumNear, frustumFar);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, headZ);
drawWalls();
ユーザーが軸を見ているとき、シーンは次のように描画されます。
錐台が軸からずれると、シーンは次のように描画されます。
ただし、次の図のようになると予想していました (gluLookAt と非対称錐台を使用して実現)。
上記のプログラムでは、表示ボリュームを指定するためだけに非対称錐台を使用し、パラメーターを変更すると (2 番目の画像)、シーンが少し翻訳されたように見えるようになりました (歪みはありません)。これが正しい動作なのか、それとも何かを見逃していて、そこにあるはずのシーンで歪み (3 番目の画像など) が得られなかったのか疑問に思っています。歪んだ錐台だけが、歪んだシーン出力を与えてはいけませんか?