Где я могу установить максимальное количество маркеров для ARView? - PullRequest
1 голос
/ 01 июля 2019

Я использую несколько уникальных якорных маркеров в сцене, для каждого из которых отображается ModelEntity. У меня нет проблем с определением каждого маркера по отдельности, но как только один из них отслеживается и появляется модель, другие не отслеживаются. Если отслеживаемый маркер выходит за пределы кадра, внезапно начинает отслеживаться другой маркер.

Я подозреваю, что существует настройка для максимального количества маркеров, и она установлена ​​на 1. (Как и maximumNumberOfTrackedImages от SceneKit.) Есть ли настройка, которую я здесь пропускаю, это ограничение RealityKit, или я просто что-то напутал, когда добавляю свои якоря на сцену?

Я вызываю следующую функцию для каждого элемента в массиве:

class RealityViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
            let arView = ARView(frame: UIScreen.main.bounds)
            view.addSubview(arView)

            let targets = ["image1", "image2", "image3"]
            for target in targets {
                addTarget(target:target,arView:arView)
            }
    }

    func addTarget(target: String, arView: ARView) {

        let imageAnchor = AnchorEntity(.image(group: "Markers", name: target))
        arView.scene.addAnchor(imageAnchor)
        let plane = MeshResource.generatePlane(width: 0.05, height: 0.05, cornerRadius: 0.0)
        let material = SimpleMaterial(color: .blue, roughness: 1.0, isMetallic: false)
        let model = ModelEntity(mesh: plane, materials: [material])
        imageAnchor.addChild(model)
    }
}

Обновление: Хотя ответ @ ARGeo действительно решил исходный вопрос во время дальнейшего тестирования, я обнаружил, что с обновленным кодом я смог отслеживать только максимум 4 цели за раз. Опять же, я не уверен, что это жесткий предел RealityKit или что-то еще, но если у кого-то есть понимание, пожалуйста, добавьте к принятому ответу.

Ниже вы видите только 4 из 6 отслеживаемых уникальных маркеров:

4 of 6 markers being tracked

1 Ответ

1 голос
/ 06 июля 2019

В ARKit и RealityKit нет свойства number of markers being tracked.

Итак, чтобы исправить ситуацию, вам нужно использовать этот код для добавления якорей в ARView:

arView.scene.anchors.append(imageAnchor)

И вы также можете попробовать этот код для цикла for-in (поскольку бета-версия Xcode 11 может некорректно запустить цикл):

for i in 0..<targets.count {
    addTarget(target: targets[i], arView: arView)
}

PS Отслеживается только 4 изображения :

Посмотрите на этот пост .@ElliottMalone сказал, что есть ограничения фреймворка, которые касаются возможности отслеживать более 4 изображений.

...