【发布时间】:2019-03-25 00:28:36
【问题描述】:
我正在尝试用一些图像覆盖检测到的平面
所以我尝试使用renderer(_:nodeFor:)
在该方法中,一些博主编写了这样的代码
guard let anchor = anchor as? ARPlaneAnchor else { return nil }
let anchorNode = SCNNode()
let planeNode = SCNNode()
let material = SCNMaterial()
material.diffuse.contents = UIColor.gray.withAlphaComponent(0.6)
let plane = SCNPlane(width: CGFloat(anchor.extent.x), height: CGFloat(anchor.extent.z))
plane.materials = [material]
planeNode.geometry = plane
planeNode.position = SCNVector3(anchor.center.x, 0, anchor.center.z)
planeNode.eulerAngles = SCNVector3(-Float.pi / 2, 0, 0)
anchorNode.addChildNode(planeNode)
return anchorNode
为什么他们将子节点添加到空节点?
为什么不自己旋转
我当然会阅读有关它的文档
他们说:
您可以实现此方法来提供一个新的 SCNNode 对象(或 SCNNode 子类的实例),其中包含您计划用作锚点视觉表示的任何附件。请注意,ARKit 控制节点的可见性及其变换属性,因此您可能会发现添加子节点或调整节点的枢轴属性以保持您对位置或方向所做的任何更改很有用。
幕后的逻辑是什么?
那么如何使用枢轴旋转节点本身?
【问题讨论】: