根据苹果Ray-Casting 和 Hit-Testing 的这篇文章。我应该使用 RealityKit 提供的光线投射来检测表面,而不是苹果所说的 ARKit 提供的命中测试
但是为了兼容性,命中测试功能仍然存在
. 但是,我找不到知道光线投射查询检测到的表面范围的方法。
所以根据这段代码:
func startRayCasting() {
guard let raycastQuery = arView.makeRaycastQuery(from: arView.center,
allowing: .estimatedPlane,
alignment: .vertical) else {
return
}
guard let result = arView.session.raycast(raycastQuery).first else {
return
}
let transformation = Transform(matrix: result.worldTransform)
let plane = Plane(color: .green, transformation: transformation)
plane.transform = transformation
let raycastAnchor = AnchorEntity(raycastResult: result)
raycastAnchor.addChild(plane)
arView.scene.addAnchor(raycastAnchor)
}
我希望我正在创建的飞机能够检测到飞机的大小和位置。然而,这不会发生。
所以我的问题是,光线投射是否适合检测表面尺寸和位置。或者它只是用于检查表面上的二维点位置。