Pregunta

Estoy construyendo una interfaz simple de arrastre 3D en 3D en el procesamiento, y quiero detectar cuando el mouse rueda sobre un objeto. Me imagino que necesito hacer algunas traducciones de matriz a las coordenadas del modelo 3D para llevarlas al espacio de la pantalla, etc. ...

Tengo una versión simple de este funcionamiento, el problema es que cuando la cámara se mueve a la escena, las coordenadas que obtengo locas.

Entonces, ¿cómo traduco las coordenadas de mosaico al espacio de pantalla (ya que la pantalla de pantalla y la pantalla no funcionan correctamente)?

ACTUALIZAR:Finalmente encontré dos ejemplos del sitio de procesamiento sobre cómo hacer esto. Gracias a Villintehaspam.

http://processing.org/hacks/hacks:picking

¿Fue útil?

Solución

Este problema se llama selección. Busque la recolección del mouse y obtendrá muchos golpes.

La teoría básica es esta:

  1. Obtenga coords X, Y del clic del mouse.
  2. Convierta estos a coordenadas X, Y, Z en coordenadas oculares (es decir, -1 <= x <= 1, -1 <= y <= 1, z = distancia de clip cercano/lejana, si tiene una proyección normal).
  3. Transforme estas coordenadas por la inversa de la matriz de proyección para obtener coordenadas mundiales.
  4. Ahora tiene un rayo de la posición de la cámara, con la dirección hacia las coordenadas mundiales que acaba de recibir.
  5. Haga una prueba de intersección de objeto de rayos con los objetos que desea considerar. Elija el objeto que se cruza con el rayo que está más cerca del origen del rayo (posición de la cámara).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top