glkmatrix4translateで翻訳すると、起源ではなく、カメラの周りを動かすようです
質問
ユーザーがOpenGL ESのオブジェクトを上/下/右/右にパンして左/右にできるようにしようとしています。私はすべての図面と動きにglkitを使用しています。タッチイベントを有効にして、ユーザーがオブジェクトの移動方法を追跡しました。 glkmatrix4translateを使用してオブジェクトをパンにスライドさせますが、何らかの理由で回転コンポーネントもあります。
ユーザーのタッチから翻訳ポイントを収集し、CGPointに保存します。
CGPoint center;
翻訳したいXおよびYの位置には、center.xとcenter.yを使用します。私はこの行で翻訳を実行します:
GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f);
何か案は?
解決
ここで問題が何であるかを理解しました。 glkmatrix4translateの使用を停止し、それをglkmatrix4makelookatに置き換えました。 glkmatrix4makelookatを使用すると、カメラを動かして、私が探していた効果が得られます。
このコードを使用するだけで、私がすでに見ていたのと同じ問題が発生します。モデルはパンすると回転します。
GLKMatrix4MakeLookAt(0, 0, 7,
center.x, center.y 0,
0, 1, 0);
これが言っているのは、カメラに(0,0,7)を常に(0,0,7)に(Center.X、Center.Y、0)にY軸を向けて見てもらいたいということです。目を指すことが問題です。モデルが回転している場合(これは)、新しく回転したポイントで目を向ける必要があります。
上記のコードを以下のコードに置き換えると、トリックがあるようです。
GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
center.x, center.y, 0,
0, 1, 0);
所属していません StackOverflow