计算物体适合屏幕高度所需的相机变焦

时间:2013-11-18 22:47:45

标签: javascript 3d three.js

在Three.js我使用这个公式来计算可见宽度&高度

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

然后我用WIDTH计算物体所需的相机变焦以完全适合渲染区域

var zoom = (ObjectHeight/aspect) / (2*Math.tan(vFOV/2)) + ObjectDepth;

如何通过HEIGHT计算物体完全适合渲染区域所需的相机变焦?

感谢GuyGood,我找到了解决方案:

var zoom = (ObjectHeight/2) / Math.tan(vFOV/2) - ObjectDepth;

1 个答案:

答案 0 :(得分:1)

我正在执行以下基于boundingSphere radius的内容:

geometry.computeBoundingSphere();
radius = geometry.boundingSphere.radius;
distanceFactor = Math.abs( aspect * radius / Math.sin( fov/2 );

这是基于这些东西,我希望我以正确的方式解释它: http://www.flipcode.com/forums/thread/4172

distanceFactor是您沿着观察方向移动相机以正确适合它所需的因素。目前我不确定它是高度还是宽度,但也许它可以帮助你搞清楚。 :)