ARKit – 如何将 ARImageTrackingConfiguration 与 ARFaceTrackingConfiguration 一起使用?
ARKit – How to use ARImageTrackingConfiguration with ARFaceTrackingConfiguration?
我构建了一个使用图像跟踪和交换平面图像的应用程序。我也在使用人物遮挡(现在),这样人们就可以在这些图像前面拍摄照片。我真的希望这个应用程序有一个自拍模式,这样人们就可以在图像交换区域前拍摄自己的照片。
我正在阅读 ARKit 3.5 的功能,但据我所知,唯一支持前置摄像头的是 ARFaceTrackingConfiguration
,它不支持图像跟踪。 ARImageTrackingConfiguration
和 ARWorldTrackingConfiguration
只使用后置摄像头。
有什么方法可以使用前置摄像头制作带有人物遮挡(和图像跟踪)的自拍模式吗?
答案是NO
,除了ARFaceTrackingConfiguration
前置摄像头外,您不能使用任何ARConfiguration。虽然,您可以同时在前置摄像头上使用 ARFaceTrackingConfiguration
并在后置摄像头上使用 ARWorldTrackingConfiguration
。这允许用户使用他们的脸作为特定控制器与后置摄像头中的 AR 内容进行交互。
查看 this 文档页面以了解摄像头(后置或前置)对应的配置。
这里有一个table包含ARKit 5.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 }
P.S.
目前.userFaceTrackingEnabled = true
还是不行。我在 Xcode 13.2.1 和 iPad Pro 4th Gen 中测试了它,安装了 iPadOS 15.3。
我构建了一个使用图像跟踪和交换平面图像的应用程序。我也在使用人物遮挡(现在),这样人们就可以在这些图像前面拍摄照片。我真的希望这个应用程序有一个自拍模式,这样人们就可以在图像交换区域前拍摄自己的照片。
我正在阅读 ARKit 3.5 的功能,但据我所知,唯一支持前置摄像头的是 ARFaceTrackingConfiguration
,它不支持图像跟踪。 ARImageTrackingConfiguration
和 ARWorldTrackingConfiguration
只使用后置摄像头。
有什么方法可以使用前置摄像头制作带有人物遮挡(和图像跟踪)的自拍模式吗?
答案是NO
,除了ARFaceTrackingConfiguration
前置摄像头外,您不能使用任何ARConfiguration。虽然,您可以同时在前置摄像头上使用 ARFaceTrackingConfiguration
并在后置摄像头上使用 ARWorldTrackingConfiguration
。这允许用户使用他们的脸作为特定控制器与后置摄像头中的 AR 内容进行交互。
查看 this 文档页面以了解摄像头(后置或前置)对应的配置。
这里有一个table包含ARKit 5.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 }
P.S.
目前.userFaceTrackingEnabled = true
还是不行。我在 Xcode 13.2.1 和 iPad Pro 4th Gen 中测试了它,安装了 iPadOS 15.3。