Pregunta

Estoy tratando de habilitar que un usuario se establezca/baja y hacia la izquierda/derecha un objeto en OpenGl ES. Estoy usando Glkit para todo el dibujo y el movimiento. He habilitado Touch Events para rastrear cómo el usuario quiere mover el objeto. Estoy usando glkmatrix4translate para deslizar la sartén el objeto, pero también tiene un componente de rotación por alguna razón.

Recoggo los puntos de traducción del toque del usuario y los guardo en un punto CG:

CGPoint center;

Uso Center.x y Center.y para las posiciones X e Y que quiero traducir. Realizo la traducción con esta línea:

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

¿Algunas ideas?

¿Fue útil?

Solución

Descubrí cuál era el problema aquí. Dejé de usar glkmatrix4translate y lo reemplacé con glkmatrix4makelookat. GLKMATRIX4MAKELOOKAT te permite mover la cámara que da el efecto que estaba buscando.

Simplemente usar este código resulta en el mismo problema que ya estaba viendo. El modelo gira a medida que se aplica.

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

Lo que esto dice es que desea que la cámara siempre mire (0,0,7) con el centro en (Center.x, Center.y, 0) con el eje Y apuntando hacia arriba. La señalización del ojo es el problema. Si el modelo está girando (que es), debe apuntar el ojo al punto recién rotado.

Reemplazar lo anterior con el siguiente código parece hacer el truco.

GLKMatrix4MakeLookAt(rotation.x, rotation.y, 7,
                     center.x, center.y, 0,
                     0, 1, 0);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top