【发布时间】:2019-04-29 15:10:31
【问题描述】:
我已经使用 ARFaceTrackingConfiguration 会话设置了 SceneView,并在场景资源中创建了一个虚拟 3D 模型。
模型是在场景视图中导入的,但它会随着相机的移动而相应移动,我需要将模型位置固定在场景视图的中心。
下图展示了我想要实现的目标。
所以 3D 模型不应该随着相机的移动而移动。
@IBOutlet var sceneView: ARSCNView!
let scene = SCNScene(named: "art.scnassets/TEST.scn")!
var contentNode: SCNNode?
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and timing information
sceneView.showsStatistics = true
sceneView.scene = self.scene
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Create a session configuration
let configuration = ARFaceTrackingConfiguration()
configuration.isLightEstimationEnabled = true
// Run the view's session
sceneView.session.run(configuration)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Pause the view's session
sceneView.session.pause()
}
// MARK: - ARSCNViewDelegate
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
guard let faceAnchor = anchor as? ARFaceAnchor else { return nil }
let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
self.contentNode = SCNNode(geometry: faceGeometry)
return self.contentNode
}
【问题讨论】:
-
你好,Shahriar,我正在做面部跟踪,想知道我应该把
guard let pointOfView = self.sceneView.pointOfView else { return }和DispatchQueue.main.async { pointOfView.addChildNode(yourNode) }放在哪里 -
我想知道你定义的
faceLocation在哪里?