Это первый раз, когда я создаю приложение ARKit, а также не очень знаком с разработкой iOS, однако я пытаюсь достичь чего-то относительно простого ...
Все, что нужно приложению, do - это получить положение телефона в мире и постоянно отправлять его в api отдыха.
Я использую проект ARKit по умолчанию в Xcode и могу получить положение телефона с помощью следующей функции в ViewController.swift :
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if let planeAnchor = anchor as? ARPlaneAnchor {
let plane = SCNPlane(width: CGFloat(planeAnchor.extent.x), height: CGFloat(planeAnchor.extent.z))
plane.firstMaterial?.diffuse.contents = UIColor(white: 1, alpha: 0.75)
let planeNode = SCNNode(geometry: plane)
planeNode.position = SCNVector3Make(planeAnchor.center.x, planeAnchor.center.x, planeAnchor.center.z)
planeNode.eulerAngles.x = -.pi / 2
node.addChildNode(planeNode)
}
guard let pointOfView = sceneView.pointOfView else { return }
let transform = pointOfView.transform
let orientation = SCNVector3(-transform.m31, -transform.m32, transform.m33)
let location = SCNVector3(transform.m41, transform.m42, transform.m43)
let currentPositionOfCamera = SCNVector3(orientation.x + location.x, orientation.y + location.y, orientation.z + location.z)
print(currentPositionOfCamera)
}
эта функция работает должным образом, in отображает плоскость в представлении и печатает позицию, но только один раз
Мне нужно получить положение телефона при его перемещении я попытался добавить: updateAtTime time: NSTimeInterval в определение функции, но после этого даже плоскость больше не отображалась.
Как я могу постоянно получать вектор положения телефона?
TIA