ARKit: выберите, какой ARImageAnchor отслеживать
Опытным путем я обнаружил, что ARKit не отслеживает более 4-х якорей изображения одновременно; установка maximumNumberOfTrackedImages
до числа выше 4 игнорируется:
ARKit обнаруживает их все и показывает дюжину изображений-маркеров. ARImageAnchor
с, однако только 4 из них будут иметь isTracked == true
,
Я не смог найти никаких ссылок на это ограничение в документации Apple, однако это было упомянуто в этом посте:
[...] на данный момент вы можете включить отслеживание до 2 изображений, но в будущих выпусках это число наверняка будет расти.
Я хотел бы выбрать, какие якоря отслеживаются, чтобы я мог точно отслеживать якоря в центре экрана в приоритетном порядке.
Я попытался удалить якоря, которые я не хочу отслеживать, надеясь, что ARKit отследит другие:
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
guard let anchors = sceneView.session.currentFrame?.anchors.compactMap({ $0 as? ARImageAnchor }), anchors.count > 0 else {
return
}
let sortedAnchors = anchors.sorted { distanceToScreenCenter($0, renderer) < distanceToScreenCenter($1, renderer) }
sortedAnchors.dropFirst(4).filter({ $0.isTracked }).forEach({
self.sceneView.session.remove(anchor: $0)
})
Но не повезло, удаленные якоря добавляются и сразу же отслеживаются.