【问题标题】:Find a plane position in ARKit在 ARKit 中查找平面位置
【发布时间】:2017-07-05 06:51:15
【问题描述】:

我试图在我的 ARKit 应用程序中找到最近的飞机的位置。我编写了一些代码来帮助找到它,但由于某种原因,当我运行我的应用程序时,当我尝试将 AR 对象添加到飞机时,它一直在崩溃。我的代码有问题吗?

struct myPlaneCoords {

    var x = Float()
    var y = Float()
    var z = Float()
}

func getPlaneCoordinates(sceneView: ARSCNView) -> myPlaneCoords{//coordinates where an AR node will be added

    let cameraTransform = sceneView.session.currentFrame?.camera.transform
    let cameraCoordinates = MDLTransform(matrix: cameraTransform!)

    let camX = CGFloat(cameraCoordinates.translation.x)
    let camY = CGFloat(cameraCoordinates.translation.y)
    let cameraPosition = CGPoint(x: camX, y: camY)
    let anchors = sceneView.hitTest(cameraPosition, types: ARHitTestResult.ResultType.existingPlane)
    let spefAnchor = MDLTransform(matrix: anchors[0].localTransform)//finds closest plane

    var cc = myPlaneCoords()
    cc.x = spefAnchor.translation.x
    cc.y = spefAnchor.translation.y
    cc.z = spefAnchor.translation.z

    return cc  
}

【问题讨论】:

  • 崩溃在哪里?准确的错误信息是什么?

标签: ios augmented-reality arkit


【解决方案1】:

没有异常描述很难判断。

我可以假设 hitTest 没有检测到任何锚。 在这种情况下,您的 anchors 为空。

let spefAnchor = MDLTransform(matrix: anchors[0].localTransform)//finds closest plane

在这里你应该会崩溃。

【讨论】: