您在这里提到的所有挑战都可能在ARKit
/ SceneKit
pair 或 in 中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)
但是,如果您想在 RealityKit 中实现类似的行为,请使用以下命令:
let objectAnchor = AnchorEntity(.object(group: "Resources", name: "object"))
和:
let imageAnchor = AnchorEntity(.image(group: "Resources", name: "model"))
渲染引擎
- 渲染附加到锚点的虚拟模型。
目前,ARKit 有四个伙伴可以帮助您渲染 2D 和 3D 图形:
- RealityKit(3D引擎)
- SceneKit(3D引擎)
- 金属(3D引擎)
- SpriteKit(2D 引擎)
材料
- 让虚拟模型呈现遮挡。
在 RealityKit 模块中,所有材质都是符合Material协议的结构。目前有6种材料。你需要OcclusionMaterial
.
- OcclusionMaterial(隐藏在其后面渲染的对象的不可见材质)
- SimpleMaterial(可以应用于网格的基本材质)
- UnlitMaterial(一种不响应场景中灯光的简单材质)
- VideoMaterial(一种允许您使用 AVPlayer 在其上播放视频的材料)
- PhysicallyBasedMaterial(一种模拟真实世界对象外观的材质)
- CustomMaterial(名称自描述的材料)
查看这篇文章,了解如何在 RealityKit 中以编程方式分配材料。
这篇文章向您展示了如何在 SceneKit 中分配自定义遮挡材料。
更新 3D 内容
- 让虚拟模型与锚图像/对象一起移动。
ARKit
要在+中实现这种类型的行为,SceneKit
您必须使用renderer(_:didAdd:for:)或session(_:didAdd:)。在 RealityKit 中,AnchorEntities 被自动跟踪。