Swift 阿基特&x2013;无平面探测和撞击测试的锚固

Swift 阿基特&x2013;无平面探测和撞击测试的锚固,swift,augmented-reality,scenekit,arkit,realitykit,Swift,Augmented Reality,Scenekit,Arkit,Realitykit,这是我之前一篇文章的后续问题。目前,我正在将SCNNode放置在现实世界中的已知坐标处。我的应用程序要求用户避免使用平面检测或命中测试,而是可以将对象放置在已知坐标处,并希望它保持在该位置 目前,锚定的性能不太理想,我想找到改进的方法。如果可能的话,我愿意听取任何建议 提前谢谢 Arkit4.0解决方案 在ARKit的最新版本中,有一种称为的GPS定位锚(由于实现了CoreLocationframework),它使用了熟悉的初始值设定项: @nonobjc convenience init(co

这是我之前一篇文章的后续问题。目前,我正在将SCNNode放置在现实世界中的已知坐标处。我的应用程序要求用户避免使用平面检测或命中测试,而是可以将对象放置在已知坐标处,并希望它保持在该位置

目前,锚定的性能不太理想,我想找到改进的方法。如果可能的话,我愿意听取任何建议

提前谢谢

Arkit4.0解决方案 在ARKit的最新版本中,有一种称为的GPS定位锚(由于实现了
CoreLocation
framework),它使用了熟悉的初始值设定项:

@nonobjc convenience init(coordinate: CLLocationCoordinate2D, 
                            altitude: CLLocationDistance?)
Arkit3.0解决方案 当然,您可以在AR场景中放置模型,而无需
平面检测
命中测试
/
光线投射
,尽管这可能会导致一些AR异常-您的模型可能放置在场景栅格下方,或者模型可能放置在错误位置,从而导致不正确的视差

有一件事你的场景必须总是有一个锚定你的模型。如果没有锚定,您的模型可能会漂浮在场景中,从而导致糟糕的用户体验。在平面检测的情况下,您会自动将
ARPlaneAnchor
拴在不可见平面上

因此,让我们看看即使不使用平面检测和命中测试,您也必须实施哪些方法来获得稳健的AR体验:

  • 使用预跟踪。它很难建造建筑物
  • 在跟踪环境中使用易于识别的产品(二维码、路标等)
  • 使用框架和iBeacon导航
  • 使用指南针校准
  • 使用周围物体检测AI算法
您可以单独或组合使用这些方法

但有一件令人不快的事你必须知道——ARKit/SceneKit模式的工作距离高达1000米。如果你的模型超出了这个限制,你会得到


谢谢你的回复,安迪!目前,我正在使用重力和航向罗盘校准,我知道这改善了整体效果。如果您不介意的话,使用GPS和谷歌地图需要哪些必要步骤,以及如何改进锚定过程?此外,关于周围物体检测算法,您是否有任何资料可以解释基本方法的过程?对不起,我以前从未想过使用这些解决方案,所以我对它们几乎一无所知。提前谢谢@sptrad,我已经更新了我的答案(这些链接非常有用)。