我想用Scene套件创建一个应用来解决Rubix Cube.我有自己的dae文件用于多维数据集.
这是我在viewDidLoad中的设置代码
@H_404_27@解决方法
这是我在viewDidLoad中的设置代码
let myscene = SCNScene(named: "Rubik1.scnassets/Rubiks_Cube.dae") scene.rootNode.addChildNode((myscene?.rootNode)!) // retrieve the SCNView let scnView = self.view as! SCNView // set the scene to the view scnView.scene = scene geometryNode = (scnView.scene?.rootNode.childNodeWithName("Cube",recursively: true))! let panRecognizer = UIPanGestureRecognizer(target: self,action: "panGesture:") scnView.addGestureRecognizer(panRecognizer)
在识别平移手势以旋转立方体时
func panGesture(gestureRecognize: UIPanGestureRecognizer){ let translation = gestureRecognize.translationInView(gestureRecognize.view!) let x = Float(translation.x) let y = Float(-translation.y) let anglePan = sqrt(pow(x,2)+pow(y,2))*(Float)(M_PI)/180.0 var rotationVector = SCNVector4() rotationVector.x = -y rotationVector.y = x rotationVector.z = 0 rotationVector.w = anglePan geometryNode.rotation = rotationVector //geometryNode.transform = SCNMatrix4MakeRotation(anglePan,-y,x,0) if(gestureRecognize.state == UIGestureRecognizerState.Ended) { // } }
上面的代码不保留以前的平移手势.我如何使用“rotationvector”或
SCNMatrix4MakeRotation(anglePan,0)
旋转立方体
问题已经解决了
if(gestureRecognize.state == UIGestureRecognizerState.Ended) { let currentPivot = geometryNode.pivot let changePivot = SCNMatrix4Invert( geometryNode.transform) geometryNode.pivot = SCNMatrix4Mult(changePivot,currentPivot) geometryNode.transform = SCNMatrix4Identity }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。