Можно ли использовать RealityKit и SceneKit вместе? - PullRequest
0 голосов
/ 28 февраля 2020

Я хотел использовать обнаружение объектов в RealityKit ARView и могу найти документацию только для реализации его в SceneKit ARSCNView.

Есть ли способ обойти это?

1 Ответ

1 голос
/ 27 марта 2020

Класс ARSCNView ARKit является потомком класса SCNView SceneKit, поэтому вам даже не нужно импортировать SceneKit, если вы уже импортировали модуль ARKit. Хотя вы можете легко использовать ARKit и RealityKit вместе.

Для обнаружения объектов RealityKit используйте следующий код:

import ARKit
import RealityKit

extension ViewController: ARSessionDelegate {

    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {

        guard let objectAnchor = anchors.first as? ARObjectAnchor,
              let _ = objectAnchor.referenceObject.name
        else { return }

        let anchor = AnchorEntity(anchor: objectAnchor)   
        anchor.addChild(model)    
        arView.scene.anchors.append(anchor)
    }
}

И поместите соответствующий контент в .arresourcegroup папку !

class ViewController: UIViewController {

    @IBOutlet var arView: ARView! 

    override func viewDidLoad() {
        super.viewDidLoad()    
        arView.session.delegate = self

        guard let obj = ARReferenceObject.referenceObjects(inGroupNamed: "Objs", 
                                                                 bundle: nil) 
        else { return }

        let config = ARWorldTrackingConfiguration()
        config.detectionObjects = obj
        arView.session.run(config)
    }
}
...