Есть ли способ проверить, когда определенный ARAnchor / SCNNode отображается на экране в текущем ARSCNView - PullRequest
0 голосов
/ 24 января 2019

Я работаю с ARKit на iOS 12. В настоящее время я создал и сохранил список добавленных ARAnchor и соответствующих им SCNNode.Теперь я пытаюсь определить, когда якорь / узел отображается в текущем фрейме сеанса (т. Е. Когда они появляются на экране).

Я посмотрел почти всюду в документации, не смог найти ничего подходящегокроме session(_:didUpdate:).Я попытался перебрать frame.anchors, которые также сохранены в моем списке ARAnchor, и напечатать что-то

func session(_ session: ARSession, didUpdate frame: ARFrame) {

        DispatchQueue.main.async {
            self.updateMappingState(frame.worldMappingStatus)
        }

        if isGameStarted {
            for anchor in frame.anchors where boxes[anchor] != nil {
                let box = boxes[anchor]
                print("Box found: \(box.) \(frame.timestamp)")
                box?.flashAnchor()
                flashFoundBox()
            }
        }
    }

Но он печатает Box found без остановок, даже когда на экране нет нужных якорей.

Я что-то здесь упускаю?Или есть другой способ сделать это?

...