ios - ARKit - 你能在 session 中改变 planeDetection 吗?

标签 ios swift arkit

我有一个 popoverviewcontroller 来切换水平或垂直平面检测。我知道它是使用协议(protocol)和委托(delegate)正确传递的,但由于某种原因它不会更改配置。我更改协议(protocol)功能中的配置。

谢谢!

最佳答案

您可以通过使用新配置再次调用 run(_:options:) 来更改正在运行的 session 的配置。

如果您将 options 参数留空(或省略),并传递与当前正在运行的 session 相同类型的配置,则有关 session 的所有内容(现有 anchor 等)都将保持不变,除了您对配置所做的任何更改。

// before
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
session.run(configuration)

// after
let newConfiguration = ARWorldTrackingConfiguration()
newConfiguration.planeDetection = .vertical
session.run(newConfiguration)

在这种情况下,如果您更改平面检测设置但在重新运行 session 时不删除现有 anchor ,则现有水平面 anchor 将保留在 session 中,但不会再更新。


听起来您看到的问题是您正在更改已传递给 session 的配置的属性,而不是再次将其传递给 session — 这是调用 run< 的行为 使用您的配置使更改生效。

可以这样想:ARConfiguration 就像您在三明治店使用的订购单。你勾选说你想要洋葱和蛋黄酱的方框,然后把表格交给收银员。表格在复写纸上,所以他们从背面撕下复印件并交给厨房,然后将原件还给您,这样您就可以在取餐柜台出示它来领取食物。如果你潦草地写下“蛋黄酱”并改为检查鳄梨酱,除非你再次与收银员交谈,否则它不会改变厨房的制作。

关于ios - ARKit - 你能在 session 中改变 planeDetection 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50066738/

相关文章:

ios - 第一次设置后我似乎无法设置 MKMapView 注释标题

ios - 如何更新uitableviewcell中的约束动画

swift - Swift tvOS 中的嵌套 dataTaskWithRequest

ios - 使用 dispatch_async 在后台加载图像

ios - 如何将 SKScene 添加到 SCNNode 平面?

swift - iOS : Issue with lightning in USDZ file

ios - 魔法记录持久性问题

ios - 如何在 Swift/Xcode 中对 1 个数组进行排序并通过相同的键更改对多个其他数组进行重新排序

swift - 给 SCNPlane 添加阴影

ios - 在iCloud中持久保存已保存的音频和视频文件