Convirtiendo de click a coordenadas 3d

Una de las cosas que más me preocupaban en todo este trabajo de medio hacer el motor gráfico era convertir las coordenadas del mouse a las coordenadas 3d de Open GL. Pregunté en todas partes, pero nadie me daba una respuesta precisa, sólo que había que usar gluUnproject y dependía de la matriz de proyección. Llegué a pensar que hacía falta toda una serie de cálculos complejos para eso.
Sin embargo, la respuesta estaba bien cerca en NeHe y es bastante sencilla.
Esto resuelve el problema en caso que tenga un motor pseudo isométrico, sin embargo para la vista planeada en el proyecto no me sirve, pues lo que necesito averiguar es si el rayo trazado desde el punto en pantalla atraviesa el mesh de un personaje u objeto. Podría usarlo de todas formas, pero el click entonces se comportaría raro pues deberíamos clickear sobre los pies del personaje para seleccionarlo.

Comentarios

  1. Has mirado el picking de opengl? Dadas las coordenadas del ratón es posible saber en qué objeto has pinchado, eso sí, necesitas una pasada de render extra aunque no es necesario que le apliques ni iluminación, ni texturas, solo flat.

    ResponderEliminar
  2. Sí, estudié esa variante, pero la cantidad de objetos es limitada y depende de la implementación.

    ResponderEliminar

Publicar un comentario