Reference
https://developer.apple.com/documentation/scenekit/scnscenerendererdelegate
renderer Delegates
func renderer(SCNSceneRenderer, nodeFor: ARAnchor) -> SCNNode?
新しく追加されたアンカーに対応するSceneKitノードを提供するようにデリゲートに要求します。
func renderer(SCNSceneRenderer, didAdd: SCNNode, for: ARAnchor)
新しいARアンカーに対応するSceneKitノードがシーンに追加されたことをデリゲートに通知します。
func renderer(SCNSceneRenderer, willUpdate: SCNNode, for: ARAnchor)
ノードのプロパティが対応するアンカーの現在の状態に一致するように更新されることをデリゲートに通知します。
func renderer(SCNSceneRenderer, didUpdate: SCNNode, for: ARAnchor)
SceneKitノードのプロパティが対応するアンカーの現在の状態と一致するように更新されたことをデリゲートに通知します。
func renderer(SCNSceneRenderer, didRemove: SCNNode, for: ARAnchor)
削除されたARアンカーに対応するSceneKitノードがシーンから削除されたことをデリゲートに通知します。
renderer(_:nodeFor:)
新しく追加されたアンカーに対応するSceneKitノードを提供するように要求します。
renderer(_:didRemove:for:)
レンダラー(_:didRemove:for :)削除されたARアンカーに対応するSceneKitノードがシーンから削除されたことを通知します。
Rendering Loop
renderer(_:didUpdate:for:)
SceneKitノードのプロパティが対応するアンカーの現在の状態と一致するように更新されたことを通知します。
SceneKitは、シーンを表示しているSCNView
オブジェクト(または他のオブジェクト)が一時停止されていない限り、このSCNSceneRenderer
メソッドをフレームごとに1回だけ呼び出します。このメソッドを実装して、レンダリングループにゲームロジックを追加します。この方法でシーングラフに加えた変更は、表示されているシーンにすぐに反映されます。つまり、SceneKitは、シーンのレンダリングに使用するプレゼンテーションノードの階層を即座に更新します
renderer(_:didApplyAnimationsAtTime:)
アクションとアニメーションの評価後に発生する必要のある更新を実行するように指示します。
renderer(_:didSimulatePhysicsAtTime:)
物理シミュレーションの実行後に発生する必要のある更新を実行するように指示します。
renderer(_:willRenderScene:atTime:)
レンダラーがビューポートをクリアし、シーンをレンダリングしようとしていることを通知します。
renderer(_:didRenderScene:atTime:)
レンダラーがシーンをレンダリングしたことを通知します。