Android用のARToolKit実装「AndAR」の紹介です

Android、流行ってきましたね。アプリも大流行りです。現実世界とインタラクションをするようなアプリケーションを作ろうとしている人も多いんではないでしょうか。

ということで、今回はAndroidでマーカー型AR(拡張現実感)を実現する手法を改めて紹介します。ARについては id:akio0911 辺りを見てください。今修論で、初期のARが割とバーチャルリアリティに敵意むき出しだった事情とかを書いていますが、その辺は置いておきます。

マーカー型ARの代表格がARToolKitで、一時期とても流行っていました。大体流行した時期は、3-4年くらい前ですね。電脳コイルというARを基調にしたアニメをやっていて、あと初音ミクが登場していよいよ二次元が実現したということで、本職の方々やそうでない方がARToolKitを使ってニコ動に初音ミクを現実に召喚する動画を上げまくっていました。そのうちまともに3Dが動くAndroid端末が出てきて、ARToolKitJavaAndroidに実装したNyARToolKitが出て、お、携帯でもできるぞって辺りで割と下火になりました。各社がAndroid端末を出す前の話ですね。

さて、時は移り変わり2011年、サイバーパンクの時代は過ぎても何も起こらず、ネットのエッジは相変わらずの頭狂アンダーグラウンド、オフ会 ミニスカニーソ女の絶対王政、舐めるな日本の若い芸術家志望のぼんくらども!知ったような事言って飲み屋で自画自賛しあってるクラスタなんか2年後に跡形もないんだぜ!

当時と違って高性能のAndroidが普及して、割とARアプリで儲けられる時代になってきた感じです。その間にARプラットフォームも何も進展しなかったわけではありません。その1つがAndARという、2010年辺りから登場した新しいAndroid用のARToolKit実装です。

AndAR - Android Augmented Reality
http://code.google.com/p/andar/

AndARの特徴をNyARToolKitと比較する形で紹介します。

  • ネイティブ実装:マーカーを認識するなどの重い部分が、C言語で書かれています。NyARToolKitはJavaですさまじいチューニングをしています。どちらが高速かは一概には言えません。AndroidJavaは速く、またCで書かれていても、Javaアプリへの受け渡しの段階でオーバーヘッドが存在します。ARの場合はリアルタイムで1秒に何度も処理をしているため、ネイティブ実装でも割と不利になると思います。現状(Android 2.2)では大体同じくらいの体感速度ですが、今後の実装によっては差がつくかもしれません。
  • コードが比較的わかりやすい:AndARのJava部分は、割とオブジェクト指向に即した形で書かれています。どこをカスタムすればいいのかが個人的には比較的わかりやすい感じです。

  • メンテナンスが比較的されている:現状でNyARToolKitは2010年6月、AndARは11月に最新版が出ています。AndARはまだバグも比較的多いですが、それなりに修正が続いています。
いじりかた
  • 詳細な仕様は、作者の卒論(ドイツの大学ですが英語です)を見てください。
  • EclipseAndroid SDK(中身をいじりたい場合はNDKも)をインストール
  • デモは3つあります
    • 緑の立方体を表示するシンプルなもの
    • いくつかのモデルをリストから選んで表示するもの
    • ピンポンゲーム
  • これらを見ながら作ればいけると思います