Я реализую приложение AR
на платформе iOS с SceneKit
. Я хочу, чтобы мой объект вращался, а затем передвигался. Для стороны мобильного вращения я обнаружил, что есть параметр quaternion под классом , но я не уверен, как использовать этот параметр для поворота объекта, загруженного в сцену. Есть идеи?Как использовать данные датчика для воздействия на объект в SceneKit?
ответ
let motionManager = CMMotionManager()
motionManager.deviceMotionUpdateInterval = 1.0/60.0
if motionManager.isDeviceMotionAvailable {
motionManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: { (devMotion, error) -> Void in
//change the left camera node euler angle in x, y, z axis
cameraNode.eulerAngles = SCNVector3(
-Float((devMotion?.attitude.roll)!) - Float(M_PI_2),
Float((motionManager.deviceMotion?.attitude.yaw)!),
-Float((motionManager.deviceMotion?.attitude.pitch)!)
)
})}
Я попытался это с Playground приложение в IPad.
Позвольте мне следовать вашей идее, чтобы попробовать объект. – OtakuFitness
Недавно я попытался, и он будет работать до тех пор, пока я выясню, как использовать метод обновления в SceneKit (например, метод обновления Unity). В противном случае объект не будет двигаться непрерывно. – OtakuFitness
В конце концов я сделал self.arrow.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)!)) для достижения моей цели. – OtakuFitness
Я попытался с помощью сердечника Motion, но то, что я делаю, это повернуть scnCamera
На самом деле я не хочу поворачивать камеру, вращая объект, что я хочу. Но не могли бы вы рассказать мне, как вы поворачиваете свою камеру? – OtakuFitness
Показать Ваш код. Показать скриншот. Что вы хотите увидеть вместо этого? –