ライブラリの構造と開発手法AboutARToolKitは拡張現実感アプリケーションの開発に使用される世界も人気のあるライブラリです。現在(2011年時点)、特に携帯電話......スマートフォン上で動作させることを重要視し様々なハードウェア及びソフトウェアのプラットフォームに移植されています。移植したバージョンです。SDKを用いるライブラリセットになっています。NDKで実装する方法などを選択してアプリケーションを開発することになります。NDKの知識も必要になる場面があります。このライブラリはARToolKitのライセンスを購入する事で利用する事ができます。SDKはそれをサポートするフレームワーク、豊富なクラスを提供しています。NDKを使用することができます。これにより、端末の持つパフォーマンスを最大限引き出す必要のある機能のために最適化する事ができます。NDKを用いる一般的なアプローチは、JNIの命名スキームを使用たインターフェースを含むC/C++の共有ライブラリを構築することです。SDKを用いたアプリケーションは、このライブラリをロードし、他のメソッドと同じように呼び出すことができます。この方式を用いることで、ARToolKitのライブラリを移植することにより、Android上で動作させることが可能になりました。両方のコンポーネントが含まれています。modulesARToolKitのコア部分です。画像からマーカーを検出し、位置などを計算する部分が含まれているネイティブなライブラリです。ARToolKitWrapperCとJNIインターフェースで、ARToolKitの機能やマーカー管理などの機能を含む、C++のラッパーライブラリです。下記のARBaseLibとあわせて使用します。ARBaseLibARToolKitWrapperと通信するJavaのライブラリです。このクラスを使用してARToolKitのネイティブ機能に簡単にアクセスできるようになります。ARBaseLibを利用したアプリケーションの構造をとても簡単にした図にすると下記のようになります。NDK部分については、コンパイル済みのパッケージが提供されています。そのため、ARBaseLibを活用すれば基本的にJavaのみで開発することが可能です。次は開発手法について説明します。使用してアプリケーションを作成する方法を下記に示します。使用して開発する方法もっとも簡単な方法は、最初に上げた、提供されているライブラリを使用する方法です。構造を簡単に図にすると下記のようになります。この場合、ARで負荷の高いマーカー検出のための画像解析や計算部分が高速化されます。ESを用いて独力で書くか、NyARToolKitのようにmin3dなど外部のJavaで書かれたレンダラーを用いることになると思います。この場合、モデル表示に処理を取られ、アプリケーションが重いと感じることがあるかもしれません。NDK側で処理する方法があります。NDKに移植して使うこともできると思います。そのため、下記の図のような構造を採用することになると思います。NDKに任せています。これにより、Javaで処理するよりも高度なモデルなどが表示しやすくなると共に、Cで書かれたRendererを利用することが可能になります。この方法には欠点があり、ARToolKitで検出した結果をSDKを経由して、NDKに渡し直すという手順を取るため、行ったりきたりする分、遅くなるという現象が発生します。なると結果的に全てNDKで書けばいいのではないか?ということになり、下記のような構造を採用することになります。メモリ管理さえ出来れば、この方法が最も安定し、書き方によってはiOSアプリと共有できるのでお勧めしたい構成ですが、難易度は一気に高くなります。2.1以降のデバイスをターゲットとしています。2.2以降になると思います。AndroidはWindows上で開発されているため、WindowsにCygwinが必要になります。Emulatorはウェブカメラを代用として使うことができないため、Android端末が必須です。