Reality实现2D图片识别跟踪

2023-03-22  本文已影响0人  浪淘沙008
import UIKit
import RealityKit
import ARKit

class ViewController: UIViewController, ARSessionDelegate {

    var arView: ARView!
   
    override func viewDidLoad() {
        super.viewDidLoad()
        
        arView = ARView(frame: .zero)
        let config = ARImageTrackingConfiguration()

        let trackedImagesLib01 = ARReferenceImage(UIImage(named: "anchor_img_01")!.cgImage!, orientation: .up, physicalWidth: 0.05)

        // 通过命名可以在获取锚点时确定是什么内容
        trackedImagesLib01.name = "fox"
        let trackedImagesLib02 = ARReferenceImage(UIImage(named: "anchor_img_02")!.cgImage!, orientation: .up, physicalWidth: 0.05)
        trackedImagesLib02.name = "toy_biplane"
        config.trackingImages = [trackedImagesLib01, trackedImagesLib02]
        
        config.maximumNumberOfTrackedImages = 2
        self.view.addSubview(arView)
        arView.session.delegate = self
        arView.session.run(config, options: [])
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        arView.frame = self.view.frame
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        arView.session.pause()
    }

    func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
        guard let imageAnchor = anchors[0] as? ARImageAnchor else {
            return
        }
        // 图片识别加载模型
        DispatchQueue.main.async {
            do {
                let myModelEntity = try ModelEntity.load(named: imageAnchor.name!)
                let objectAnchorEntity = AnchorEntity(anchor:imageAnchor)
                objectAnchorEntity.addChild(myModelEntity)
                objectAnchorEntity.scale = [0.1, 0.1, 0.1]
                self.arView.scene.addAnchor(objectAnchorEntity)
                myModelEntity.playAnimation(myModelEntity.availableAnimations[0].repeat())
            } catch {
                print("无法加载模型")
            }
        }
            }
    
}
        
图片跟踪.gif
上一篇 下一篇

猜你喜欢

热点阅读