我想在ARKit中构建一个演示应用程序,我对Beta的当前功能存在一些疑问(Apple一直将其称为RealityKit或ARKit 3.0)。
我要构建的演示应用程序应执行以下操作:
识别真实环境中的对象或图像,并在其中创建锚点
渲染附加到锚点的虚拟模型
具有带有遮挡的虚拟模型
使虚拟模型与锚定图像/对象一起移动
我曾尝试改编早期版本(利用SceneKit的ARKit 2.0)中的一些代码,但是某些功能(例如人为遮挡)不是ARKit 2.0的一部分。
由于Apple一直在迭代Beta版本,因此在其网站和WWDC 2019上宣传的许多功能似乎从RealityKit的文档中消失了(人物遮挡,身体追踪,世界追踪)。
据我了解,ARKit 2.0可以实现项目(1)和(2)。第(3)项会在Beta中发布,但我几乎看不到任何文档。
在最新的Beta中可以这样做吗?如果是这样,最好的方法是什么? 如果没有,是否有诸如将新旧API混合之类的解决方法?
答案 0 :(得分:3)
您在此处提到的所有挑战都可以在ARKit
/ RealityKit
对中。
但是让我们把第一件事放在首位。
- 在真实环境中识别对象或图像,然后在其中创建锚点。
您可以使用ARKit中的以下配置来识别3D objects
或Images
:
let configuration = ARWorldTrackingConfiguration()
guard let obj = ARReferenceObject.referenceObjects(inGroupNamed: "Resources",
bundle: nil)
else {
return
}
configuration.detectionObjects = obj // Allows you create ARObjectAnchor
sceneView.session.run(configuration)
和:
let config = ARWorldTrackingConfiguration()
guard let img = ARReferenceImage.referenceImages(inGroupNamed: "Resources",
bundle: nil)
else {
return
}
config.detectionImages = img // Allows you create ARImageAnchor
config.maximumNumberOfTrackedImages = 3
sceneView.session.run(config)
- 渲染附加到锚点的虚拟模型。
目前,ARKit有四个助手可帮助您渲染2D和3D图形:
- 具有遮挡的虚拟模型。
在RealityKit模块中,所有材料是符合Material协议的结构。目前,共有3种类型(结构)的材料:
查看THIS POST,了解如何在RealityKit中以编程方式分配材料。
- 使虚拟模型与锚定图像/对象一起移动。
第四项也是可能的。
P.S。请考虑:如果要使用ARKit 3.0
/ RealityKit
框架执行此计划,则需要Xcode 11,macOS 10.15和iOS 13。