我想在ARKit中构建一个演示应用程序,我对目前的测试版有一些疑问(苹果一直称之为RealityKit,或ARKit 3.0)。
我尝试构建的演示应用应执行以下操作:
1.识别真实的环境中的对象或图像,并在那里创建锚
1.渲染附接到所述锚的虚拟模型
1.使虚拟模型具有遮挡
1.使虚拟模型与锚图像/对象沿着移动
我尝试过从早期版本(利用SceneKit的ARKit 2.0)改编一些代码,但某些功能,如人物遮挡,不是ARKit 2.0的一部分。
由于苹果一直在迭代他们的测试版,他们网站上和WWDC 2019上宣传的许多功能似乎已经从RealityKit的文档中消失了(人物遮挡、身体跟踪、世界跟踪)。
据我所知,第(1)项和第(2)项在ARKit 2.0中是可能的。第(3)项在beta版中被宣传为可能的,但我几乎没有看到任何文档。
在最新的测试版中有可能做到这一点吗?如果有,最好的方法是什么?如果没有,有没有像混合旧的和新的API之类的变通方法?
1条答案
按热度按时间093gszye1#
您提到的所有挑战都可以在
ARKit
/SceneKit
和ARKit
/RealityKit
中解决。选择配置
1.确定真实的环境中的对象或图像,并在那里创建锚。
您可以使用ARKit中的以下配置识别
3D objects
或Images
:对比
但是,如果您想在RealityKit中实现类似的行为,请使用以下代码:
或
渲染引擎
1.渲染附着到锚的虚拟模型。
目前,ARKit有四个同伴帮助您渲染3D和2D图形:
材料
1.使虚拟模型显示为遮挡。
RealityKit模块中所有的物料都是符合Material协议的结构,目前有6种物料,需要
OcclusionMaterial
。*OcclusionMaterial(隐藏在其后面渲染的对象的不可见材质)
*简单材质(可应用于网格的基本材质)
*UnlitMaterial(不响应场景中灯光的简单材质)
*VideoMaterial(允许您使用AVPlayer播放视频的素材)
*PhysicallyBasedMaterial(模拟真实世界对象外观的材质)
*自定义物料(名称为自描述的物料)
查看THIS POST,了解如何在RealityKit中以编程方式指定材质。
本文将向您展示如何在SceneKit中指定自定义遮挡材质。
更新3D内容
1.使虚拟模型与图像/对象锚沿着移动。
要在
ARKit
+SceneKit
中实现这种类型的行为,您必须使用renderer(_:didAdd:for:)或session(_:didAdd:)方法。以下是在
renderer(_:didAdd:for:)
示例方法中使用ARObjectAnchor的示例: