Датчики и мин3д андройд - PullRequest
1 голос
/ 08 июня 2011

У меня проблемы с реализацией приложения для 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)

1 Ответ

1 голос
/ 03 августа 2011

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

mGeomagnetic = event.values;

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

mGeomagnetic = event.values.clone(); 

вместо

...