Question

Je suis en train de permettre à un utilisateur de déplacer vers le haut / bas et gauche / droite un objet dans OpenGL ES. J'utilise GLKit pour tout le dessin et le mouvement. J'ai activé événements tactiles pour suivre la façon dont l'utilisateur souhaite déplacer l'objet. J'utilise GLKMatrix4Translate pour faire glisser la casserole l'objet, mais il a un élément de rotation à lui aussi bien pour une raison quelconque.

je rassemblerai les points de traduction de toucher de l'utilisateur et de les stocker dans un CGPoint:

CGPoint center;

J'utilise center.x et center.y pour les positions X et Y que je veux traduire par. J'effectuer la traduction avec cette ligne:

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

Toutes les idées?

Était-ce utile?

La solution

Je me suis dit ce que le problème était là. Je me suis arrêté à l'aide GLKMatrix4Translate et remplacé par ce GLKMatrix4MakeLookAt. GLKMatrix4MakeLookAt vous permet de déplacer l'appareil autour de ce qui donne l'effet que je cherchais.

Il suffit à l'aide des résultats de code dans le même problème que je voyais étais déjà. Le modèle tourne comme casseroles.

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

Ce que cela dit est que vous voulez que la caméra regarde toujours (0,0,7) avec le centre au (center.x, center.y, 0) avec l'axe Y pointant vers le haut. Le pointage de l'œil est le problème. Si le modèle est en rotation (ce qui est), vous devez pointer l'oeil au nouveau point pivotée.

Remplacement de la ci-dessus avec le code ci-dessous semble faire l'affaire.

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top