Android 3D行先コンパス AR 修正 ver1.11

3D行先コンパス AR

バグ修正
1)NECの10インチタブレット LifeTouch(LT-TLX5W1AB)X,Y,Z軸がおかしいバグ修正

device_angle = getWindowManager().getDefaultDisplay().getRotation();
device_angle がSurface.ROTATION_270でした。通常のスマホだと、Surface.ROTATION_0です。
とういうことは、タブレットによっては、Surface.ROTATION_90やSurface.ROTATION_180があるかも。

「メモ」
remapCoordinateSystemの第二、第三引数は、いまいち、机上(思考)と端末座標、OPENGL座標が結びつかないので、例によって総当たり(24通りの中から)でピックアップしました。

AXIS_X, AXIS_Y
AXIS_X, AXIS_Z
AXIS_X, AXIS_MINUS_Y
AXIS_X, AXIS_MINUS_Z

AXIS_Y, AXIS_X
AXIS_Y, AXIS_Z
AXIS_Y, AXIS_MINUS_X
AXIS_Y, AXIS_MINUS_Z

AXIS_Z, AXIS_X
AXIS_Z, AXIS_Y
AXIS_Z, AXIS_MINUS_X
AXIS_Z, AXIS_MINUS_Y

AXIS_MINUS_X, AXIS_Y
AXIS_MINUS_X, AXIS_Z
AXIS_MINUS_X, AXIS_MINUS_Y
AXIS_MINUS_X, AXIS_MINUS_Z  Surface.ROTATION_270

AXIS_MINUS_Y, AXIS_X
AXIS_MINUS_Y, AXIS_Z
AXIS_MINUS_Y, AXIS_MINUS_X
AXIS_MINUS_Y, AXIS_MINUS_Z

AXIS_MINUS_Z, AXIS_X     Surface.ROTATION_0
AXIS_MINUS_Z, AXIS_Y
AXIS_MINUS_Z, AXIS_MINUS_X
AXIS_MINUS_Z, AXIS_MINUS_Y

switch (device_angle){
case Surface.ROTATION_0:
//スマートフォン(縦)
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_Z, SensorManager.AXIS_X, outR );
break;
case Surface.ROTATION_270:
//タブレット横にセンサーが設定されているもの 10インチタブレット縦
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_X, SensorManager.AXIS_MINUS_Z, outR );
break;
default:
SensorManager.remapCoordinateSystem( inR, SensorManager.AXIS_MINUS_Z, SensorManager.AXIS_X, outR );
break;
}

もし、Surface.ROTATION_90やSurface.ROTATION_180場合は崩れます。
zahyou2
2)N,S,E,Wのテクスチャーが正しく表示されないバグ修正

OpenGL ES1.0では、テクスチャーの1辺のサイズは2のn乗でなければならない。
96 x 96にしていました。(Nexus5,7 ,Xperiaだと、これでも正しく表示できますが、NECの10インチタブレット LifeTouch Android 4.0.1は仕様どおり表示できません。)

3)カメラSurfaceViewがGoogleMapのViewより下に隠れて表示されないバグ修正。

NECの10インチタブレット LifeTouchで発生。
OpenGLのSurfaceViewは、mOpenglView.setZOrderOnTop(true)でトップに持ってきているのですが、
カメラSurfaceViewが端末およびアプリのタイミングにより中途半端になるようで、mCameraview.setZOrderMediaOverlay(true) を設定しました。

もし、SurfaceViewを3つ以上使う場合は対処不明です。

 

コメントを残す