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)
    })

Но не повезло, удаленные якоря добавляются и сразу же отслеживаются.

0 ответов

Другие вопросы по тегам