在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;
答案 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
是您沿着观察方向移动相机以正确适合它所需的因素。目前我不确定它是高度还是宽度,但也许它可以帮助你搞清楚。 :)