Reputation: 3
Trying to update two different nodes in renderer(_ renderer:didUpdate:for:) method for different anchors looks like it let me update only one node, but I needed both: ARFaceAnchor and ARMeshAnchor How can I solve this problem?
// 1
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor ) {
if let faceAnchor = anchor as? ARFaceAnchor {
targetFaceGeometry = faceAnchor.geometry
}
}
&
// 2
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor ) {
if let meshAnchor = anchor as? ARMeshAnchor {
let geometry = createGeometryFromAnchor(meshAnchor: meshAnchor)
geometry.firstMaterial?.colorBufferWriteMask = [.alpha]
node.geometry = geometry
}
}
Upvotes: 0
Views: 298
Reputation: 19884
You can handle both cases in a single function
func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
if let faceAnchor = anchor as? ARFaceAnchor {
targetFaceGeometry = faceAnchor.geometry
} else if let meshAnchor = anchor as? ARMeshAnchor {
let geometry = createGeometryFromAnchor(meshAnchor: meshAnchor)
geometry.firstMaterial?.colorBufferWriteMask = [.alpha]
node.geometry = geometry
}
}
Upvotes: 0