ARKit - ARSession 问题

ARKit - Issue with ARSession

我正在尝试创建 ARSession,使用 ARKit 和 Xcode 9 beta(针对 iOS 11)。但是好像不能正常使用。

我试过的代码是:

override func viewDidLoad() {

    super.viewDidLoad()

    // configure session
    let configuration = ARWorldTrackingSessionConfiguration()
    configuration.planeDetection = .horizontal

    // run session
    sceneView.session.run(configuration)
}

有人能帮忙吗?根据 Apple 文档,代码几乎是正确的。

A​​RWorldTrackingSessionConfiguration 仅支持 iOS 具有 A9 处理器或更高处理器的设备。

根据 Apple 文档:

  • 在 iOS 配备 A9 处理器或更新处理器的设备上, ARWorldTrackingSession配置 subclass 提供高精度运动跟踪并启用功能来帮助您放置与现实世界相关的虚拟内容 曲面。

  • 在 ARKit 支持的其他设备上,ARSessionConfiguration 基础 class 提供基本的运动跟踪,允许稍微少一些 身临其境的增强现实体验。

iPhone 和处理器:

 iPhone 6 and iPhone 6 plus has A8 processor.
 iPhone SE, iPhone 6s, iPhone 6s plus has A9 processor.
 iPhone 7, iPhone 7plus has A10 processor

您对视图控制器的生命周期有疑问。根据 apple guideline for ARSession,它 Session 可以在你查看完全加载后。我的意思是,用户视图将出现在 运行 您的会话中。

这是相同的苹果文档:Building a Basic AR Experience

另外,请看下面的示例。

由于 iOS11 beta1 错误,还有另一个问题,iOS 11 Beta 1 Release Notes And Known Issues According To Apple

这意味着您需要 iPhone 6 秒或更长时间才能在当前时间使用 ARKit(ARSessionConfiguration)。直到 iOS11 beta2 发布...

2017.07.13 update

我的iphone6已经更新到iOS11beta3,而且可以运行ARWorldTrackingSessionConfiguration,厉害了!

2017.09.07 update

iphone6 不能 运行 ARWorldTrackingConfiguration 最近 iOS11 beta ...... :(

您还需要初始化一个SCNScene 并将其添加到ARSCNView。

let scene = SCNScene()
sceneView.scene = scene

我通常也会在设置会话之前执行此操作。