У меня проблемы с реализацией приложения для Android с дополненной реальностью, и я надеюсь, что кто-нибудь сможет мне помочь. (Извините за мой английский ...)
По сути, я получаю значения от датчиков акселерометра и датчика манжетного поля, затем, когда я читаю 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
}
}
}
Я правильно понял значения? Или мне нужно превратить их в градусы? Lost Я потерялся ...
Затем я поворачиваю свой 3D-объект значениями, которые я прочитал с датчиков ... но объект не движется вообще.
public void updateScene() {
objModel.rotation().y = _orientation[2];
objModel.rotation().x = _orientation[1];
objModel.rotation().z = _orientation[0];
}
OpenGL не мой друг ... поэтому я не уверен, что я правильно трансформирую ... какой порядок оси вращения или не имеет значения ... и какое значение из ориентации должно соответствовать ось трехмерного объекта, загруженного Min3D?
Если это не тот путь, по которому я должен идти ... Может, кто-нибудь направит меня к правильному пути? Вот уже несколько недель с этим борюсь.
Большое спасибо ... (любитель StackOverflow)