目标定位和命中检测
虚拟物体命中测试
检测与虚拟物体的碰撞通常不会真正涉及测试光线与场景中某个多边形是否相交,因为典型场景可能包含数百或数千个多边形,这使得在大多数情况下,直接跟踪光线到多边形变得不切实际。相反,大多数应用程序都找到了简化其命中测试算法实现的方法。
你使用的任何 3D 图形引擎都可能提供命中测试功能,尤其是在专门针对游戏开发设计的情况下。
简化的代表性对象
一种常见的解决方案是在场景中的对象上覆盖简化的、不可见的物体。然后,这些物体充当。例如,如果有一个大致矩形的物体,在执行命中测试时,可以使用矩形作为物体的替代品。同样,如果一个物体基本上是圆形的,则可以使用最小外接圆的半径来建立碰撞测试物体。
现实世界命中测试
"LIDAR" 这个缩略词有多种定义,具体取决于其实现方式,但最终结果是相同的。最常见的是,它指的是“激光成像、探测和测距”或“光探测和测距”)。
检测与现实世界的碰撞是一个不同的问题,它可能不仅涉及解释来自设备相机(如果可用)的图像,而且还可能涉及多个额外的传感器。一些设备包含红外传感器来帮助测量物体距离,而另一些则提供强大的LIDAR系统,该系统使用激光(通常是红外激光,人眼无法看到)来确定物体与世界之间的距离。
本文不涉及如何使用特定平台的测距系统的详细信息。不过,希望还是有的:有人提议创建一个 WebXR 命中测试模块,该模块将建立在 WebXR 之上,以提供用于执行命中测试和碰撞检测的 API。
另请参阅
- 3D 碰撞检测
- HTML5 游戏:3D 碰撞检测(Hacks 博客)