我ARKit
用来扫描ARSCNView
. 我想稍后将它们绘制为二维线(从上方平行投影)。ARPlaneAnchor
没有起点和终点,只有中心点和宽度(ARPlaneAnchor.extent
)。
我也尝试了SCNNode
它的boundingBox
对象,但那里的直接坐标与扫描平面不同。
如何转换ARPlaneAnchor
或转换SCNNode
为 2d 线(2d coordiantes)?
您应该能够使用中心点和高度/宽度来计算估计的平面边缘位置并从那里开始。请注意,这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)
}
}