【问题标题】:How can I implement ZoomAll functionality from any camera angle in Three.js?如何在 Three.js 中从任何摄像机角度实现 ZoomAll 功能?
【发布时间】:2014-09-21 02:16:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript three.js zooming perspectivecamera


    【解决方案1】:

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

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

    然后将整个 szene 旋转并平移回来。

    【讨论】:

    • 您能否在您提供的答案中添加更多详细信息?
    • @abarisone:只是想分享一个如何解决这个问题的想法。对于一个工作示例,需要更多详细信息。你到底想念什么?
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多