3

苹果文件说你可以设置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对象了,接下来我该怎么办?是否可以ARFaceAnchor使用 RealityKit 渲染它?还是只能由 SceneKit 渲染?因为互联网上的所有示例都是使用 SceneKit 实现的。

4

2 回答 2

1

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

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

AnchorEntity(AnchoringComponent.Target.face)

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

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

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)
}

如果您需要有关锚点的更详细信息,请阅读这篇文章

附言

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

于 2020-01-10T17:32:55.927 回答
0

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

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

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

此示例使用 ARSCNView 通过 SceneKit 显示 3D 内容,但您也可以使用 SpriteKit 或使用 Metal 构建自己的渲染器(请参阅 ARSKView 和使用 Metal 显示 AR 体验)。

于 2020-01-10T15:15:13.353 回答