В настоящее время я встречаюсь с проблемой на платформе iOS. В принципе, я загружаю стрелку, указывающую на восток в 2D-среде (вверху - север, левая сторона - западная, справа - восток, а нижний - юг). Я ожидаю, что он может указывать на реальный восток в 3D-среде, чтобы он автоматически поворачивался в правильном направлении. Я рисую картину, чтобы точно описать свою ситуацию. (Пунктирная стрелка мой нагруженный стрелка и сплошная стрелка, что я хочу, если я использую основные данные о движении)Указание на правильное направление в SceneKit
Теперь я
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)!))
})}
Сниппет не может автоматически сделать стрелка поворачивается в правильном направлении. Моя идея - получить угол между устройством и севером, а затем применить этот угол к ориентации стрелки. Но как добавить угол к кватерниону? И есть ли другая идея для достижения этого?
В чем проблема? Обновляется ли 'parent_arrows [0]', и обновление не отображается? Разве 'parent_arrows [0]' не обновляется? Обновляется ли и показывается, но отображается неправильная ориентация? – Grimxn
Задайте вопрос простым, загрузите трехмерную стрелку, и я хочу, чтобы эта стрелка указывала направление (например: восток). Я ответил, что у меня внизу, но кажется, что карданный замок выходит. – OtakuFitness