如何在Three.js中从任何摄像机角度实现ZoomAll功能?

时间:2014-07-29 16:04:37

标签: javascript three.js zoom perspectivecamera

我有一个包含块,圆柱和网格的许多Object3D对象的场景。我还有一个透视摄像头并使用轨迹球控制。我需要的是一种在不修改FOV或摄像机角度的情况下设置摄像机位置的方法,并确保场景中的所有对象都在屏幕上可见。我已经使用整个场景的边界框成功地完成了预设的顶视图,底视图,左视图和右视图,但是我需要从任何摄像机角度开始工作,因为用户可以使用轨迹球控件将视图旋转到任何位置。

如果有办法根据摄像机位置,目标和对象列表获得2d边界矩形,我想我可以让它工作,但我很难找到如何做到这一点。

功能如下:使用包含许多对象的场景,用户使用鼠标将相机旋转到任意位置,然后单击“全部缩放”按钮。然后,将相机放大(移动)到或放入(保持FOV不变),使所有物体都适合屏幕。

1 个答案:

答案 0 :(得分:0)

如何旋转和平移整个szene,以便相机位于一个看原点的轴上。

从那里获取边界框,计算相机所需的距离并翻译相机。

然后旋转并翻转整个szene。