私の問題は、OpenGLは常に(0,0,0)の周りを回転するということです。しかし、私が "カメラ"を翻訳すると、例えば、私が後方に移動すると、(0,0,0)も回ります。しかし、私はカメラの周りを回転する必要があるので、私はポイントを(0,0,0)に戻し、回転させて、それらを元の位置に変換しなければならないでしょう。
ただし、ここでエラーが発生します。回転後、回転は回転に対して相対的です。
どうすれば元に戻すことができますか?
PS:私はgluLookAtを(使用したいいけない)OpenGLとC++の "カメラ"を回る方法
だから、カメラに対して回転するように私のコードは次のようになります。
//set rotation to zero
glRotatef(-yr,0.0f,1.0f,0.0f);
glRotatef(-xr,1.0f,0.0f,0.0f);
//set points relative to camera
glTranslatef(-cam_pos[0],-cam_pos[1],-cam_pos[2]);
//reset rotation
glRotatef(yr,0.0f,1.0f,0.0f);
glRotatef(xr,1.0f,0.0f,0.0f);
//rotate
glRotatef(angley,0.0f,1.0f,0.0f);
glRotatef(anglex,1.0f,0.0f,0.0f);
//and now, how to translate back,
//movement is relative to the cam ?
//I would simply use :
//glTranslatef(cam_pos[0],cam_pos[1],cam_pos[2]);
//which wont work because its relative to the new rotation.
カメラを翻訳するためにコードを共有できますか? –
はい、できますが、重要ではありません。 – user7185318
[MCVE](http://stackoverflow.com/help/mcve)を提供し、あなたの問題についてもっと明示しようとしています。質問は私にとってはかなり不明です – Zouch