Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

304
Visualizações
Cómo obtener el ancho y la altura visibles de un objeto de malla ThreeJS en unidades de píxeles

Me enfrento al desafío de averiguar el ancho y la altura de la vista visible de un objeto de malla ThreeJS en unidades de píxeles.

En la captura de pantalla a continuación, puede ver objetos flotando en el espacio 3D, al hacer clic con el mouse, necesito poder averiguar qué ancho y alto de vista ocupan en píxeles ingrese la descripción de la imagen aquí

Como soy bastante nuevo en ThreeJS, me está tomando bastante tiempo encontrar una solución, por lo que agradecería cualquier tipo de ayuda.

La siguiente función muestra qué tipo de enfoques he estado probando.

 getObjectSizeInViewSpace(object){ const size = new THREE.Vector3() const box = new THREE.Box3().setFromObject(object).getSize(size) size.project(this.camera) let halfWidth = window.innerWidth / 2; let halfHeight = window.innerHeight / 2; size.x = (size.x*halfWidth) size.y = (size.y*halfHeight) return new THREE.Vector2(size.x,size.y) }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Estás buscando Vector3.project() . Esto básicamente toma coordenadas del espacio mundial (3D) y usa la ventana de la cámara para convertirlas en coordenadas de dispositivo normalizadas, que van desde [-1, 1] . Por ejemplo x: -1 es el lado izquierdo de la pantalla y x: 1 es el lado derecho. Así que tendrás que tomar los 4 vectores (arriba a la izquierda, arriba a la derecha, abajo a la izquierda, abajo a la derecha) de tu avión para calcular sus dimensiones en píxeles en tu navegador:

 // Get 3D positions of top left corner (assuming they're not rotated) vec3 topLeft = new Vector3( plane.position.x - planeWidth / 2, plane.position.y - planeHeight / 2, plane.positon.z ); // This converts x, y, z to the [-1, 1] range topLeft.project(camera); // This converts from [-1, 1] to [0, windowWidth] const topLeftX = (1 + topLeft.x) / 2 * window.innerWidth; const topLeftY = (1 - topLeft.y) / 2 * window.innerHeight;

Observe que el valor de topLeftY está invertido, ya que -y en el espacio 3D se convierte en +y en las coordenadas de píxeles. Haz esto 4 veces (una para cada esquina), y luego puedes restar (derecha - izquierda) para obtener el ancho, y lo mismo para la altura.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda