我正在尝试将节点的原点从位于节点的中心更改为位于节点的“左上角”(我正在使用正交项目,并尝试重新实现2D“视图”使用节点,所以我只显示例如平面的一个面。
根据SCNNode
docs,通过更改节点的pivot
点,可以更改子节点的原点。但是,它还更改了旋转和缩放子节点的原点,这不是我想要的。我希望原点位于左上角,但我希望能够围绕其中心点旋转/缩放节点。
如果将子节点放置在(0, 0, 0)
上,我希望它出现在节点的左上角。有办法吗?
答案 0 :(得分:0)
仅使用 辅助 emptyNode
设置枢轴的偏移,但是旋转和缩放将使用另一个节点围绕几何中心发生。
let sphereGeo = SCNSphere(radius: 2)
sphereGeo.segmentCount = 4
sphereGeo.materials.first?.diffuse.contents = NSColor.lightGray
let sphereNode = SCNNode(geometry: sphereGeo)
let emptyNode = SCNNode()
scene.rootNode.addChildNode(emptyNode)
emptyNode.addChildNode(sphereNode)
emptyNode.simdPivot.columns.3.x = 5
let action = SCNAction.repeatForever(SCNAction.rotate(by: .pi,
around: SCNVector3(0,1,0),
duration: 1))
sphereNode.runAction(action)