我有一组块对象,我想设置透视相机,使其整个宽度完全可见(高度将太大-可以,我们将上下移动)。
我已经看到许多与此相关的问题,例如:
THREE.JS:获取相对于摄像机和屏幕上对象位置的对象大小
ThreeJS。如何实现ZoomALL并确保给定的框填充画布区域?
但是,它们似乎都无法完全满足我的需求:
我对高度不感兴趣,仅对宽度不感兴趣(它们不会相同-大小将是动态的,但我可以假定高度将大于宽度)
camera.position.z(或我估计的FOV)是未知的,所以我试图通过正确的方法来求解方程
(我对3D数学并不满意。在此先感谢!)
就我而言,我能够大大简化这个问题......
由于我知道物体的整体尺寸,因此我可以通过多次更改相机的 z 位置并查看看起来最好的距离来简单地得出合适的距离。
我真正的问题是,由于宽高比不同,相同的 z 位置在不同尺寸的屏幕上相对于屏幕宽度给出了不同的宽度。
所以我所做的就是将距离值除以camera.aspect。现在,在所有屏幕尺寸上,块占据屏幕宽度的相同比例:-)