从 RayCasting 获取平面尺寸

Getting plane size from RayCasting

根据苹果的这篇文章Ray-Casting and Hit-Testing。我应该使用 RealityKit 提供的光线投射来检测表面,而不是像 Apple 所说的那样使用 ARKit 提供的命中测试

but the hit-testing functions remain present for compatibility

。但是,我无法找到一种方法来了解光线投射查询检测到的表面范围。

所以根据这个代码:

    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)
}

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

所以我的问题是,光线投射是否适合检测表面大小和位置。或者它只是为了检查表面上的 2d 点位置。

Apple 文档说 here:

Raycast instance method performs a convex ray cast against all the geometry in the scene for a ray of a given origin, direction, and length.

here

Raycast instance method performs a convex ray cast against all the geometry in the scene for a ray between two end points.

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

这就是所有光线投射的目的。