Hola, Estoy trabajando en un editor de mapas para mi juego, y estoy tratando de convertir la posición del mouse a una posición en el mundo del juego, la vista se configura utilizando gluPerspectiveConversión de la posición del mouse a la posición mundial OpenGL
Respuesta
Un buen lugar para comenzar sería la función gluUnProject
, que toma las coordenadas del mouse y calcula las coordenadas del espacio del objeto. Eche un vistazo a http://nehe.gamedev.net/data/articles/article.asp?article=13 para obtener un tutorial básico.
ACTUALIZACIÓN:
Debe habilitar buffer de profundidad para el código en ese artículo a trabajar. El valor Z para las coordenadas del mouse se determina en función del valor en el buffer de profundidad en ese punto.
En su código de inicialización, asegúrese de hacer lo siguiente:
glEnable(GL_DEPTH);
Un punto en la pantalla representa una línea completa (un conjunto infinito de puntos) en el espacio 3D.
La mayoría de las personas con preguntas similares a las suyas realmente están tratando de seleccionar un objeto haciendo clic en él. Si eso es lo que buscas, OpenGL ofrece un modo de selección que generalmente es más efectivo que tratar de convertir las coordenadas de la pantalla en coordenadas del mundo real.
El uso del modo de selección es (por lo general) bastante simple: comienza con gluPickMatrix
, que utiliza para especificar un pequeño cuadro alrededor del punto de clic. Luego dibuja tu escena en selection mode. Cuando haya terminado, en lugar de dibujar realmente algo, le devolverá registros de lo que se dibujaría en el cuadro que especificó. Si la memoria se sirve, se organizan en orden Z, de modo que la primera en la lista es la que se habría mostrado de frente (es decir, la que generalmente desea).
También estaba a punto de señalar el modo de selección. Un problema que veo con el modo de selección en este caso de uso es que parece que el programa debe seguir el cursor del mouse en tiempo real. Para eso, el modo de selección puede ser demasiado lento. – ypnos
@ypnos: Ciertamente, no es la única respuesta posible, pero a menos que haya una buena razón para hacer lo contrario, es con lo que comenzaría, y solo haría algo más cuando/si se hiciera evidente que el rendimiento iba a ser ser un problema real –
- 1. Obtener posición del mouse
- 2. addGlobalMonitorForEventsMatchingMask solo devolviendo la posición del mouse
- 3. Obteniendo la posición del mouse en C#
- 4. onMouseMove obtener la posición del mouse
- 5. WPF: ¿cómo puedo unir la posición de un control a la posición actual del mouse?
- 6. jQuery Establecer posición del mouse (no posición del cursor)
- 7. C# XNA Posición del mouse
- 8. Obteniendo la posición del mouse relativa a un control
- 9. Buscar la posición del mouse relativo a un panel
- 10. Procesamiento y OpenGL - ¿Cambia la posición de la cámara?
- 11. obteniendo la posición del mouse con javascript dentro del lienzo
- 12. Cocoa: Obteniendo la posición actual del mouse en la pantalla
- 13. Obteniendo la posición del mouse en el evento del teclado
- 14. posición del cursor del mouse en Javascript?
- 15. JavaScript convierte la posición del mouse al rango de selección
- 16. Configuración de la posición del mouse sin System.Windows.Forms
- 17. jQuery - Obtener la posición del mouse mientras arrastra el enlace
- 18. Detectar la posición relativa del mouse en el lienzo matplotlib
- 19. Javascript: obtener la posición del mouse relativo al elemento principal
- 20. Cambio en la posición del mouse cuando se agrega viewbox
- 21. Obteniendo la posición "global" del mouse en Mac OS X
- 22. ¿Cómo configuro la posición del mouse en Java?
- 23. Cómo obtener la posición del mouse sobre un cierto control
- 24. Mostrar la posición x e y del mouse con javascript
- 25. Encontrar la coordenada de cuadrícula más cercana a la posición del mouse con javascript/jQuery
- 26. Cómo obtener la posición del cursor
- 27. jquery: ¿puedo animar la posición: absoluta a posición: relativa?
- 28. CSS: posición relativa relativa del elemento principal a la altura del niño con posición absoluta
- 29. glReadPixels() realmente una solución lenta y mejor para obtener las coordenadas de OpenGL desde la posición del mouse?
- 30. jQuery posición del mouse en mousedown() sin mousemove()
Dibujo un Quad de 1 unidad de longitud en 0, 0, 0, luego, cuando coloco el mouse sobre él, me da una posición ridícula como 17, -344, -177. ¿Hay algo que pueda hacer al respecto? La cámara Y es 10. –
¿Ha habilitado el almacenamiento en memoria intermedia de profundidad? – robinjam
No estoy muy seguro de cómo habilitarlo, estoy bastante seguro de que estoy llamando a glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) –