前回「いまさら聞けないAR(拡張現実)の基礎知識」でもお伝えしましたが、モバイル端末とARはとても親和性が高く、現在ではさまざまな手法で実装されたモバイル端末向けARアプリが続々と登場しています。
しかし、実際にARアプリを作るとなったとき、何から手を付ければよいか分からない方も多いと思います。そこで今回は、AndroidでのARアプリ開発方法の1つとして、NyARToolKitというマーカー型のARライブラリを用いたAndroidアプリの概要について説明します。
「NyARToolKit for Android」とは
「NyARToolKit」は、加藤博一先生(現在、奈良先端科学技術大学院大学 教授)とワシントン大学HITL(Human Interface Technology Lab)によって開発されたC言語ライブラリ「ARToolkit」を参考に実装されたオープンソースのライブラリです。
JavaやAndroid、C#、ActionScript 3、C++、Silverlightなど、さまざまなプラットフォームに対応しています。今回は、その中でもAndroid版ライブラリである「NyARToolKit for Android」について説明していきます。NyARToolKit/NyARToolKit for Android はGPLと商用ライセンスのデュアルライセンスです。
NyARToolKitをAndroid端末で動作させる
まず、NyARToolKit for Android で作られたアプリがどのような構成になっているかを確認するためにサンプルを動かしてみましょう。
動作に必要な環境
NyARToolKit for Android のサンプルは、一般的なAndroidアプリ開発環境が整っていれば動かせます。また、Androidアプリ開発はAndroid SDKをインストールすれば何のツールを用いても開発は可能ですが、今回はEclipseを用いた環境を前提に説明していきますので、記事「Android Market配布を目指しEclipseでHelloWorld!」などを参考に構築するとよいかと思います。
NyARToolKit for Androidは、ここからダウンロードできます。今回は「NyARToolKit for Android 3.0 - Android 2.1u1」について説明していきます。
この他に、同じ日付でリリースされている「NyARToolKit for Android 2.5 - Android 2.1u1」がありますが、3.0の方はNyARToolKit for Java v3.0.0ベースのライブラリで、2.5の方はNyARToolKit for Java v2.5.4ベースという違いがあります。そしてNyARToolKit for Java v3.0.0では、既存モジュールの性能向上や不具合習性、機能追加などが含まれているため、本稿では 「NyARToolKit for Android 3.0 - Android 2.1u1」を利用します。
サンプルアプリの実行
ダウンロードしてきた「NyARToolkit_Android_v3.0.0-1os2.1.zip」はEclipseのプロジェクト形式で配布されているため、解凍して作成されたディレクトリNyARToolkit_Android_v3.0.0-1os2.1 をEclipseへインポートします。
そして、インポートしたプロジェクトからAndroid端末にデプロイします。サンプルアプリはエミュレータでは動作確認できないため、アプリの実行は実機で行います。動作させる実機はAndroid 2.1以上である必要があります(Android 1.6用のライブラリも公開されています)。
執筆時点で、筆者は以下の端末での動作を確認しています。
- HTC Desire(Android 2.2)
- IS03(Android 2.2)
- ICONIA TAB A500(Android 3.0)
- MOTOROLA XOOM(Android 3.1)
アプリが実行できたら、図1の「hiro」というマーカーにかざします。すると、マーカーの上に右腕を振るAndroidのマスコットの3Dオブジェクトが表示されます(図2)。
図3のマーカーは「NyARToolkit_Android_v3.0.0-1os2.1/Data/」にあるpattHiro.pdfです。また、「PattKanji.pdf」をかざすと、緑色のマスコットより腕の振りが3倍速い赤色のマスコットが表示されます。
NyARToolkitを用いたアプリの実装
サンプルの動作が確認できたところで、具体的にアプリがどのような実装になっているか見ていきましょう。
プロジェクトのディレクトリ構成
サンプルプロジェクトは図4のようなディレクトリ構成です。
各ディレクトリは、それぞれ次のようになっています。
- src/:アプリのJavaソースコードが格納されているディレクトリ
- gen/:自動生成されるリソース管理用Javaソース(R.java)が格納されるディレクトリ
- Android 2.1-update1/: Android 2.1-update1プラットフォームのライブラリが格納されているディレクトリ
- assets/:R.javaで管理されない静的ファイルが格納されているディレクトリ
- Data/:マーカー画像のPDFファイルやマーカーパターンのサンプルファイルなど、アプリの処理に直接関係のないサンプルファイルが格納されているディレクトリ
- jni/:Androidのカメラプレビューの画像フォーマットを変換するネイティブライブラリのソースが格納されているディレクトリ
- libs/:jniディレクトリにあるソースコードのコンパイル済みライブラリが格納されているディレクトリ
- res/:マーカー上に表示する3Dモデルのファイルやアプリのレイアウトファイルなどが格納されているディレクトリ
サンプルアプリのソースコード
では、実際にソースコードの中を見ていきましょう。まず、srcディレクトリ以下の構成を簡単に説明しておきます。src以下は5つのパッケージで構成されています。
- com.android.camera:Androidのカメラデバイスのインスタンス管理
- jp.androidgroup.nyartoolkit:アプリのメイン処理
- jp.nyatla.kGLModel:3DモデリングソフトMetasequoiaで作成したモデルファイルのローダ
- jp.nyatla.nyartoolkit:NyARToolkitライブラリ本体
- min3d:オープンソースのAndroid用3Dフレームワーク
サンプルのメイン処理はjp.androidgroup.nyartoolkit以下にあるソースコードに記述されており、その他のパッケージはライブラリです。
メイン処理のjp.androidgroup.nyartoolkitには3つのファイルがあります。
- NyARToolkitAndroidActivity.java
- ARToolkitDrawer.java
- ModelRenderer.java
ただし、サンプルではModelRenderer.javaは使われていません。ModelRendererクラスはMetasequoiaで作成したmqo形式の3Dモデルを表示する際に利用するクラスなのですが、現在のバージョンでは、MD2形式の3Dモデルを表示するmin3dライブラリを用いているからです。
ですが、min3dライブラリはmqo形式の3Dモデルには対応していないため、mqo形式の3Dモデルを表示したい場合は利用することになります。ModelRendererクラスを使った処理はソースコード内にコメントアウトされた状態で残っていますので参考にするといいでしょう。
次ページでは、サンプルアプリの中身をコードを交えて解説します。
Copyright © ITmedia, Inc. All Rights Reserved.