GoogleがI/Oで発表したCardboardのアプリを作ってみました。
このアプリはHACKistがC86コミックマーケットで出品した同人誌の3D目次となっています。
CardboardはAndroidでOculus Riftのような、ヘッドマウントディスプレイとヘッドトラッキングを使用したVRを体験できるAndroidアプリを作れるライブラリです。
使い方はAndroidのSurfaceViewとほぼ同じ方法で作れます。
というのも、Cardboardの中身はただのOpenGLES2.0だったりします。
違う所は、SurfaceViewの場合主なライフサイクルは、
onSurfaceCreateで初期化をし、onDrawFrameで描画を繰り返します。
Cardboardの場合、onSurfaceCreateで初期化を行った後、
onNewFrame→onDrawEye→onDrawEye→onNewFrame・・・と繰り返します。
onDrawEyeが2回描画されるのは、左右の目に対して別々の画像を表示するためです。
onNewFrameでは座標変更を行い、onDrawFrameでは描画処理を行います。
それでは簡単に作り方を
まずCardboardはjarファイルのライブラリとして使用します。
公式サイトにアップされているので、ダウンロードしてきます。
ダウンロードしたjarファイルを、プロジェクトファイル直下のlibsフォルダに入れます。
そして、レイアウトにCardboardViewを配置します。
普通にButtonやtextviewをつくるように、xmlファイルに
1 2 3 4 5 6 |
<com.google.vrtoolkit.cardboard.CardboardView android:id="@+id/cardboard_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/> |
と記述することで配置する事ができます。 これで準備は完了です。 また、onCreateでSurfaceViewでは
1 2 3 4 |
mGLSurfaceView = new GLSurfaceView(this); mGLSurfaceView.setEGLContextClientVersion(2); mGLSurfaceView.setRenderer(new SimpleRenderer(getApplicationContext())); setContentView(mGLSurfaceView); |
といった感じに記述しますが、Cardboardでは
1 2 3 |
cardboardView = (CardboardView) findViewById(R.id.cardboard_view); cardboardView.setRenderer(this); setCardboardView(cardboardView); |
と記述することでCardboardを使うことができます。
あとはSurfaceViewと同じようにポリゴンを描画してあげれば、
Android端末でOculus Riftもどきが完成します。
ポリゴンの描画についてはまた別記事で紹介したいと思います。
では、また。