glRotatefを使用して、.obj 3d モデルを独自の軸を中心に回転させようとしています。しかし、それは私が望むように機能していません。
コード
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_LIGHTING);
gl.glLoadIdentity();
gl.glTranslatef(0f, -1.2f, -z);
gl.glRotatef(xrot, 1f, 0f, 0f);
gl.glRotatef(yrot, 0f, 1f, 0f);
model.draw(gl);
}
問題
最初の回転yrotは非常にうまく機能します。モデルの位置に関係なく、モデルは常に独自のzを中心に回転します (まあ、 yを中心に回転するように頼んだので、完璧ではありません。しかし、少なくとも独自の軸の 1 つを使用します!)
「xrot」を要求すると、x 画面軸を中心に回転します。独自のxではありません。誰かが理由を知っていますか?
備考
- onDrawFrameが常に実行されていることに気付きました。ただし、モデルは常に1.2fでyを変換しているわけではありません。z != 0 の場合のみ (理由はわかりません)。
- 三角法を使用して正しいxベクトルを取得できることを読みました。しかし、これは私には意味がありません。アプリがモデルの位置をメモリに保持して yrot を正しくすることができる場合、 xrotに対して同じことができないのはなぜですか?