首页 > 解决方案 > iOS Motion vs Android Sensor 四元数数据

问题描述

目标很简单:使用我的设备在我的游戏中控制一个 3d 游戏对象(旋转)。

在 iOS 设备中,我CMDeviceMotion用来完成这项工作,代码很简单:

quaternionX = motion.attitude.quaternion.x;
quaternionY = motion.attitude.quaternion.y;
quaternionZ = motion.attitude.quaternion.z;
quaternionW = motion.attitude.quaternion.w;

在我的游戏中,我使用quaternion上面的数据将其转换为我的游戏中的旋转数据,一切正常。


在android中,代码是:

if (type == Sensor.TYPE_ROTATION_VECTOR) {
    float[] temporaryQuaternion = new float[4];
    SensorManager.getQuaternionFromVector(temporaryQuaternion, sensorEvent.values);
    quaternionX = temporaryQuaternion[0];
    quaternionY = temporaryQuaternion[1];
    quaternionZ = temporaryQuaternion[2];
    quaternionW = temporaryQuaternion[3];
}

但是这一次,当我尝试使用我从 iOS 设备上quaternion获得的方式时,结果并没有在我的游戏中正确显示。SensorManager

我需要一些关于如何quaternion从 Android 设备获取数据的建议,就像我从 iOS 设备获取数据一样,以便我可以在游戏中以同样的方式使用它们。

任何建议将不胜感激,谢谢:)


更新:

iOS 设备的正确案例(设备放在桌子上)

输出数据(x,y,z,w):

0.0006159197655506432 -0.0028661845717579126 -0.00002693507121875882 0.9999957084655762
0.0006073189433664083 -0.0028192626778036356 -0.00004078780330019072 0.9999958872795105
0.0005894795176573098 -0.002804218325763941 -0.00004623963832273148 0.9999958872795105
0.0005597725394181907 -0.0028200845699757338 -0.00009185218368656933 0.9999958872795105
0.000527433876413852 -0.002837945008650422 -0.00010885162919294089 0.9999958872795105
0.0005262080230750144 -0.0028331447392702103 -0.0000935369316721335 0.9999958872795105

Android 设备的错误案例(以相同的方式放在桌子上)

-0.001673000049777329 -0.008166000247001648 0.974636971950531 0.22363300621509552
-0.0017000000225380063 -0.00812199991196394 0.9747239947319031 0.22325499355793
-0.001610000035725534 -0.008205000311136246 0.9744099974632263 0.22461800277233124
-0.0016240000259131193 -0.008062999695539474 0.9743139743804932 0.22504200041294098
-0.001627999939955771 -0.007942999713122845 0.9744499921798706 0.22445599734783173
-0.0013859999598935246 -0.007899999618530273 0.9747129678726196 0.22331200540065765
-0.0011889999732375145 -0.007706999778747559 0.9745630025863647 0.22397400438785553

标签: androidiossensorsmotion

解决方案


推荐阅读