私は、Android上でopenGL ES 1.1によって、空間をナビゲートする機能を備えた3Dオブジェクトを描画する簡単なプログラムを作成しました。
3Dゲームの一人称カメラモードのように、左、右、内、外に移動し、左、右、上、下に回転させたい。(これは、カメラ/目自体を回転させたいことを意味します)これが私の描画部分ですonDrawFrame(GL10 gl)
:
gl.glLoadIdentity();
gl.glRotatef(lfRt, 0.0f, 1.0f, 0.0f);
gl.glRotatef(upDn, 1.0f, 0.0f, 0.0f);
gl.glTranslatef(X, 0.0f, 0.0f);
gl.glTranslatef(0.0f, Y, 0.0f);
gl.glTranslatef(0.0f, 0.0f, Z);
lfRtおよびその他の変数は、そこに存在しなければならないポイントを決定します。(詳細を説明すると、すべてのmoveIn()呼び出しは、いくつかの定数でzをプラスします。他は同じロジックを使用します)。
今ここに私の混乱があります。翻訳を最初に置くと、moveメソッドは正常に機能しますが(in、leftなど)、回転は間違っています。(全世界が原点を中心に回転します)一方、回転を最初にすると、カメラはうまく回転しますが、移動方法が正しくありません。たとえば、moveIn()は常に同じ線/軸で移動します。でもz軸を動かさずに移動したい
私は何をすべきか?