【问题标题】:Is it possible to track a face and render it in RealityKit ARView?是否可以在 RealityKit ARView 中跟踪并渲染人脸?
【发布时间】:2020-04-28 05:58:01
【问题描述】:

Apple 文档说您可以将userFaceTrackingEnabled 设置为同时前置和后置摄像头。添加ARView并正确设置配置后,我可以确认ARSessionDelegate函数将被正常调用,如下所示:

func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
    for anchor in anchors where anchor is ARFaceAnchor {
        // triggerd
    }
}

func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
    for anchor in anchors where anchor is ARFaceAnchor {
        // triggerd
    }
}

所以现在我有了ARFaceAnchor 对象,接下来我该怎么做?是否可以使用 RealityKit 渲染这个ARFaceAnchor?还是只能由 SceneKit 渲染?因为网上所有的例子都是用SceneKit实现的。

【问题讨论】:

    标签: swift scenekit augmented-reality arkit realitykit


    【解决方案1】:

    如果你想使用RealityKit 渲染技术,你应该使用它自己的锚。

    因此,对于 RealityKit 面部跟踪体验,您只需要:

    AnchorEntity(AnchoringComponent.Target.face)
    

    如果您使用的是 Reality Composer 场景,您甚至不需要 session(_:didAdd:)session(_:didUpdate:) 实例方法。

    如果您在 Reality Composer 中准备场景,.face 类型的锚在开始时可供您使用。以下是.reality 文件中不可编辑的隐藏 Swift 代码的样子:

    public static func loadFace() throws -> Facial.Face {
    
        guard let realityFileURL = Foundation.Bundle(for: Facial.Face.self).url(forResource: "Facial", 
                                                                              withExtension: "reality") 
        else {
            throw Facial.LoadRealityFileError.fileNotFound("Facial.reality")
        }
    
        let realityFileSceneURL = realityFileURL.appendingPathComponent("face", isDirectory: false)
        let anchorEntity = try Facial.Face.loadAnchor(contentsOf: realityFileSceneURL)
        return createFace(from: anchorEntity)
    }
    

    如果您需要更详细的锚点信息,请阅读this post

    附言

    但是,目前有一个令人不快的问题 - 如果您使用的是 Reality Composer 中内置的场景,则一次只能使用一种类型的锚(horizontalverticalimagefaceobject)。因此,如果您需要将ARWorldTrackingConfigARFaceTrackingConfig 一起使用,请不要使用Reality Composer 场景。我相信这种情况会在不久的将来得到解决。

    【讨论】:

      【解决方案2】:

      我相信,Reality Kit 无法做到这一点,当我阅读面部跟踪的文档时,我找不到任何关于使用 Reality Kit 进行跟踪的信息。但是你可以使用 SceneKit 和 SpriteKit。请检查此文件。

      https://developer.apple.com/documentation/arkit/tracking_and_visualizing_faces

      这句话也引起了我的注意。

      此示例使用 ARSCNView 来通过 SceneKit 显示 3D 内容,但是 您还可以使用 SpriteKit 或使用 Metal 构建自己的渲染器(参见 ARSKView 并展示金属的 AR 体验)。

      【讨论】:

      • 是的,我也搜索了所有我能找到的文件,但什么也没找到。苹果这么推荐RealityKit,我很难想象它不支持!
      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2017-06-26
      • 2021-08-28
      • 2011-09-15
      • 2015-02-28
      • 2020-05-11
      相关资源
      最近更新 更多