glkmatrix4translateで翻訳すると、起源ではなく、カメラの周りを動かすようです

StackOverflow https://stackoverflow.com/questions/8824234

質問

ユーザーが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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top