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

Posted

技术标签:

【中文标题】如何在 Three.js 中获取透视相机的角度值?【英文标题】:How to get angles value of perspective camera in Three.js? 【发布时间】:2014-02-27 02:47:09 【问题描述】:

如何从 3D 场景中透视相机的每个角度获取值。 我正在使用Three.js 库。

为了更准确,我将用下一个符号标记我想知道的内容:

我需要知道什么坐标:

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

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

如您所见,在此示例中,新地形正在加载与新位置相交(以前在垃圾收集中不可用,当相机离开旧视口时):

现在,我想从我的 three.js 应用程序中显示一块屏幕:

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

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

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

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

【问题讨论】:

这应该对你有帮助:***.com/questions/13350875/three-js-width-of-view/… 【参考方案1】:

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

Three.PerspectiveCamera.fov

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

How to detect collision in three.js?

【讨论】:

以上是关于如何在 Three.js 中获取透视相机的角度值?的主要内容,如果未能解决你的问题,请参考以下文章

three.js正交投影照相机

THREE.JS : 带有光线投射器和透视相机的点击事件

《Three.js 入门指南》2.4.1- 照相机 - 透视投影demo

如何通过鼠标移动事件获取相机位置并在three.js中转换为屏幕坐标? [关闭]

threejs学习笔记05---相机透视-正透视

three.js笔记