Получите стрелку направления к узлу SCNNode, если этот узел не виден в ARCamera - PullRequest
0 голосов
/ 31 октября 2018

Если ARCamera перемещается влево, вправо, вверх или вниз и если этот узел становится невидимым в ARCamera. Я хочу указать стрелку, что вам нужно переместить камеру вверх / вниз / вправо / влево.

1 Ответ

0 голосов
/ 01 ноября 2018
    if let pointOfView = sceneView.pointOfView{
        let isMaybeVisible = sceneView.isNode((displayNode.presentation), insideFrustumOf: pointOfView)
        if isMaybeVisible{
            if arrowVisible{
                 arrow.removeFromParentNode()
            }
        }else{
            if !arrowVisible{
                 sceneView.pointOfView?.addChildNode(arrow)
            }
        }
    }

isNode(_:insideFrustumOf:) здесь проверяет, является ли узел видимым в ARCamera.
Используйте его внутри renderer(_:updateAtTime:)

Edit: Стрелка здесь - это узел (3-я стрелка). Помните, что точка стрелки должна быть направлена ​​на ось -z

    let scene = SCNScene(named: "art.scnassets/arrow.dae")
    let arrow = scene?.rootNode.childNode(withName: "arrow", recursively: false)
    arrow.constraints = [SCNLookAtConstraint.init(target: node)]
...