gpt4 book ai didi

swift - Scene Kit Swift 节点多次旋转

转载 作者:可可西里 更新时间:2023-10-31 23:57:19 27 4
gpt4 key购买 nike

在带有 Swift 的 SceneKit 中,我只能进行一次旋转。

我想在每次用户点击屏幕时沿 z 轴旋转相机。

func handleTap(){
println("start")
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(1.0)

SCNTransaction.setCompletionBlock(){
println("done")
}

_cameraNode.rotation = SCNVector4Make(0, 0, 1, CFloat( -M_PI_4 ) * 0.5 )

SCNTransaction.commit()

}

但是,我想在每次触摸时保持旋转。我想我需要一个 scnvector4 乘法器,但我找不到那个方法。

我怎样才能乘以 2 个 scnvector4 或者我可以保持旋转 z 轴的另一种方法是什么?

最佳答案

当我多次直接修改 node.rotation 时,我遇到了一些奇怪的行为,

相反,似乎更可靠地工作的是一些代码,例如:

let xAngle = SCNMatrix4MakeRotation(degToRad(90), 1, 0, 0)
let yAngle = SCNMatrix4MakeRotation(degToRad(180), 0, 1, 0)
let zAngle = SCNMatrix4MakeRotation(degToRad(0), 0, 0, 1)

var rotationMatrix = SCNMatrix4Mult(SCNMatrix4Mult(xAngle, yAngle), zAngle)

node.transform = SCNMatrix4Mult(rotationMatrix, node.Transform)

...有点笨重,但它确实有效。顺便说一句,degToRad 会是这样的:

func degToRad(deg: Float) {
return deg / 180 * Float(M_PI)
}

关于swift - Scene Kit Swift 节点多次旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25318010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com