Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

577
Vistas
Three JS: la intersección con el clic del mouse raycast en la nube de puntos no produce resultados (matriz vacía)

Estoy representando una nube de puntos y tratando de seleccionar un solo punto, pero el método raycaster.intersectObjects(scene.children, true) genera una matriz vacía. También encontré muchas formas diferentes de calcular pointer.x y pointer.y. Ninguno de ellos funcionó.

Aquí está mi CodePen: https://codepen.io/joshua-holly-fraunhofer/pen/VwyGBVO

¿Que esta mal aquí?

 function onMouseUp(event) { event.preventDefault(); const raycaster = new THREE.Raycaster(); const pointer = new THREE.Vector2(); pointer.x = (event.clientX / window.innerWidth) * 2 - 1; pointer.y = -(event.clientY / window.innerHeight) * 2 + 1; raycaster.setFromCamera(pointer, camera); const intersects = raycaster.intersectObjects(scene.children, true); console.log(intersects); // Is empty array }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su código funciona, pero la cámara está muy lejos de la nube de puntos (1800 unidades), lo que hace que los Point individuales sean relativamente pequeños. Con el umbral de emisión de rayos predeterminado (1 unidad, consulte Raycaster.params ), el usuario tiene que hacer clic extremadamente (y tal vez imposible ) cerca de un Point para que se registre una intersección. De hecho, algunas matemáticas de la servilleta me dicen que a 1080p, debe hacer clic dentro de los 0,2 px del punto, pero los clics solo se miden con una precisión de 1 px.

Dado que su material de puntos utiliza formas de 60 unidades para representar los puntos, aumente el umbral a ese tamaño y comenzará a obtener los resultados que espera. Después de la línea que inicializa raycaster , agregue esta línea:

 raycaster.params.Points.threshold = 60;
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda