У меня есть следующий код:
guard let feauturePoint = frame.hitTest(normalizedPoint, types: .featurePoint).first?.worldTransform else {
return
}
let anchor = MyAnchorSubclass(transform: feauturePoint, plus: someAdditionalInfo)
arSession.add(anchor: anchor)
Эта функция создает и добавляет объект моего подкласса ARAnchor. Затем...
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let anchor = anchor as? MyAnchorSubclass else { return }
anchors.append(anchor)
/* then goes some my logic with adding SCNNode */
}
... после рендеринга якоря я добавляю туда свой SCNNode. Но когда я использую anchors.append(anchor)
, где anchors
равно [MyAnchorSubclass]
, сцена зависает сразу после 14 добавленных якорей. Если я не сохраняю привязку в массиве, представление сцены не зависает.
Кто-нибудь знает, что это такое? Ошибка iOS 11 Beta или какие-то ограничения?
ОБНОВЛЕНИЕ
Последнее, что происходит - вызывается renderer(_:didUpdate:for:)
, после чего вид сцены зависает, и в журнале появляется несколько сообщений [Technique] World tracking performance is being affected by resource constraints [0]
.
ОБНОВЛЕНИЕ 1
Интересный факт: после того, как приложение уходит в фон и возвращается обратно, вызываются sessionWasInterrupted(:)
и sessionInterruptionEnded(:)
, хотя до этого представление сцены было заморожено.
renderer(_:didUpdate:node:for anchor:)
. И после этого я вижу несколькоWorld tracking performance is being affected by resource constraints [0]
сообщений. - person Vasilii Muravev   schedule 02.08.2017appearing after the session failed, or also before
- после - person Vasilii Muravev   schedule 07.08.2017