【问题标题】:Unable to run the session when trying to run ARKit Test尝试运行 ARKit 测试时无法运行会话
【发布时间】:2017-12-10 07:43:53
【问题描述】:

我正在尝试弄清楚 ARKit 的工作原理。因此,我从 GitHub 下载了两个不同的项目。

1-)https://github.com/brianadvent/Simple-ARKit-Game

2-)https://github.com/exyte/ARTetris

我都收到“无法运行会话,此设备不支持配置: “ 错误。 我正在 Xcode 和 iOS 中运行最新版本的测试版。

编辑:我在 Viewcontroller 中有这段代码。它不应该工作吗?

private func getSessionConfiguration() -> ARSessionConfiguration {
    if ARWorldTrackingSessionConfiguration.isSupported {
        // Create a session configuration
        let configuration = ARWorldTrackingSessionConfiguration()
        configuration.planeDetection = .horizontal
        return configuration;
    } else {
        // Slightly less immersive AR experience due to lower end processor
        return ARSessionConfiguration()
    }
}

【问题讨论】:

  • 某些设备不支持 WorldConfiguration,这可能是已设置的。例如iPhone 6 不支持。您可以尝试将该配置更改为默认配置。
  • 手机只支持6s和6s plus,7和7s plus
  • 那么我不能在 iPhone 6 中获得真实场景中的模型吗?还是只是别的什么?

标签: ios iphone swift xcode arkit


【解决方案1】:

您必须将两个项目中设置为配置的变量ARWorldTrackingSessionConfiguration 更改为普通的ARSessionConfiguration。考虑一下,如果你这样做,你只能得到设备的方向,而不是它在现实世界中的位置!因此,应用程序可能无法正常工作。你也可以换成另一台支持ARWorldTrackingSessionConfiguration的设备,那么一切都应该没问题,但是例如iPhone 6就不能这样做。

正如 karthik 提到的,只有 6s 和 6s plus ,7 和 7s plus 支持 WorldTracking 配置。它也适用于 iPad(第 5 代)AFAIK。

更新: 我认为问题在于,iPhone 6 只有 A8 处理器。 ARKit 模块有一个 important 通知,上面写着:

重要 ARKit 需要配备 A9 或更高版本处理器的 iOS 设备。

要使您的应用仅在支持 ARKit 的设备上可用,请使用应用 Info.plistUIRequiredDeviceCapabilities 部分中的 arkit 密钥。如果增强现实是您应用的次要功能,请使用 支持 属性来判断当前设备是否支持你要使用的会话配置。

如果您查看 Simple-ARGame,您会看到,Touches 将被监听,但计算速度非常慢。我查看了iPhone 6 的技术文档,上面说它只有一个 A8 处理器。所以可能你必须用另一台设备测试 ARKit。

【讨论】:

  • 我编辑了我的问题。我有一个代码可以检查它是否有 worldtrackin,但我仍然得到白屏。我不应该用相机代替这个吗?
  • 我仍然不明白我们在 iPhone 6 中使用 ARkit 可以做什么。我的意思是如果我们不能使用它,为什么它有一个“ARSessionConfiguration()”函数?
  • @Emre Önder,抱歉,我无法回答你这个问题。那是…… ARKit 团队应该回答你。但我认为,当 Apple 说不支持 A9 下的所有内容时,ARKit 仅适用于较新的设备。可能有一些事情只有 A9 或更高版本的处理器可以做,这极大地优化了 ARKit。
  • Apple 的消息在 WWDC / beta 1 中有点不清楚,ARSessionConfiguration 是否会在早于 A9 的设备上受支持,但即使在 beta 1 中它实际上也没有工作 i> 在这些设备上。 docs@MarcelT 提到的“重要”说明似乎清楚地表明它不适用于旧设备。
  • @EmreÖnder 关于“如果不能使用 API,为什么还要使用它?”问题...当您在 Xcode 中编写/编译代码时,您不知道它可以在什么设备上运行。您正在创建一个可以在任何设备上运行的二进制文件。所以 Xcode 无法知道您对该函数的调用是否会成功。您需要在调用该 API 之前检查 ARSessionConfiguration.isSupported,或者使用 UIRequiredDeviceCapabilities 告诉 iOS 禁止在不兼容的设备上安装您的应用。
猜你喜欢
  • 2021-02-18
  • 2021-05-17
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多