最常用的两种方式:
- 射线追踪法(
raycasting
)很可能是最常用的方法,其基本原理是:从鼠标处发射一条射线,穿透场景的视椎体,通过计算,找出视锥体中哪些对象与射线相交。 步骤: - 获取鼠标的屏幕坐标.
- 对其应用摄像机的投影和方向的矩阵变换,得到其在世界空间的坐标。
- 计算出一条射线,从视锥体的近端平面射向远端平面。再然后,对于场景中每一个对象的每一个三角,检查其是否与射线相交。假设你的场景中有1000个对象,每个对象有1000个三角,那么就需要检查一百万个三角。
对此,可以做一些优化:先检查对象的包围球或包围盒是否与射线相交。
- 基于GPU的拾取方法 需要创建两个场景。一个使用正常的网格对象填充。另外一个使用“拾取材质”的网格对象填充。
阅读量: