如何在Three.js中获取透视相机的角度值?

2023-12-19

如何获取 3D 场景中透视相机每个角度的值。 我在用着Three.js图书馆。

更准确地说,我将用下一个标志来标记我想了解的内容:

我需要知道什么坐标:

我需要它,因为我正在创建一个实模式地图引擎,通过鼠标光标在 3D 场景中移动。

我想要实现的目标可以在这里找到:http://www.zephyrosanemos.com/windstorm/current/live-demo.html http://www.zephyrosanemos.com/windstorm/current/live-demo.html

正如您所看到的,在此示例中,新地形正在加载并与新位置相交(当相机离开旧视口时,垃圾收集以前无法使用该地形):

现在,我想显示我的 Three.js 应用程序的一个屏幕:

正如您所看到的,我正在静态加载我的场景,其中只有一架带有建筑物的飞机可用(建筑物数据从我的服务器加载,并且我从某些 osm 服务获得令牌)。

并且它只能通过按下键盘按钮来控制(例如,3D 场景通过按下键盘箭头定位到新位置,您也可以看到地图中的空白区域:) 这只是因为在中准备剪切数据用于测试目的的数据库,当应用程序准备就绪时 - 它不会是空的,使用数据库中的少量记录很容易。所有网格都将被删除,每次新的移动都会加载新数据并渲染新建筑物。

但我想让它们随着相机的移动而动态加载。所以我想让它能够动态加载,就像动态地形生成的例子一样。我建议,我应该准备一个大平面矩阵,它仅加载 8 个平面的数据(如地形生成示例),并为此类动态工作与相机交互/留下旧视图建立逻辑。

所以...我希望你能帮助我完成这项艰巨的任务:)


要获取视角,只需获取该字段的值即可:

三.PerspectiveCamera.fov

有了这个角度,你应该可以得到一个假想的立方锥体并测试它的碰撞。对于碰撞部分请参考这个问题:

如何检测 Three.js 中的碰撞? https://stackoverflow.com/questions/11473755/how-to-detect-collision-in-three-js

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Three.js中获取透视相机的角度值? 的相关文章