SCNrendererのライフサイクルについての質問です。
//追加されたARアンカーに対応するノードを提供 func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? { guard anchor is ARFaceAnchor else {return nil} //higehuge(諸処理) return hogeNode }
//ARアンカーの位置をARアンカーに対応するノードに反映した後に呼ばれる func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) { guard let hageAnchor = anchor as? ARFaceAnchor else {return}
nodeForとdidUpdateの二つを記述している場合においてprint(hageAnchor)をすると、didUpdateのARFaceAnchorで顔が検出できなかった時は、コンソール上ではnilを返すわけではなく、一番最後に認識したARFaceAnchorの位置情報を保持したまま次の顔を認識するまで読み込みが止まっているみたいなのですが、顔の読み込みができなかったときの処理を作りたい時にはどのように実装していけばいいのでしょうか?
#試したこと
・consoleに出力した
→nodeForは最初の一回だけ呼ばれて、didUpdateは毎フレーム呼び出される
・nodeForのreturn nil を return hogeNode、return lastAnchor(読み込まれたAnchorの中で一番最後に記憶しているAnchor)にした
→うまくいかなかった
・updateAtTimeやdidRemoveの中で、sceneView.scene.rootnode.addChildnode(hogeNode)を記述したがダメだった
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。