【发布时间】:2020-11-25 16:26:39
【问题描述】:
我正在尝试使用 Reality Kit 玩增强现实。
我想让我的程序执行以下操作之一,用户可选择:
- 仅检测水平表面。
- 仅检测垂直表面。
- 检测水平和垂直表面。
- 检测图像,例如打印目标,附加到现实世界中的对象,然后应用检测到它。
据我所知,为了做到这一点,我需要调整 3 件事:
ARWorldTrackingConfiguration
做类似的事情
func initSession() {
let config = ARWorldTrackingConfiguration()
config.planeDetection = .vertical
arView.session.delegate = self
arView.session.run(config)
}
在 Experience.rcproject 中创建场景
一个用于我需要的锚定类型。我创建了三个具有以下锚类型的“场景”:horizontal、vertical 和 image。
创建一个 ARCoachingOverlayView
指导用户使检测正常工作。
这些是问题:
-
ARWorldTrackingConfiguration对于planeDetection只有两个选项:horizontal或vertical。 -
Experience.rcproject里面的场景,只能是3种:horizontal,vertical或者image。 -
ARCoachingOverlayView.goal的选项是:tracking(如果没有适当的文档,很难弄清楚)、horizontalPlane、verticalPlane和anyPlane。
问题:
-
如果
ARWorldTrackingConfiguration和ARCoachingOverlayView.goal没有这四个选项,我该如何配置以使应用仅检测horizontal、仅vertical、horizontal and vertical和images? -
Experience.rcproject内部有 3 个场景,一个用于horizontal,一个用于vertical,一个用于image检测。是这样的吗?
【问题讨论】:
-
我没有使用过它,但似乎
.planeDetection是Set.. 这个编译没有任何抱怨,所以它可以回答你的一个问题:config.planeDetection = [.vertical, .horizontal]...除此之外,我希望您知道您可以通过一次提出一个问题来获得更好的答案。 -
好的,它是一个集合,它解决了水平,垂直或两者的问题,但是没有图像的选项。
-
这三个元素也必须有相同的选项......问题是没有关于如何做的解释。
-
我刚刚抓住了这两个教程:appcoda.com/arkit-image-recognition 和 appcoda.com/arkit-horizontal-plane ...同时设置
configuration.detectionImages = referenceImages和configuration.planeDetection = [.vertical, .horizontal]...“合并”这两个renderer功能...我有一个视图控制器,可以检测水平和垂直平面和图像。显然,根据您的应用目标,还有更多工作要做,但我希望这可能是一个很好的起点(我花了大约 5 分钟)。 -
这是我在 GitHub 上的分叉仓库的链接:github.com/DonMag/ARKitImageRecognition
标签: swift augmented-reality arkit realitykit reality-composer