Я работаю с 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
без остановок, даже когда на экране нет нужных якорей.
Я что-то здесь упускаю?Или есть другой способ сделать это?