答案是NO,除了ARFaceTrackingConfiguration前置摄像头,你不能使用任何ARConfiguration。虽然,您可以同时在前置摄像头上使用ARFaceTrackingConfiguration 和在后置摄像头上使用ARWorldTrackingConfiguration。这允许用户使用他们的面部作为特定控制器与后置摄像头中的 AR 内容进行交互。
查看this 文档页面,了解与哪个摄像头(后置或前置)对应的配置。
这是一个包含 ARKit 4.0 八种跟踪配置的表格:
|-------------------------------------|-----------------|
| "ARConfiguration" | "What Camera?" |
|-------------------------------------|-----------------|
| ARWorldTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
| ARBodyTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
| AROrientationTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
| ARImageTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
| ARFaceTrackingConfiguration | FRONT |
|-------------------------------------|-----------------|
| ARObjectScanningConfiguration | Rear |
|-------------------------------------|-----------------|
| ARPositionalTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
| ARGeoTrackingConfiguration | Rear |
|-------------------------------------|-----------------|
同时世界和人脸配置
要根据驱动程序人脸跟踪使用驱动世界跟踪,请使用以下代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
guard ARFaceTrackingConfiguration.isSupported,
ARFaceTrackingConfiguration.supportsWorldTracking
else {
fatalError("We can't do face tracking")
}
let config = ARFaceTrackingConfiguration()
config.isWorldTrackingEnabled = true
sceneView.session.run(config)
}
或者您可以使用人脸跟踪作为辅助配置:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let config = ARWorldTrackingConfiguration()
if ARFaceTrackingConfiguration.isSupported {
config.userFaceTrackingEnabled = true
}
sceneView.session.run(config)
}
请注意,这两个属性都适用于 iOS 13 及更高版本。
var userFaceTrackingEnabled: Bool { get set }
var isWorldTrackingEnabled: Bool { get set }
附言
目前.userFaceTrackingEnabled = true 仍然不起作用。我在安装了 iPadOS 15.3 的 Xcode 13.2.1 和 iPad Pro 4th Gen 中对其进行了测试。