更改SCNNode原点而不更改支点

时间:2019-01-16 01:40:27

标签: scenekit scnnode

我正在尝试将节点的原点从位于节点的中心更改为位于节点的“左上角”(我正在使用正交项目,并尝试重新实现2D“视图”使用节点,所以我只显示例如平面的一个面。

根据SCNNode docs,通过更改节点的pivot点,可以更改子节点的原点。但是,它更改了旋转和缩放子节点的原点,这不是我想要的。我希望原点位于左上角,但我希望能够围绕其中心点旋转/缩放节点。

如果将子节点放置在(0, 0, 0)上,我希望它出现在节点的左上角。有办法吗?

1 个答案:

答案 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)