Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Three.js中从任何摄影机角度实现ZoomAll功能?_Javascript_Three.js_Zooming_Perspectivecamera - Fatal编程技术网

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

Javascript 如何在Three.js中从任何摄影机角度实现ZoomAll功能?,javascript,three.js,zooming,perspectivecamera,Javascript,Three.js,Zooming,Perspectivecamera,我有一个场景,其中有许多Object3D对象,包括块、圆柱体和网格。我也有一个透视相机和使用轨迹球控制。我需要的是一种在不修改FOV或相机角度的情况下设置相机位置的方法,并确保场景中的所有对象都在屏幕上可见。我已经使用整个场景的边界框成功地使用预设的顶视图、底视图、左视图和右视图完成了这项工作,但我需要从任何摄影机角度进行操作,因为用户可以使用轨迹球控件将视图旋转到任何位置 如果有一种方法可以根据相机位置、目标和对象列表获得二维边界矩形,我想我可以让它工作,但我很难找到如何做到这一点 该功能的工

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

如果有一种方法可以根据相机位置、目标和对象列表获得二维边界矩形,我想我可以让它工作,但我很难找到如何做到这一点


该功能的工作原理如下:对于包含许多对象的场景,用户使用鼠标将相机旋转到任意位置,然后单击“全部缩放”按钮。然后,相机被缩小(移动)或放大(保持视野恒定),使所有对象都适合屏幕。

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

从那里获得边界框,计算摄影机所需的距离并平移摄影机


然后旋转并将整个szene翻译回来。

您能为您提供的答案添加更多细节吗?@abarisone:我只是想分享一下如何解决这个问题的想法。对于一个工作示例,需要更多的细节。你到底错过了什么?