2

根据苹果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)
}

我希望我正在创建的飞机能够检测到飞机的大小和位置。然而,这不会发生。

所以我的问题是,光线投射是否适合检测表面尺寸和位置。或者它只是用于检查表面上的二维点位置。

4

1 回答 1

1

苹果文档在这里说:

Raycast instance 方法针对给定原点、方向和长度的光线,针对场景中的所有几何图形执行凸光线投射。

这里:

Raycast instance 方法对场景中的所有几何图形执行凸光线投射,以获得两个端点之间的光线。

在这两种情况下,光线投射方法都用于检测交叉点。在这两种情况下,这些方法都会返回一个碰撞投射命中结果数组

这就是光线投射的全部目的。

于 2019-10-10T19:53:30.600 回答