javascript - precio - problema camara moto z play
Calcule el zoom de la cámara requerido para que el objeto se ajuste a la altura de la pantalla (1)
Estoy haciendo lo siguiente, que se basa en el radio de boundingSphere:
geometry.computeBoundingSphere();
radius = geometry.boundingSphere.radius;
distanceFactor = Math.abs( aspect * radius / Math.sin( fov/2 );
Esto está basado en esto aquí y espero haberlo interpretado de la manera correcta: http://www.flipcode.com/forums/thread/4172
Este factor de distanceFactor
es el factor que necesita para mover la cámara a lo largo de su dirección de visualización para que se ajuste correctamente. Por el momento no estoy seguro de si es por alto o ancho, pero tal vez te ayude a descubrirlo. :)
En Three.js estoy usando esta fórmula para calcular el ancho y la altura visibles
var vFOV = camera.fov * Math.PI / 180; // convert vertical fov to radians
var height = 2 * Math.tan( vFOV / 2 ) * dist; // visible height
var aspect = window.width / window.height;
var width = height * aspect; // visible width
Y con eso calculo el zoom de la cámara requerido para que el objeto encaje exactamente en el área de renderizado por ANCHO
var zoom = (ObjectHeight/aspect) / (2*Math.tan(vFOV/2)) + ObjectDepth;
¿Cómo calculo el zoom de la cámara requerido para que el objeto encaje exactamente en el área de renderizado con HEIGHT?
Gracias a GuyGood, encontré la solución:
var zoom = (ObjectHeight/2) / Math.tan(vFOV/2) - ObjectDepth;