【发布时间】:2017-07-03 18:58:54
【问题描述】:
目前我在 iOS 平台上遇到问题。基本上,我在二维环境中加载了一个指向东方的箭头(上面是北方,左边是西方,右边是东方,下面是南方)。我希望它可以在 3D 环境中指向真正的东方,以便它会自动旋转到正确的方向。我画了一幅画来准确地描述我的情况。 (虚线箭头是我加载的箭头,如果我使用核心运动数据,实线箭头是我想要的)
现在我做到了
let motionManager = CMMotionManager()
motionManager.deviceMotionUpdateInterval = 1.0 / 60.0
if motionManager.isDeviceMotionAvailable {
motionManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: { (devMotion, error) -> Void in
parent_arrows[0].orientation = SCNQuaternion(-CGFloat((motionManager.deviceMotion?.attitude.quaternion.x)!), -CGFloat((motionManager.deviceMotion?.attitude.quaternion.y)!), -CGFloat((motionManager.deviceMotion?.attitude.quaternion.z)!), CGFloat((motionManager.deviceMotion?.attitude.quaternion.w)!))
})}
sn-p 不能自动使箭头向右旋转。我的想法是获取设备与北方之间的角度,然后将此角度应用于箭头的方向。但是如何将角度添加到四元数?还有其他想法可以实现吗?
【问题讨论】:
-
实际问题是什么?
parent_arrows[0]是否正在更新,但未显示更新?parent_arrows[0]没有更新吗?是否正在更新和显示但显示方向错误? -
让问题变得简单,我加载了一个 3D 箭头,我希望这个箭头指向方向(例如:东)。我回答了下面的问题,但似乎万向节锁出现了。
标签: ios swift scenekit quaternions core-motion