tutorial three texture sphere raycaster three.js

three.js - sphere - three js texture



THREE.JS: obtenga el tamaño del objeto con respecto a la posición de la cámara y el objeto en la pantalla (1)

Soy novato de la programación en 3D, empecé a explorar el mundo 3D desde WebGL con Three.JS.

Quiero predeterminar el tamaño del objeto mientras cambio la cámara.position.z y la posición "Z" del objeto.

Por ejemplo: tengo una malla de cubo con un tamaño de 100x100x100.

cube = new THREE.Mesh( new THREE.CubeGeometry(100, 100, 100, 1,1,1, materials), new THREE.MeshFaceMaterial() );

y cámara con una relación de aspecto de 1.8311874

camera = new THREE.PerspectiveCamera( 45, aspect_ratio, 1, 30000 );

Quiero saber el tamaño (ancho y alto 2D) de ese objeto de cubo en la pantalla cuando,

camera.position.z = 750; cube.position.z = 500;

¿Hay alguna forma de encontrarlo / predeterminarlo?


Puede calcular la altura visible para una distancia dada desde la cámara utilizando las fórmulas explicadas en Three.js - Ancho de vista .

var vFOV = camera.fov * Math.PI / 180; // convert vertical fov to radians var height = 2 * Math.tan( vFOV / 2 ) * dist; // visible height

En su caso, la cámara FOV es de 45 grados, por lo que

vFOV = PI/4.

(Nota: en three.js, el FOV de campo de la cámara es el vertical , no el horizontal).

La distancia desde la cámara a la cara frontal (¡importante!) Del cubo es 750 - 500 - 50 = 200. Por lo tanto, la altura visible en su caja es

height = 2 * tan( PI/8 ) * 200 = 165.69.

Como la cara frontal del cubo es 100 x 100, la fracción de la altura visible representada por el cubo es

fraction = 100 / 165.69 = 0.60.

Entonces, si conoce la altura del lienzo en píxeles, entonces la altura del cubo en píxeles es 0,60 veces ese valor.

El enlace que proporcioné muestra cómo calcular el ancho visible, por lo que puede hacer ese cálculo de manera similar si lo necesita.