【问题标题】:How to enable object permanence / tracking with ARKit?如何使用 ARKit 启用对象持久性/跟踪?
【发布时间】:2020-03-12 00:20:15
【问题描述】:

我在 Swift 中构建了一个超简单的 AR 应用程序(在模板上扩展),以在图像锚点上显示 3D 模型。但是当图像锚点超出框架时,附加的模型就会消失——它们会在下次检测到锚点时重新加载。

如果模型在用户平移时保持不变,那将是一个更好的体验。如何启用对象持久性?

我的代码:

import UIKit
import RealityKit

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Load scenes 
        let OneAnchor = try! One.loadFace()
        let TwoAnchor = try! Two.loadFace()
        let ThreeAnchor = try! Three.loadFace()
        let FourAnchor = try! Four.loadFace()

        // Add anchors
        arView.scene.anchors.append(OneAnchor)
        arView.scene.anchors.append(TwoAnchor)
        arView.scene.anchors.append(ThreeAnchor)
        arView.scene.anchors.append(FourAnchor)
    }
}

【问题讨论】:

    标签: swift augmented-reality arkit realitykit


    【解决方案1】:

    对于持久性,您需要使用带有.detectionImages 实例属性的ARWorldTrackingConfiguration 类而不是ARImageTrackingConfiguration 类。

    官方文档是这样说的:

    ARWorldTrackingConfiguration 可以创造身临其境的 AR 体验:即使用户倾斜设备以查看对象上方或下方,或者将设备四处移动查看对象的侧面和背面。

    viewWillAppear(animated) 生命周期方法中的代码可能如下所示:

    label.text = "Track your environment"
    
    guard let refImages = ARReferenceImage.referenceImages(inGroupNamed: "Pictures", 
                                                                 bundle: nil)
    else { 
        return 
    }
    
    let config = ARWorldTrackingConfiguration()
    config.detectionImages = refImages
    config.maximumNumberOfTrackedImages = 4
    
    let options = [ARSession.RunOptions.removeExistingAnchors,
                   ARSession.RunOptions.resetTracking]
    
    arView.session.run(config, options: ARSession.RunOptions(options))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 2018-09-02
      • 1970-01-01
      • 2020-04-24
      • 2012-03-29
      • 2020-10-01
      相关资源
      最近更新 更多