我在为Android实现增强现实应用程序时遇到了一些麻烦,我希望有人可以帮助我。 (对不起我的英文......)
基本上我从加速度计和mangetic场传感器获取值,然后当我读到remapCoordinatessystem(inR,AXIS_X,AXIS_Z,outR)......最终我得到了取向......
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
mGravity = event.values;
}
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
mGeomagnetic = event.values;
}
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
float outR[] = new float[9];
SensorManager.remapCoordinateSystem(R, SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(outR, orientation);
// Here I pass the orientation values to the object, which is render by the min3d framework
}
}
}
我的价值是否正确?或者我需要将它们转换为学位?¿我迷失了......
然后我用我从传感器读取的值旋转我的3D对象......但是它根本没有移动。
public void updateScene() {
objModel.rotation().y = _orientation[2];
objModel.rotation().x = _orientation[1];
objModel.rotation().z = _orientation[0];
}
OpenGL不是我的朋友...所以我不确定我是否正确转换...这是旋转轴的顺序或者无关紧要...来自方向的哪个值应该对应于由Min3D加载的3D对象的轴?
如果这不是我必须遵循的道路......有人可以引导我找到正确的道路吗?与此斗争已经有几周了。
非常感谢你...(StackOverflow爱好者)
答案 0 :(得分:1)
我遇到了
的问题mGeomagnetic = event.values;
你应该写
mGeomagnetic = event.values.clone();
代替