使用 2D 鼠标在 3D 场景中拾取对象
3D 的另一个重要的用户交互技术是对象拾取,即 3D 场景中的对象选择。输入设备是一个 2D 鼠标,用户实际单击的是在其中渲染 3D 场景的画布。因为当用户周绕场景运动时,渲染会发生变化,必须将鼠标的 2D 坐标动态地(在鼠标单击时)映射到场景的三维坐标空间,以确定哪些对象被选中。
在 2D 图形中,通过命中测试 来执行鼠标选择。对象拾取是 3D 中的一种命中测试形式。Three.js 通过提供一个 projector
辅助程序来简化对象拾取,它可以从 2D 画布 (x,y) 点过渡到场景的 3D 世界,同时还会考虑到当前摄像机的属性(摄像机所指的方向和角度等)。
Three.js 也有一个 RayCaster
类,可以将光线投射到 3D 场景中,并确定光线是否与场景中指定的 3D 对象集合相交。
在屏幕更新期间执行命中测试。鼠标移动事件侦听程序会将鼠标的 x 和 y 坐标保存为一个全局变量。
Three.js提供一个射线类Raycasting来拾取场景里面的物体。更方便的使用鼠标来操作3D场景。
参考1:http://blog.csdn.net/u014658748/article/details/51074840
参考2:https://www.ibm.com/developerworks/cn/web/wa-webgl3/