Gracias, encontré la solución en la página que pusiste, Warchief. La función que necesitaba es exactamente gluUnProject, que desconocía.
A esta función se le pasa la posición del cursor y la distancia z que buscamos, el viewport y las matrices de transformación, y te devuelve las coordenadas en 3D. De manera que con 2 llamadas con diferentes distancias obtenemos un rayo que "sale" del cursor a la escena, y con él se puede determinar su intersección con cualquier plano y por tanto el punto exacto de colisión que buscaba.
ahora lo que he intentado hacer es mi propia función gluUnproject conociendo la fórmula.
multiplico la matriz modelview por la de projection, la matriz resultante la invierto. y multiplico el punto 2D de la ventana normalizado por esa matriz.
Es así ¿no?
Pues no funciona :roll:
Bueno, da igual, ya lo resolveré, lo que quería ya lo he encontrado.
A esta función se le pasa la posición del cursor y la distancia z que buscamos, el viewport y las matrices de transformación, y te devuelve las coordenadas en 3D. De manera que con 2 llamadas con diferentes distancias obtenemos un rayo que "sale" del cursor a la escena, y con él se puede determinar su intersección con cualquier plano y por tanto el punto exacto de colisión que buscaba.
ahora lo que he intentado hacer es mi propia función gluUnproject conociendo la fórmula.
CitarTo compute the coordinates (objX, objY, and objZ),
gluUnProject multiplies the normalized device coordinates by
the inverse of model*proj as follows:
http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/unproject.html
multiplico la matriz modelview por la de projection, la matriz resultante la invierto. y multiplico el punto 2D de la ventana normalizado por esa matriz.
Es así ¿no?
Pues no funciona :roll:
Bueno, da igual, ya lo resolveré, lo que quería ya lo he encontrado.