Как создать SCNPlane (как изображение, которое я прикрепил ниже) между двумя географическими местоположениями? - PullRequest
0 голосов
/ 27 ноября 2018

Я использую фреймворк «Mapbox» для навигации AR, и мне нужно добавить SCNPlane между двумя географическими точками, как показано на рисунке ниже

enter image description here

// codes - добавление SCNNode и SCNPlane

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    // 1

    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }

    // 2
    let width = CGFloat(planeAnchor.extent.x )
    let height = CGFloat(planeAnchor.extent.z)
    let plane = SCNPlane(width: width, height: height)

    // 3
    plane.materials.first?.diffuse.contents = UIColor.lightText

    // 4
    let planeNode = SCNNode(geometry: plane)

    // 5
    let x = CGFloat(planeAnchor.center.x)
    let y = CGFloat(planeAnchor.center.y)
    let z = CGFloat(planeAnchor.center.z)
    planeNode.position = SCNVector3(x,y,z)
    planeNode.eulerAngles.x = -.pi / 2

    // 6
    node.addChildNode(planeNode)
}

// обновление узлов здесь

func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {

    // 1
    guard let planeAnchor = anchor as?  ARPlaneAnchor,
        let planeNode = node.childNodes.first,
        let plane = planeNode.geometry as? SCNPlane
        else { return }

    // 2
    let width = CGFloat(planeAnchor.extent.x + 100)
    let height = CGFloat(planeAnchor.extent.z )
    plane.width = width
    plane.height = height

    // 3
    let x = CGFloat(planeAnchor.center.x)
    let y = CGFloat(planeAnchor.center.y)
    let z = CGFloat(planeAnchor.center.z)
    planeNode.position = SCNVector3(x, y, z)

}

здесь, я использую ARPlaneAnchor для определения плоскости и добавление / обновление SCNNode с использованием didAdd / didUpdateделегаты, но мне нужно нарисовать SCNPlane между двумя географическими точками без использования ARPlaneAnchor.

Заранее спасибо,

...