2012-01-11 5 views
0

OpenGL ESでオブジェクトを上下左右にパンすることを可能にしようとしています。私はすべての描画と移動にGLKitを使用しています。タッチイベントを有効にして、ユーザーがオブジェクトをどのように移動したいかを追跡しました。私はGLKMatrix4Translateを使ってパンをオブジェクトにスライドさせていますが、何らかの理由でそれに回転コンポーネントもあります。GLKMatrix4Translateで翻訳すると、カメラではなく起点で動いているようです

私は、ユーザーのタッチからの翻訳ポイントを集めるとするCGPointに保存:

CGPoint center; 

私は私が翻訳したいXとY位置についてcenter.xとcenter.yを使用しています。私はこの行で翻訳を行います:

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

アイデアはありますか?

答えて

0

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

このコードを使用するだけで、すでに同じ問題が発生しています。モデルは回転しながら回転します。

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

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

上記のコードを以下のコードに置き換えると、このトリックを行うようです。

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7, 
        center.x, center.y, 0, 
        0, 1, 0); 
関連する問題