我已经在Reality Composer中的人脸锚中添加了内容,稍后,在加载我在Reality Composer中创建的Experience
之后,我创建了一个人脸跟踪会话,如下所示:
guard ARFaceTrackingConfiguration.isSupported else { return }
let configuration = ARFaceTrackingConfiguration()
configuration.maximumNumberOfTrackedFaces = ARFaceTrackingConfiguration.supportedNumberOfTrackedFaces
configuration.isLightEstimationEnabled = true
arView.session.delegate = self
arView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
这并不是将内容添加到所有正在检测的面孔上,我知道它正在检测一个以上的面孔,因为其他面孔遮挡了粘附在另一张面孔上的内容,这是对{{1 }}或我在作曲家中缺少什么?实际上,由于它是如此简单和简单,所以很难错过。
谢谢。
答案 0 :(得分:2)
如果您使用带有嵌入式Face Face Anchor的模型(即,来自Reality Composer的Face Tracking预设的模型),则无法在RealityKit中成功进行多面跟踪(您只能在.face
中使用一个模型锚,不是三个)。或者,您可以使用此类模型,但是您需要删除这些嵌入式AnchorEntity(.face)
锚点。尽管有更好的方法–只需以.usdz
格式加载模型。
让我们看看有关嵌入式锚点的Apple文档says :
您可以使用代码手动加载和锚定Reality Composer场景,就像处理其他ARKit内容一样。当您在代码中锚定场景时,RealityKit会忽略该场景的锚定信息。
Reality Composer支持5种锚点类型:
Horizontal
,Vertical
,Image
,Face
和Object
。它针对每种锚点类型显示一组不同的指南,以帮助您放置内容。如果选择了错误的选项,或者稍后改变主意如何锚定场景,则可以稍后更改锚点类型。
有两种选择:
在新的Reality Composer项目中,取消选择启动时看到的操作表左下方的Create with default content
复选框。
在RealityKit代码中,删除现有的Face Anchor
并分配一个新的 boxAnchor.removeFromParent()
。后一种选择不是很好,因为您需要从头开始重新创建对象位置:
AnchorEntity()
不过,我已经在ARAnchor
实例方法中使用了session(:didUpdate:)
和renderer()
初始化器(就像SceneKit的import ARKit
import RealityKit
extension ViewController: ARSessionDelegate {
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let faceAnchor = anchors.first as? ARFaceAnchor
else { return }
let anchor1 = AnchorEntity(anchor: faceAnchor)
let anchor2 = AnchorEntity(anchor: faceAnchor)
anchor1.addChild(model01)
anchor2.addChild(model02)
arView.scene.anchors.append(anchor1)
arView.scene.anchors.append(anchor2)
}
}
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
let model01 = try! Entity.load(named: "angryFace") // USDZ file
let model02 = try! FacialExpression.loadSmilingFace() // RC scene
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
guard ARFaceTrackingConfiguration.isSupported else {
fatalError("Alas, Face Tracking isn't supported")
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let config = ARFaceTrackingConfiguration()
config.maximumNumberOfTrackedFaces = 2
arView.session.run(config)
}
}
实例方法一样)实现了多面跟踪。
这是我的代码:
leaflet.realtime