如何在 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 入门指南》2.4.1- 照相机 - 透视投影demo