swift – 如何使用平移手势旋转场景中的对象 – SceneKit
发布时间:2020-12-14 04:58:14 所属栏目:百科 来源:网络整理
导读:我想用Scene套件创建一个应用来解决Rubix Cube.我有自己的dae文件用于多维数据集. 这是我在viewDidLoad中的设置代码 let myscene = SCNScene(named: "Rubik1.scnassets/Rubiks_Cube.dae") scene.rootNode.addChildNode((myscene?.rootNode)!) // retrieve th
我想用Scene套件创建一个应用来解决Rubix Cube.我有自己的dae文件用于多维数据集.
这是我在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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容