【问题标题】:ARKit – How to use ARImageTrackingConfiguration with ARFaceTrackingConfiguration?ARKit – 如何将 ARImageTrackingConfiguration 与 ARFaceTrackingConfiguration 结合使用?
【发布时间】:2020-07-17 14:14:35
【问题描述】:

我已经构建了一个使用图像跟踪和交换平面图像的应用程序。我也在使用人物遮挡(现在),这样人们就可以在这些图像前获得照片。我真的希望这个应用程序有一个自拍模式,这样人们就可以在图像交换区域前拍摄自己的照片。

我正在阅读 ARKit 3.5 的功能,但据我所知,唯一支持前置摄像头的是 ARFaceTrackingConfiguration,它不支持图像跟踪。 ARImageTrackingConfigurationARWorldTrackingConfiguration 只使用后置摄像头。

有没有办法使用前置摄像头制作带有人物遮挡(和图像跟踪)的自拍模式?

【问题讨论】:

    标签: swift augmented-reality arkit realitykit


    【解决方案1】:

    答案是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 中对其进行了测试。

    【讨论】:

    • 如何同时使用前置ARFaceTrackingConfiguration和后置ARWorldTrackingConfiguration?你能发布一个样本吗?
    • 谢谢!另外,iPad Pro-2020 是否支持同时使用前置和后置摄像头?是否所有支持 ARKit 的设备都支持此功能?
    • 100%,如果设备有原深感传感器。但我没有尝试过没有 TrueDepth 的设备。
    • iOS版本为14.6。
    • @yaali 你是对的。 userFaceTrackingEnabled 实例属性在 iPad Pro Gen 4 上也不起作用。很奇怪的问题((((。我希望苹果能解决它。
    猜你喜欢
    • 2019-02-25
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2012-04-01
    • 2017-06-13
    • 2019-02-09
    • 2012-08-21
    相关资源
    最近更新 更多