我正在将 SceneKit 相机设置为当前CMDeviceMotion
使用的态度CMDeviceMotion 扩展 https://gist.github.com/travisnewby/96ee1ac2bc2002f1d480在此描述的answer https://stackoverflow.com/a/33695442/235297:
func deviceDidMove(motion: CMDeviceMotion?, error: NSError?) {
if let motion = motion {
let orientation = motion.gaze(atOrientation: UIApplication.sharedApplication().statusBarOrientation)
cameraNode.orientation = orientation
}
}
这工作得很好,但是,我想阻止旋转(滚动)并只允许相机转动(偏航)和俯仰。
我尝试将四元数转换回欧拉角,并将滚动角保留为 0:
cameraNode.eulerAngles = SCNVector3(
x: orientation.pitch(),
y: orientation.yaw(),
z: 0)
然而,这仅适用于偏航运动的一半。对于另一半,相机被颠倒过来。我怀疑这是涉及欧拉角的万向节锁问题。
四元数对我来说有点像黑魔法,但是有没有办法直接在四元数级别上删除滚动分量,这样我就可以避免欧拉角?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)