以下属性正在为我返回false
,但是我不明白为什么。
ARImageTrackingConfiguration.isSupported
ARWorldTrackingConfiguration.isSupported
我正在使用Xcode 10.1构建的代码在具有iOS 12.1.1的iPhone Xs上对其进行测试。
请注意,ARConfiguration.isSupported
确实会返回true
。
有什么想法可能会发生这种情况吗?
答案 0 :(得分:0)
在给定的时间内仅支持一个
ARTracking class
。
您应该这样编写代码:
import UIKit
import ARKit
class ViewController: UIViewController, ARSCNViewDelegate {
@IBOutlet var sceneView: ARSCNView!
var configuration: ARConfiguration?
//.........
//.........
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if ARWorldTrackingConfiguration.isSupported {
configuration = ARWorldTrackingConfiguration() // 6-DoF
} else {
configuration = AROrientationTrackingConfiguration() // 3-DoF
}
sceneView.session.run(configuaration!)
}
}
此外,请仔细阅读以下三种跟踪配置类型:
ARWorldTrackingConfiguration()(旋转和平移x
-y
-z
) 6-DoF
AROrientationTrackingConfiguration()(仅旋转x
-y
-z
) 3-DoF
ARImageTrackingConfiguration() 6-DoF ,但仅图像跟踪使您可以仅在虚拟图像位于相机视野内时将虚拟内容锚定到已知图像。
由于3-DoF跟踪创建的AR体验有限,因此通常不应直接使用
AROrientationTrackingConfiguration()
类。而是使用子类ARWorldTrackingConfiguration()
进行六个自由度(6-DoF),平面检测和命中测试的跟踪。在暂时无法使用6自由度跟踪的情况下,仅将3自由度跟踪用作备用。
希望这会有所帮助。