加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读