Мировое положение узла всегда равно origin - привязка ARKit
Я просто пытаюсь найти положение в мире и вращение узлов после того, как обнаруживаю и добавляю самолеты в свою AR-сцену.
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if !(anchor is ARPlaneAnchor) {
return
}
let plane = //to visualise planes
node.addChildNode(plane)
print("Node : \(node.worldPosition)"
}
но node.worldPosition всегда возвращает SCNVector3(x: 0.0, y: 0.0, z: 0.0). Похоже на местную позицию. Только якорь дает соответствующую позицию в мире. Я хочу иметь возможность преобразовывать узел в соответствии с мировыми преобразованиями. Заранее спасибо.
1 ответ
Tldr : Печать node.worldPosition
внутри renderer(_:didUpdate:for:)
Ты используешь renderer(_:didAdd:for:)
. Думайте об этом как о месте, где вы первоначально отвечаете на новый новый узел на новом якоре. Новый узел еще не был обновлен соответствующей информацией. Добавление дочерней плоскости к этому новому узлу, как вы, было бы хорошим ответом.
Напротив, renderer(_:didUpdate:for:)
используется для ответа на актуальные обновления на узле. Это когда мы видим, как ранее добавленный узел ведет себя так, как мы ожидали. Вот почему вы видите неожиданные значения.