在不更改枢轴的情况下更改SCNNode原点

问题描述 投票:1回答:1

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

根据SCNNode docs,更改节点的pivot点允许您更改其子节点的原点。但是,它也会更改旋转和缩放子节点的原点,这不是我想要做的。我希望我的原点位于左上方,但我希望能够围绕其中心点旋转/缩放节点。

如果我在(0, 0, 0)放置一个子节点,我希望它出现在我的节点的左上角。有没有办法做到这一点?

scenekit scnnode
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.