0

ARKit用来扫描ARSCNView. 我想稍后将它们绘制为二维线(从上方平行投影)。ARPlaneAnchor没有起点和终点,只有中心点和宽度(ARPlaneAnchor.extent)。

我也尝试了SCNNode它的boundingBox对象,但那里的直接坐标与扫描平面不同。

如何转换ARPlaneAnchor或转换SCNNode为 2d 线(2d coordiantes)?

4

1 回答 1

1

您应该能够使用中心点和高度/宽度来计算估计的平面边缘位置并从那里开始。请注意,这center是相对于飞机的锚点。

假设你的飞机是垂直的,就像你注意到的那样,这样的事情应该让你开始:

    let centerLocal = verticalPlane.center
    let centerWorld = centerLocal + verticalPlane.transform.translation
    let extents = verticalPlane.extent
    let upperLeft = centerWorld + SIMD3<Float>(-extents.x / 2, 0, extents.z / 2)
    let bottomRight = centerWorld + SIMD3<Float>(extents.x / 2, 0, -extents.z / 2)

我使用的扩展:

extension float4x4 {
    // Treats matrix as a transform matrix and grabs the 
    // translation component of the transform.       
    var translation: SIMD3<Float> {
        let translation = columns.3
        return SIMD3<Float>(translation.x, translation.y, translation.z)
    }
}
于 2020-12-19T23:09:27.923 回答