1

所以我想试试 ARKit。我在 iPad air 上安装了 iOS 11,但它一直在崩溃。这是我的视图控制器中的代码

import UIKit
import ARKit

class ViewController: UIViewController {

   @IBOutlet weak var sceneView: ARSCNView!
   @IBOutlet weak var counterLabel: UILabel!
   override func viewDidLoad() {
       super.viewDidLoad()

       let scene = SCNScene()
       sceneView.scene = scene
   }

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(true)

        let configuration = ARSessionConfiguration()
        sceneView.session.run(configuration)
    }
}

所以我搜索了一下,我发现了这个: https ://developer.apple.com/documentation/arkit/building_a_basic_ar_experience 基本上说对于具有比 A9 更旧芯片的设备,应该使用 ARSessionConfiguration 而不是 ARWorldTrackingSessionConfiguration 但是我仍然不断崩溃。
我试过Apple提供的ARKit Demp,同样的。
我也尝试过sceneView.antialiasingMode = .none,但它也没有帮助。

这是我在崩溃时得到的控制台日志

2017-06-26 21:44:16.539469+0200 ARKitGame[562:56168] [DYMTLInitPlatform] 平台初始化成功 2017-06-26 21:44:18.630888+0200 ARKitGame[562:55915] Metal GPU Frame Capture Enabled 2017-06 -26 21:44:18.633276+0200 ARKitGame[562:55915] Metal API Validation Enabled 2017-06-26 21:44:19.625366+0200 ARKitGame[562:56176] [MC] systemgroup.com.apple 的系统组容器。 configurationprofiles 路径是 /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 2017-06-26 21:44:19.628963+0200 ARKitGame[562:56176] [MC] 从公共有效用户设置中读取。2017-06-26 21:44:22.706910+0200 ARKitGame[562:56176]-[MTLTextureDescriptorInternal validateWithDevice:],第 778 行:错误“MTLTextureDescriptor 具有无效的像素格式 (520)。” -[MTLTextureDescriptorInternal validateWithDevice:]:778: 断言“MTLTextureDescriptor 具有无效的像素格式 (520)”失败。(lldb)

4

3 回答 3

1

我已经下载了最新的测试版并在 iPad Air 1 上运行它仍然崩溃,正如 Apple 在这里提到的:https ://developer.apple.com/documentation/arkit

重要 ARKit 需要配备A9或更高版本处理器的 iOS 设备。要使您的应用仅在支持 ARKit 的设备上可用,请使用应用 Info.plist 的 UIRequiredDeviceCapabilities 部分中的 arkit 键。如果增强现实是您应用的次要功能,请使用 isSupported 属性来确定当前设备是否支持您要使用的会话配置。

所以它似乎只适用于 A9 处理器。

于 2017-07-20T09:21:28.977 回答
1

Apple 用 beta 2 更改了ARKit 文档:它现在明确表示 ARKit 作为一个整体——不仅仅是世界追踪——需要 A9。

也许这解释了为什么即使是基本的会话配置似乎也从未真正在 A9 以下的设备上运行......

于 2017-06-30T04:34:25.427 回答
0

ARKit 仅适用于 A9 芯片以后:http ://www.iphonehacks.com/2017/06/list-iphone-ipad-compatible-arkit-ios-11.html

iPad Air 1 有一个 A7 芯片,所以我想这可能就是你所看到的崩溃。

更新:没有注意到您对使用 ARSessionConfiguration 而不是 ARWorldTrackingSessionConfiguration 的旧芯片的评论。也许您可以尝试在 ARKit 演示应用程序上更改此设置。

于 2017-06-27T00:41:51.383 回答