节点的世界位置始终是原点-ARKit锚点

时间:2019-09-04 11:44:57

标签: position arkit scnnode plane aranchor

在我检测到AR场景并将平面添加到我的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 个答案:

答案 0 :(得分:0)

tldr:在node.worldPosition内打印renderer(_:didUpdate:for:)

您正在使用renderer(_:didAdd:for:)。可以将其视为最初响应新锚点上的新节点的位置。新节点尚未使用相关信息进行更新。像您一样向此新节点添加子平面将是一个很好的响应。

相反,renderer(_:didUpdate:for:)用于响应节点上的实际更新。这是我们看到先前添加的节点表现出预期效果的时候。这就是为什么您看到意外的值。