Hola, en primer lugar, lo siento mucho si no es aquí donde debo hacer preguntas generales.
¿Existe un ejemplo de "selección de áreas" de varios objetos 3D? ¿Eso es arrastrar un marco con el mouse y seleccionar todos los objetos dentro de él?
He estado jugando con el objeto THREE.Ray y sus métodos de intersección, pero sin recorrer y rastrear cada coord XY para encontrar todas las intersecciones, estoy un poco perdido.
Busqué en toda la web y en github y stack overflow, pero no encontré ayuda.
Cualquier ayuda muy apreciada.
Gracias por adelantado
Julz
Sería mejor para usted rastrear sus objetos en la escena y luego recorrer cada coordenadas XY. En este caso, no podrá usar THREE.Ray y tendrá que implementar una lógica personalizada para averiguar si un objeto está dentro del marco. Creo que este enfoque acelerará drásticamente su código.
Hmmm, este es un problema interesante.
Creo que el rectángulo en la pantalla debería corresponder a algún subfrustum de la cámara. Si pudiera construir una matriz para este frustum, entonces podría intentar hacer la misma verificación que hacemos para el sacrificio de frustum.
Sí, eso tiene sentido.
Aunque no me gustan mucho las coordenadas 3D o las matrices complejas,
Si defino un THREE.Matrix4 pasando vértices de rectángulo (arrastre del mouse) y puntos cercanos lejanos al método Matrix4.makeFrustum.
¿Podría entonces crear un THREE.Frustum pasando Matrix4 en el método Frustum.setFromMatrix?
Luego, use el método Frustum.contains para detectar si hay un objeto dentro de él.
¿Suena eso como si tuviera una gran esperanza de funcionar?
¿Las coordenadas del mouse se relacionan con las coordenadas del mundo 3D? ¿Es la posición del mouse relativa a las cámaras cerca del plano o algo así?
Lo siento si solo estoy siendo un n00b, realmente necesito una respuesta a esto.
Necesita proyectar las coordenadas del mouse en el mundo 3D. Echale un vistazo a éste ejemplo:
http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes.html
Adapté el ejemplo de selección de three.js a la proyectar todos los objetos 3D en el espacio de la pantalla 2D y luego cruzarse con el rectángulo de la pantalla , pero funciona decentemente y creo que es más rápido.
Preguntas relevantes en el desbordamiento de pila:
THREE.js Cómo detectar la intersección de un cuadrado 2d y un obj 3d
THREE.js Cómo seleccionar todos los objetos en un área
Comentario más útil
Adapté el ejemplo de selección de three.js a la proyectar todos los objetos 3D en el espacio de la pantalla 2D y luego cruzarse con el rectángulo de la pantalla , pero funciona decentemente y creo que es más rápido.
Preguntas relevantes en el desbordamiento de pila:
THREE.js Cómo detectar la intersección de un cuadrado 2d y un obj 3d
THREE.js Cómo seleccionar todos los objetos en un área