我想使用swift跟踪iPhone的设备运动,然后将其移交给WebView以相应地旋转THREE.js。 (使用THREE.js而不是在OpenGL中进行渲染的原因是出于与我们网站的兼容性原因。)
目前使用
快速跟踪设备动作let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 1
motionManager.gyroUpdateInterval = 1
motionManager.deviceMotionUpdateInterval = 1/60
motionManager.showsDeviceMovementDisplay = true;
motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue()!) {
(motionData: CMDeviceMotion?, NSError) -> Void in
self.outputData(motionData!.attitude.quaternion.x, motionData!.attitude.quaternion.y, motionData!.attitude.quaternion.z, motionData!.attitude.quaternion.w)
if(NSError != nil) {
print("\(NSError)")
}
}
outputData函数只将四个参数移交给THREE.js,其中以下代码被执行:
camera.quaternion.set(x, y, z, w);
不幸的是,它根本不起作用。
我知道,由于姿势与躺在桌子上的手机对齐而不是放在用户面前,因此旋转了90°,但这将是下一步。
为简单起见,该应用目前仅限于纵向模式。
任何想法如何将数据从iOS attitude.quaternion转换为THREE.js(或任何其他基于webGL / OpenGL的引擎)可以使用的方式?