10

我有一组块对象,我想设置透视相机,以便它们的整个宽度完全可见(高度会太大 - 没关系,我们要上下平移)。

我已经看到有很多与此相关的问题,例如:

为可见的 Three.js 形状调整相机

Three.js - 视图宽度

THREE.JS:获取相对于相机和屏幕上对象位置的对象大小

如何使相机适合对象

三JS。如何实现 ZoomALL 并确保给定的框填充画布区域?

但是,它们似乎都没有完全涵盖我正在寻找的所有内容:

  • 我对高度不感兴趣,只对宽度感兴趣(它们不会相同 - 大小将是动态的,但我可以假设高度会大于宽度)

  • camera.position.z (或我猜的 FOV)是未知数,所以我试图以正确的方式求解方程

(我不擅长 3D 数学。在此先感谢!)

4

1 回答 1

4

在我的情况下,我能够大大简化这个问题......

因为我知道物体的整体大小,所以我可以通过改变相机的 z 位置几次来简单地得出一个合适的距离,然后看看什么看起来最好。

我真正的问题是,由于纵横比不同,在不同尺寸的屏幕上,相对于屏幕宽度,相同的 z 位置给出了不同的宽度。

所以我所做的只是将我的距离值除以camera.aspect。现在块在所有屏幕尺寸上占据屏幕宽度的相同比例:-)

于 2013-06-05T13:02:39.033 回答