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

4
我该如何在3D场景中获取透视相机的每个角度的值。 我正在使用Three.js库。 为了更准确,我将用下一个标记来标记我想要获取的内容:

enter image description here

需要知道哪些坐标:

enter image description here

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

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

正如您所看到的,在此示例中,当新位置与旧视口不重叠时(以前无法使用垃圾收集),会加载新的地形:

enter image description here

现在,我想展示一段来自我的three.js应用程序的屏幕截图:

enter image description here

正如您所看到的,我正在静态加载场景,仅可用一个带有建筑物的平面(建筑物数据正在从我的服务器加载,并且我已经从一些OSM服务中获取了数据)。

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

但是我想要使它在相机移动时动态加载。因此,我想要像动态地形生成示例一样能够动态加载它。我建议准备一个大的平面矩阵,仅为8个平面加载数据(就像地形生成示例中一样),并为相机交互/离开旧视图制定逻辑以进行这种动态工作。

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


1
这应该会对你有所帮助:https://dev59.com/-WYr5IYBdhLWcg3w29lI#13351534 - WestLangley
1个回答

0

要获取视野角度,只需获取此字段的值:

Three.PerspectiveCamera.fov

从这个角度出发,你应该可以想象一个立方圆锥并测试其碰撞。关于碰撞部分,请参考这个问题:

如何在three.js中检测碰撞?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接