RealityKit和ARKit面临的挑战

时间:2019-08-21 15:23:55

标签: ios swift augmented-reality arkit realitykit

我想在ARKit中构建一个演示应用程序,我对Beta的当前功能存在一些疑问(Apple一直将其称为RealityKit或ARKit 3.0)。


我要构建的演示应用程序应执行以下操作:

  1. 识别真实环境中的对象或图像,并在其中创建锚点

  2. 渲染附加到锚点的虚拟模型

  3. 具有带有遮挡的虚拟模型

  4. 使虚拟模型与锚定图像/对象一起移动


我曾尝试改编早期版本(利用SceneKit的ARKit 2.0)中的一些代码,但是某些功能(例如人为遮挡)不是ARKit 2.0的一部分。

由于Apple一直在迭代Beta版本,因此在其网站和WWDC 2019上宣传的许多功能似乎从RealityKit的文档中消失了(人物遮挡,身体追踪,世界追踪)。

据我了解,ARKit 2.0可以实现项目(1)和(2)。第(3)项会在Beta中发布,但我几乎看不到任何文档。

在最新的Beta中可以这样做吗?如果是这样,最好的方法是什么? 如果没有,是否有诸如将新旧API混合之类的解决方法?

1 个答案:

答案 0 :(得分:3)

您在此处提到的所有挑战都可以在ARKit / RealityKit对中

但是让我们把第一件事放在首位。

  
      
  1. 在真实环境中识别对象或图像,然后在其中创建锚点。
  2.   

您可以使用ARKit中的以下配置来识别3D objectsImages

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)
  
      
  1. 渲染附加到锚点的虚拟模型。
  2.   

目前,ARKit有四个助手可帮助您渲染2D和3D图形:

  • RealityKit(3D引擎)
  • SceneKit(3D引擎)
  • 金属(3D引擎)
  • SpriteKit(二维引擎)
  
      
  1. 具有遮挡的虚拟模型。
  2.   

在RealityKit模块中,所有材料是符合Material协议的结构。目前,共有3种类型(结构)的材料:

  • OcclusionMaterial (隐藏材料,隐藏在其后呈现的对象)
  • SimpleMaterial (一种可以应用于网格的基本材料)
  • UnlitMaterial (一种对场景中的灯光不响应的简单材质)

查看THIS POST,了解如何在RealityKit中以编程方式分配材料

  
      
  1. 使虚拟模型与锚定图像/对象一起移动。
  2.   

第四项也是可能的。

P.S。请考虑:如果要使用ARKit 3.0 / RealityKit框架执行此计划,则需要Xcode 11,macOS 10.15和iOS 13。

相关问题