我试图在我的ARKit应用程序中找到最近的Plane的位置。我写了一些代码来帮助找到它,但出于某种原因,当我运行我的应用程序时,它会在我尝试将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
}
答案 0 :(得分:0)
很难判断没有异常描述。
我可以假设hitTest没有检测到任何锚点。
在这种情况下,您的anchors
为空。
let spefAnchor = MDLTransform(matrix: anchors[0].localTransform)//finds closest plane
在这里你应该崩溃。