目标定位和命中检测

虚拟对象命中测试

对虚拟对象的碰撞检测通常并不真正涉及测试射线与场景中某个多边形的交集,因为典型场景可能包含数百甚至数千个多边形,这使得在大多数情况下直接追踪射线到多边形是不切实际的。相反,大多数应用程序会想办法简化其命中测试算法的实现。

你正在使用的任何 3D 图形引擎很可能都提供了命中测试功能,尤其是如果它专为游戏开发而设计。

简化的代表性对象

一种常见的解决方案是在场景中的对象之上叠加简化的、不可见的虚拟对象。这些对象然后充当占位符。例如,如果你有一个大致是矩形的对象,在执行命中测试时,可以使用一个矩形作为该对象的替代。同样,如果一个对象本质上是圆形的,可以使用最小外接圆的半径来建立碰撞测试对象。

真实世界命中测试

“LIDAR”这个缩写根据具体实现方式的不同有多种定义,但最终结果是相同的。最常见的是,它指的是“激光成像、探测与测距”或“光探测与测距”。

与真实世界进行碰撞测试是另一个问题,这不仅可能涉及解释设备摄像头的图像(如果可用),还可能涉及多个额外的传感器。有些设备包含红外传感器来帮助测距,而有些则提供强大的 LIDAR 系统,它们使用激光(通常是人眼看不见的红外激光)来确定物体在世界中的距离。

如何处理单个平台测距系统的具体细节超出了本文的范围。但是,有希望:已经提出了一个 WebXR 命中测试模块的提案,该模块将作为 WebXR 的一个附加层,提供一个用于执行命中测试和碰撞检测的 API。

另见