ARKit 对象随机摆动
Posted
技术标签:
【中文标题】ARKit 对象随机摆动【英文标题】:ARKit object randomly wiggles 【发布时间】:2019-01-28 13:11:33 【问题描述】:在我们的 arkit 项目中,对象开始摆动。我们尝试使用较旧的代码,在我们遇到此问题之前它运行良好,但摆动并没有停止。 我们启用了调试选项来显示原点,它也会摆动。我们尝试将我们的应用程序用于不同的设备(iphone XS、Ipad pro 2018、ipad 2018,均使用 ios 12.1.3)和对象。 跟踪图像的大小合适。
这是我们的配置(Swift):
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
guard let referenceImages = ARReferenceImage.referenceImages(inGroupNamed: "Photos", bundle: Bundle.main) else return
let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = referenceImages
configuration.maximumNumberOfTrackedImages = 2
let options: ARSession.RunOptions = [.resetTracking, .removeExistingAnchors]
sceneView.session.run(configuration, options: options)
sceneView.delegate = self
这是我们的渲染器:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
guard let imageAnchor = anchor as? ARImageAnchor else return
let referenceImage = imageAnchor.referenceImage
let imageName = referenceImage.name ?? "no name"
let plane = SCNPlane(width: referenceImage.physicalSize.width, height: referenceImage.physicalSize.height)
let planeNode = SCNNode(geometry: plane)
plane.firstMaterial?.diffuse.contents = UIColor(white: 1, alpha: 0) //make the plane invisable
let obj = SCNScene(named: "art.scnassets/obj.scn")!
let objNode = obj.rootNode.childNodes.first!
objNode.position = SCNVector3Zero
objNode.eulerAngles.y = 90
planeNode.addChildNode(objNode)
node.addChildNode(planeNode)
任何人都可以帮助阻止摆动吗?
【问题讨论】:
【参考方案1】:问题在于:“世界跟踪是一门不精确的科学。这个过程通常可以产生令人印象深刻的准确性,从而带来逼真的 AR 体验。但是,它依赖于设备物理环境的细节,这些细节并不总是一致或难以实时测量而不会出现一定程度的错误。要构建高质量的 AR 体验,请注意这些警告和提示”。 来自
来自Understanding World Tracking in ARKit。
为了获得更好的 AR 体验,请为您的应用提供适当的物理环境,包括良好的照明、带纹理的地板等... 希望对您有所帮助!
【讨论】:
以上是关于ARKit 对象随机摆动的主要内容,如果未能解决你的问题,请参考以下文章