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实现的。
答案 0 :(得分: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。
PS
但是,目前存在一个令人不快的问题-如果您使用的是Reality Composer内置的场景,则一次只能使用一种锚点(horizontal
,vertical
, image
,face
或object
)。因此,如果您需要同时使用ARWorldTrackingConfig
和ARFaceTrackingConfig
,请不要使用Reality Composer场景。我相信这种情况将在不久的将来得到解决。
答案 1 :(得分: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体验。