按钮旋转3D对象ARKit 2

时间:2018-07-26 04:19:39

标签: swift xcode rotation scenekit arkit

我有通过图像检测触发的3D对象。我添加了按钮,以便用户可以在不同的视图中查看对象,例如左,右,上,下等。我的代码有一个缺陷,因为旋转点是从上一次触摸设置的。例如,如果您按向右,它将变为.pi / 2,然后当您按向左时,它将变为-.pi / 2,将其重置回前视图而不是左视图。如何设置原始的正面原点,以便每次按后旋转“重置”并转到相应的视图?谢谢。

@IBAction func leftSideRotate(_ sender: UIButton) {
    let rotate = SCNAction.rotateBy(x: 0, y: -.pi/2, z: 0, duration: 0.5)
    sender.isEnabled = false
    toggleButton = sender
    activeNode?.runAction(rotate,completionHandler: enableButtonn)
}
func enableButtonn (){
    toggleButton?.isEnabled = true
}

@IBAction func upSole(_ sender: UIButton) {
    let rotate = SCNAction.rotateBy(x: -.pi/2, y: 0, z: 0, duration: 0.5)
    sender.isEnabled = false
    toggleButton = sender
    activeNode?.runAction(rotate,completionHandler: enableButtonnn)
}
func enableButtonnn (){
    toggleButton?.isEnabled = true
}

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是,在对象被加载后立即将其保存在场景中。然后,使用rotateTo方法(而不是rotateBy)来实现所需的旋转。

示例:

let originalPosition = activeNode?.position

let rotate = SCNAction.rotateTo(x: originalPosition.x, y: (originalPosition.y - .pi/2), z: originalPosition.z, duration: 0.5)