2011-06-08 3 views
1

У меня возникли проблемы с внедрением приложения дополненной реальности для андроида, и я надеюсь, что кто-то может мне помочь. (Извините за мой английский ...)Датчики и min3d 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 
     } 
    } 
} 

Имею ли я значение правильно? Или мне нужно преобразовать их в градусы? Я потерян ...

Затем я поворачиваю свой 3D-объект со значениями, которые я читал с датчиков ... но это не движение вообще.

public void updateScene() { 
    objModel.rotation().y = _orientation[2]; 
    objModel.rotation().x = _orientation[1]; 
    objModel.rotation().z = _orientation[0];   
} 

OpenGL не мой друг ... так что я не уверен, что я правильно преобразуя ... что порядок оси вращения или это не имеет значения ... и какое значение из ориентация должна соответствовать оси 3D-объекта, загруженного Min3D?

Если это не путь, я должен следовать ... может ли кто-нибудь привести меня к правильному, пожалуйста? Прошло несколько недель с этим.

Спасибо так много ... (StackOverflow любовник)

ответ

1

у меня была проблема с

mGeomagnetic = event.values; 

вы должны написать

mGeomagnetic = event.values.clone(); 

вместо

Смежные вопросы