0

ユーザーが OpenGL ES でオブジェクトを上下左右にパンできるようにしようとしています。すべての描画と移動に GLKit を使用しています。ユーザーがオブジェクトをどのように動かしたいかを追跡するタッチ イベントを有効にしました。オブジェクトのパンをスライドさせるために GLKMatrix4Translate を使用していますが、何らかの理由で回転コンポーネントもあります。

ユーザーのタッチから翻訳ポイントを収集し、CGPoint に保存します。

CGPoint center;

変換したい X 位置と Y 位置に center.x と center.y を使用します。次の行で翻訳を実行します。

GLKMatrix4 modelViewMatrix = GLKMatrix4Translate(GLKMatrix4Identity, center.x, center.y, 0.0f);

何か案は?

4

1 に答える 1

0

ここで何が問題なのかがわかりました。私は GLKMatrix4Translate の使用をやめ、それを GLKMatrix4MakeLookAt に置き換えました。GLKMatrix4MakeLookAt を使用すると、カメラを動かすことができ、探していた効果が得られます。

このコードを使用するだけで、私がすでに見たのと同じ問題が発生します。パンすると、モデルが回転します。

GLKMatrix4MakeLookAt(0, 0, 7,
                     center.x, center.y 0,
                     0, 1, 0);

これが言っているのは、カメラが常に (0,0,7) を見て、中心が (center.x, center.y, 0) で、y 軸が上を向いているということです。目の向きが問題です。モデルが回転している場合 (回転している場合)、新しく回転した点に目を向ける必要があります。

上記を以下のコードに置き換えるとうまくいくようです。

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);
于 2012-01-13T17:44:25.993 に答える