在我检测到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)。看起来像本地位置。只有锚点给出其各自的世界位置。我希望能够根据世界变换来变换节点。 预先感谢。
答案 0 :(得分:0)
tldr:在node.worldPosition
内打印renderer(_:didUpdate:for:)
您正在使用renderer(_:didAdd:for:)
。可以将其视为最初响应新锚点上的新节点的位置。新节点尚未使用相关信息进行更新。像您一样向此新节点添加子平面将是一个很好的响应。
相反,renderer(_:didUpdate:for:)
用于响应节点上的实际更新。这是我们看到先前添加的节点表现出预期效果的时候。这就是为什么您看到意外的值。