連載
» 2011年11月16日 03時26分 公開

モバイルARアプリ開発“超”入門(3):NyARToolKit for Androidよりも簡単なAndARとは (1/3)

[金岡徹,TIS株式会社]

 前回の「NyARToolKitを利用したマーカー型ARの実装」では、「NyARToolKit for Android」というライブラリを用いたARアプリの概要と使い方について説明しました。

 Android端末上で動作するARアプリを作成する方法としては、NyARToolkit for Androidを利用する方法が有名ですが、その他にもライブラリを利用する方法やサンプルアプリをカスタマイズして実装する方法など、さまざまな方法があります。

 実際に開発を行う場合には、利用するライブラリやアプリによって特徴が異なっているため、利用シーンに合った方法を選択する必要があります。今回は、その中でも「AndAR」を利用したARアプリの作成方法について、ソースコードを交えて説明していきます。

「AndAR」の2つの大きな特徴

 「AndAR」はAndroidプラットフォーム上でのARを最小限の労力で実現することを目的に作成されたオープンソースのソフトウェアで、Androidのアプリとしてソースコードを公開しています。


【1】オブジェクト指向による設計を強く意識している

 実装自体は、第2回で紹介したNyARToolkit for Androidと同様にARToolkitをベースにしていますが、NyARToolkit for Androidよりもオブジェクト指向による設計を強く意識しているため、オブジェクト指向に慣れ親しんだ方であれば比較的取っ付きやすいという特徴があります。

【2】ネイティブコードをあまり意識せずに利用できる

 また、ARアプリの作成を手助けするライブラリやサンプルアプリの多くはコアな処理をC/C++で実装することで処理の高速化を図っていますが、AndARではコアとなる処理へのアクセスはJavaのAPIを通して行うようになっているため、C/C++といったネイティブコードをあまり意識せずに利用できるという特徴も備えています。

 詳細は後述しますが、マーカーの検出判定や変換行列の計算など、AR表示するためのコアな処理をまとめて実行するメソッドなども備えています。

 そのためAndARは、ARマーカー上に3Dモデルを表示するだけの簡単なアプリを実装したい場合には比較的扱いやすいのではないかと思います。

AndARのサンプルアプリをAndroidで動かすには

 サンプルコードを動かしてみましょう。AndARはAndroidプラットフォーム上で動作するアプリなので、Androidの開発環境を用意しておきます。

動作に必要な環境

 Eclipseを用いたAndroidの開発環境の構築については、前回でも触れていますので、そちらの記事を参照して構築してみてください。

 AndARのソースコードは、こちらを参考にチェックアウトできます。今回の記事ではリビジョン197のAndARのプロジェクトを対象としています。AndARのソースコードは何も手を加えなくても動作するようになっているので、入手したソースコードをそのままAndroid端末にデプロイします。前回のNyARToolkit for Androidを利用した場合と同様、アプリの実行は実機で行ってください。

 アプリをインストールするAndroidのバージョンは2.1以上である必要があります。本記事ではHTC Desire(Android 2.2)での動作を確認しています。

サンプルアプリの実行

 アプリが起動したら図1の「Hiro」マーカーにかざします。すると、緑色の立方体がマーカー上に重ね合わさっていることが確認できると思います(図2)。

図1 Hiroマーカー 図1 Hiroマーカー
図2 アプリ起動後 図2 アプリ起動後

AndARの構成

 AndARの主要なクラスのクラス図(図3)を確認してみましょう。

図3 主要クラスのクラス図(※作者であるTobias Domhan 氏の論文「Augmented Reality on Android Smartphones」から引用)≫ 図3 主要クラスのクラス図(※作者であるTobias Domhan 氏の論文「Augmented Reality on Android Smartphones」から引用)

 AndARを利用する場合、コアとなるのは以下の5つのクラスです。

  1. AndARActivity
    SurfaceView、CameraおよびPreviewCallbackなどの設定や、GLSurfaceView、Rendererの設定などを行う抽象クラス
  2. AndARRenderer
    レンダリングを行うクラス
  3. ARToolkit
    ネイティブコードのARToolkitとの橋渡しをするクラス
  4. ARObject
    描画すべき3Dモデルを定義した抽象クラス
  5. OpenGLRenderer
    OpenGL用のレンダラを定義するためのインターフェイス

 これら5つのクラスではカメラの設定やレンダリングの設定、マーカー判定、変換行列の取得と適用といった、ARを実現するために不可欠となる処理を備えています。そのため、すでに実装済みのこれらのクラスやインターフェイスを継承・実装することによって、定型的な処理や複雑な処理を、あれこれ意識することなくARアプリを作成できます。

 実際にAndARを利用してマーカー上に3Dモデルを表示するARアプリを作成するには、以下の3つのクラスをカスタマイズしていきます。

  1. CustomActivity
    AndARActivityを継承。AndARActivityでは、カメラの設定およびレンダラの設定を行っているため、本クラスのonCreateでは描画すべき3Dモデルの登録を行う。その他、Android全体に対する設定やレイアウトの設定などはCustomActivityで処理を呼び出すようにする
  2. CustomObject
    ARObjectクラスを継承。CustomObjectではマーカーパターンとマーカー幅、中心座標を渡してインスタンスを生成。マーカーを検出した際の3Dモデルの描画処理を記述
  3. CustomRenderer
    OpenGLRendererを継承。このクラスは3Dモデル描画前に呼び出される。光源の設定や3Dモデルに共通する処理を追加したい場合に処理を記述

 これら3つのクラスは主要なクラスを継承する形になっているため、以下の3点について簡単にカスタマイズできるようになっています。

  1. どのようなマーカーに3Dモデルを表示するか
  2. どのような3Dモデルを描画するのか
  3. AR表示を行う以外の部分でAndroidアプリとしてどのような機能を持たせるのか

 AndARは、このようにカスタマイズすべき部分が明確に分かれている構成になっているため、カスタマイズ部分に集中でき、少ない労力でARを実現できるようになっています。

 次ページでは、サンプルアプリの中身をコードを交えて解説します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。