Three.js缩放以适合对象的宽度(忽略高度)

pos*_*ssy 5 three.js

我有一组块对象,我想设置透视相机,使其整个宽度完全可见(高度将太大-可以,我们将上下移动)。

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

调整相机以显示Three.js形状

Three.js-视图的宽度

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

如何使相机适合物体

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

但是,它们似乎都无法完全满足我的需求:

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

  • camera.position.z(或我估计的FOV)是未知的,所以我试图通过正确的方法来求解方程

(我对3D数学并不满意。在此先感谢!)

pos*_*ssy 4

就我而言,我能够大大简化这个问题......

由于我知道物体的整体尺寸,因此我可以通过多次更改相机的 z 位置并查看看起来最好的距离来简单地得出合适的距离。

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

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

  • 能否请您提供一下技术解决方案。代码片段或其他什么。否则这确实对提出同样问题的人没有帮助。 (3认同)
  • 即使几年后,有人也遇到同样的问题,并且对没有代码可供复制感到失望;-) (2认同)