我正在尝试创建ARSession
,使用带有Xcode 9 beta的ARKit(适用于iOS 11)。但它似乎无法正常工作。
我尝试的代码是:
override func viewDidLoad() {
super.viewDidLoad()
// configure session
let configuration = ARWorldTrackingSessionConfiguration()
configuration.planeDetection = .horizontal
// run session
sceneView.session.run(configuration)
}
有人可以帮忙吗?根据Apple文档,代码几乎是正确的。
答案 0 :(得分:1)
View控制器的生命周期出现问题。根据ARSession的苹果指南,它可以在你完全加载后查看。我的意思是,用户视图似乎会运行您的会话。
以下是相同的Apple文档:Building a Basic AR Experience
另外,请看下面的示例。
答案 1 :(得分:0)
ARWorldTrackingSessionConfiguration仅支持具有A9处理器或更高版本的iOS设备。
根据Apple doc:
在具有A9处理器或更高版本的iOS设备上, ARWorldTrackingSessionConfiguration 子类提供高精度的运动跟踪,并使功能可以帮助您放置与现实世界相关的虚拟内容 表面。
在ARKit支持的其他设备上,ARSessionConfiguration基础 class提供基本的运动跟踪,允许稍微减少 身临其境的AR体验。
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
答案 2 :(得分:0)
由于iOS11 beta1错误导致另一个问题,iOS 11 Beta 1 Release Notes And Known Issues According To Apple
这意味着您需要iPhone 6S或更高版本才能在当前时间使用ARKit(ARSessionConfiguration)。直到iOS11 beta2发布......
2017.07.13更新
我的iphone6已更新到iOS11 beta3,它可以运行ARWorldTrackingSessionConfiguration,太棒了!
2017.09.07更新
iphone6无法在最近的iOS11测试版中运行ARWorldTrackingConfiguration ...... :(
答案 3 :(得分:0)
您还需要初始化SCNScene并将其添加到ARSCNView。
let scene = SCNScene()
sceneView.scene = scene
我通常在设置会话之前这样做。