Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

345
Views
Hacer que el cuboide siga la posición del mouse en ángulos de cámara girados tres JS

Tengo una escena de tres JS donde el usuario puede agregar un cuboide seleccionando un lugar en la escena y luego haciendo clic en el botón. También tengo OrbitControls para que el usuario pueda rotar y navegar en la escena.

El código para hacer que el cuboide siga al ratón es el siguiente:

 let mouse_vector = new THREE.Vector3(this.mouse.x, this.mouse.y, 0.5 ); mouse_vector.unproject( this.camera ); mouse_vector.sub(this.camera.position).normalize(); let distance = - this.camera.position.z / mouse_vector.z let cube_position = new THREE.Vector3(); cube_position.copy(this.camera.position).add(mouse_vector.multiplyScalar(distance)) this.place_holder_cuboid.position.copy(cube_position)

Aquí: place_holder_cuboid es la malla cuboide que quiero dibujar.

Esto funciona bien cuando la cámara está alineada con el eje Z. Sin embargo, si giro mi cámara para que se alinee con el eje X, por ejemplo. La distancia de la ubicación del cuboide comienza a estropearse.

Creo que el problema es que no estoy teniendo en cuenta los otros ejes al calcular la distancia, ya que la cámara se puede rotar o panoramizar (gracias a los controles de órbita)

Sin embargo, no estoy seguro de saber los cálculos para esta distancia. ¿Puede alguien ayudarme con esto?

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!