OpenGLの導入とセンサーによる紐付け1.プロジェクトの作成とManifestの設定はじめにプロジェクトの作成を行います。各設定項目は以下のように設定してください。7続いてAndroidManifest.xmlの設定を行います。AndroidManifest.xmlを開きます。orientationの項目をlandscapeに設定します。Permissionよりandroid.permission.Camera、android.permission.VIBRATEの2つを登録します。それでは実際にプログラムを作成していきましょう。ESの描画を行う画面の重ね合わせを行います。これは、前回も行なったViewの重ねあわせで実現できます。処理の流れは、OpenGLの描画を行うGLSurfaceViewの作成、描画処理を記述するGLRendererの登録、Viewの重ね合わせとなります。ARGame.javaのメソッドonCreateは以下のようになります。前回までARView内では、Canvasを用いた情報の描画を行いました。今回も同様に、2次元での描画はこのクラスで行います。(2)各種センサーの用意こちらも前回と同様に、カメラがどこを向いているかの計算を行うために、加速度、磁気センサーを使用します。(3)OpenGLの用意mGLSurfaceViewはOpenGLの描画を行うViewとなります。描画処理の内容はGLSurfaceView.Rendererを実装したクラスに記述します。mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT)によって背景を透過します。(4)Viewの重ね合わせ作成したViewを重ねます。直感的にはCameraViewの上にGLSurfaceViewを重ねるのが正しいように思えますが、実際にはGLSurfaceViewが一番下になります。CameraViewについては、特に変更点もないので前回の内容のものをそのまま使用します。3.OpenGLの描画OpenGLの描画処理を行うGLRenderer.javaを作成します。3次元空間中のカメラ設定や、敵の描画処理を記述します。}}(1)描画処理onDrawFrameはフレームの描画を行うメソッドで、描画専用のスレッドから自動的に呼び出されます。ここでは各種設定、カメラの設定と、敵の描画を行なっています。(2)端末の向きから視点を計算するカメラの設定はGLU.gluLookAtによって行います。引数はGLオブジェクト、カメラの設置座標(x,y,z)、カメラの目標座標(x,y,z),どの座標系を上にするかの指定となっています。そのため、取得した端末の向きから半径をCAMERA_Rとする球面の座標を計算し、得られた座標をカメラの目標座標とします。(3)センサーの情報をセットセンサーから得られた角度情報をセットします。描画される敵を表現するEnemy.javaの内容は以下のようになります。}}今回は敵として四角形を描画する内容になっています。xz平面の角度となるphiとxz平面とy軸との角度となるthetaを乱数から取得して初期位置を決定します。使用されるOpenGLでは、リッチなAPIが少ないため、簡単に利用できるとは言いがたいです。3D描画を高速に行えるというのはやはり魅力的と言えます。興味のある方は、ぜひOpenGLについて調べてみて下さい。4.センサー情報の受け渡し描画の準備が整ったので、実際にGLRendererにセンサー情報を渡す処理を追加し、プログラムを実行してみましょう。}こちらも、前回の内容とほとんど同じとなっています。今回は平面の情報となる方位に加えて、端末の傾きとしてロールを使用しています。プログラムを実行するとオブジェクトが配置されていることが確認できると思います。カメラを左右上下に向けることで3次元空間に配置されているように見えることが確認出来ます。登録してみよう>>TOPへ会社案内プレスリリース災害用伝言版サービスサイト。