Во-первых, даже если вы стабилизируете свой узел с помощью якоря, он никогда не будет идеальным, просто лучше.
Однако, хотя ARAnchor создается в координатах, которые вы ему сообщаете, но узел вы хотите, чтобы стабилизация фактически не помещалась в этот якорь.
Вам необходимо реализовать функцию renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor)
в вашем ARSCNViewDelegate
и вернуть целевой узел, который вы хотите стабилизировать с помощью якоря (Альтернативно, Вы можете добавить свой узел в качестве дочернего узла созданного по умолчанию узла привязки, реализовав функцию renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
).
Если ваш объект nodeToBeStabilized
доступен как свойство в ViewController, то очень глупая реализация может быть как то так:
extension WAViewController: ARSCNViewDelegate, ARSessionDelegate {
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
return nodeToBeStabilized
}
}