私はアンドロイド用のファーストパーソンカメラクラスを作成しました。ファーストパーソン3Dでのカメラの回転
クラスは、カメラオブジェクトは、その三の軸 Xを有し、実際に簡単であり、Y及びZ
とModelView行列(すなわちcalculateModelViewMatrix())を作成する機能があり、 はXに沿ってカメラを回転させますY軸 を選択し、カメラをZ軸に沿って移動します。
私は私のModelViewMatrixのcalulationが正しいと私はまた、Z軸に沿ってカメラを翻訳することができたと思います。
x軸に沿った回転はうまくいくようですが、Y軸に沿って奇妙な結果が得られます。 また、回転に関する別の問題は、カメラを回転させる代わりに、3Dモデルがその軸に沿って回転を開始するように思われることです。
視点に基づいて別の実装を記述し、OpenGL ESのGLU.gluLookAt()関数を使用してModelView行列を取得しましたが、まったく同じ問題を抱えているようです。
EDITお返事のためのすべての感謝の
まず。
あなたが言ったように私は実際にandroid.opengl.Matrixクラスに設けられた回転機能を使用してCameraクラスの第2の実施、この時間を作ってきました。 以下のコードを提供しましたが、これはずっと簡単です。
私の驚いたことに、結果は「まったく同じ」です。 これは、私の回転機能とAndroidの回転機能が同じ結果を生み出していることを意味します。
私は簡単なテストを行い、自分のデータを見ました。 LookAtポイントをY軸を中心に一度に1度回転させ、座標を見ました。私のLookAtポイントが正確な回転角度よりも遅れているようです。 20度では10度から12度にしか変化しません。 そして45度後に逆転が始まります。