【发布时间】:2015-03-23 22:42:01
【问题描述】:
我正在学习 Scenekit 并尝试旋转对象。 这里有 2 个框,并使用变换矩阵和 SCNTransaction 沿 Z 轴逆时针旋转它们。它有效,但它们在动画期间相交。
//1st node
let g1 = SCNBox(width: 2, height: 2, length: 2, chamferRadius: 0.05)
g1.firstMaterial?.diffuse.contents = UIColor.blueColor()
BoxNode1 = SCNNode(geometry: g1)
BoxNode1?.position=SCNVector3(x: 3, y: 0, z: 0)
BoxNode1?.pivot = SCNMatrix4MakeTranslation(0, 0, 1)
self.rootNode.addChildNode(BoxNode1!)
//2nd node
let g2 = SCNBox(width: 2, height: 2, length: 2, chamferRadius: 0.05)
g2.firstMaterial?.diffuse.contents = UIColor.whiteColor()
BoxNode2 = SCNNode(geometry: g2)
BoxNode2?.position=SCNVector3(x: 1, y: 0, z: 0)
BoxNode2?.pivot = SCNMatrix4MakeTranslation(0, 0, 1)
self.rootNode.addChildNode(BoxNode2!)
//rotation
var rot = SCNMatrix4MakeRotation(Float(M_PI_2), 0, 0, 1)
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(10)
BoxNode2?.transform = SCNMatrix4Mult(BoxNode2!.transform, rot)
BoxNode1?.transform = SCNMatrix4Mult(BoxNode1!.transform, rot)
SCNTransaction.commit()
似乎外框的旋转半径在动画期间会发生变化。我怎么解决这个问题?
将这两个节点添加到另一个节点下作为子节点并旋转父节点可以解决问题,但不是我的愿望。
【问题讨论】: