原创

ARToolKit for Android SDK库的结构和开发技术

Section 1.1 库的结构和开发技术

关于

ARToolKit 是在增强现实应用程序开发中使用最广泛的支持库。目前(如2013年),已经被移植在手机上......最重要的是能够在各种硬件和软件平台的智能手机上运行。

这里描述的内容是 ARToolKit 专业版本,包括了ARToolKit for Mobile。Android NDK 进行核心处理,Android SDK 进行简单实现,另外,应用并选择Android NDK的执行。另外,Android 的开发,需要学的知识也有Android NDK,Android SDK,这些都请通过各种书籍进行学习。

此外,ARToolKit for Mobile 需要可以购买一个许可。

ARToolKit for Android SDK组件

大多数的Android应用程序都是用java开发的,Android SDK提供了系统框架,丰富的组件支持。除了这个,你还可以使用Android NDK来调用使用C或者C++开发的代码库。你可以优化这些代码,提高程序运行设备的最大性能。

使用Android NDK的一般方法是建立C / C ++的共享库,包括界面使用JNI的命名方案,使用Android SDK中加载这个库的应用程序,你可以以同样的方式与任何其他方法调用。

通过使用该方法,通过移植ARToolKit,现在有可能在Android运行。

ARToolKit for Android包括C / C ++和两个如下所示的Java组件,以支持Android应用程序的开发。

ARToolKit core modules

这是ARToolKit的核心部分。从图像中检测标记,是一个包含以计算的位置或类似的部分的本地库。

ARToolKitWrapper

    使用C和JNI接口,包括ARToolKit的功能和标记管理,这是C ++的包装库。您可以结合使用与主要有以下ARBaseLib。

ARBaseLib

与ARToolKitWrapper通信的Java库。这个类它将能够方便地访问并使用ARToolKit原生功能。

通过下面这个图像,你应该就了解了各自作用啦。

session01_01.png

Android NDK的一部分,已经提供了编译的包,因此,借助ARBaseLib能开发基本的程序。

下面开始介绍开发方法

开发方法

下面显示了如何创建并使用ARToolKit for Android 的应用程序

  1. 使用Android SDK 如何开发和利用所提供的ARBaseLib,ARToolKitWrpper库

  2. 使用ARToolKitWrpper、Android SDK和NDK 如何开发和创建新的共享库。

  3. 直接使用ARToolKit,最近的、Android NDK 的开发方法

最简单的方法是使用库已经提供的方法

如下所示

section01_02.png

在这种情况下,对于高标记的负荷的图像分析和计算部中的AR检测会更快。上的标记模型显示,将对应的渲染部分上图中或自己使用了Java的OpenGL ES的写,我认为它会被使用的Java之外的书面渲染器,如min3d的NyARToolKit。

在这种情况下,而采取的方法的模型展示,你可能会觉得应用速度很慢。

所以,有一种方法来处理对应于的Android NDK一侧的渲染的部位,此外,如果没有渲染写入到相应的Java,我觉得用C语言编写OpenGL的代码也可以移植在Android NDK使用。

所以,我认为,显示在下面的图中采用的结构,如下所示

section01_03.png

使用ARBaseLib是一样的,但是OpenGL ES的部分使用依赖Android NDK,比起用java处理更容易表现负责的模型的同时,更可能实现利用以C表示的renderer,不过这种方法具有以下缺点,ARToolKit 将检测结果通过SDK导入,传递给NDK,这其中需要可观的时间,会将效率减慢。


Section 1.1 ライブラリの構造と開発手法

About

ARToolKitは拡張現実感アプリケーションの開発に使用される世界も人気のあるライブラリです。
現在(2011年時点)、特に携帯電話……スマートフォン上で動作させることを重要視し様々なハードウェア及びソフトウェアのプラットフォームに移植されています。

ここで説明しているライブラリは ARToolKit Professinal を Android に移植したバージョンです。
このライブラリは、Android NDKAndroid SDKを用いるライブラリセットになっています。計算コア部分をAndroid NDK、それ以外をAndroid SDKという比較的簡単な実装方法から、全てAndroid NDKで実装する方法などを選択してアプリケーションを開発することになります。
そのため、Androidの開発について、Android SDKのみならずAndroid NDKの知識も必要になる場面があります。
なお、このライブラリはARToolKitのライセンスを購入する事で利用する事ができます。

ARToolKit for Android SDKコンポーネント

AndroidのほとんどのアプリケーションはJavaで開発され、Android SDKはそれをサポートするフレームワーク、豊富なクラスを提供しています。
また、これに加え、ネイティブ C/C++のコードベースのライブラリにアクセスできるAndroid NDKを使用することができます。
これにより、端末の持つパフォーマンスを最大限引き出す必要のある機能のために最適化する事ができます。

Android NDKを用いる一般的なアプローチは、JNIの命名スキームを使用たインターフェースを含むC/C++の共有ライブラリを構築することです。
Android SDKを用いたアプリケーションは、このライブラリをロードし、他のメソッドと同じように呼び出すことができます。

この方式を用いることで、ARToolKitのライブラリを移植することにより、Android上で動作させることが可能になりました。

ARToolKit for Android は、Androidアプリケーションの開発を可能にするために下記に示す C/C++ と Java の両方のコンポーネントが含まれています。

  • ARToolKit core modules

  • ARToolKitのコア部分です。画像からマーカーを検出し、位置などを計算する部分が含まれているネイティブなライブラリです。

  • ARToolKitWrapper

  • CとJNIインターフェースで、
    ARToolKitの機能やマーカー管理などの機能を含む、C++のラッパーライブラリです。主に下記のARBaseLibとあわせて使用します。

  • ARBaseLib

  • ARToolKitWrapperと通信するJavaのライブラリです。このクラスを使用してARToolKitのネイティブ機能に簡単にアクセスできるようになります。

ARBaseLibを利用したアプリケーションの構造をとても簡単にした図にすると下記のようになります。

Android NDK部分については、コンパイル済みのパッケージが提供されています。
そのため、ARBaseLibを活用すれば基本的にJavaのみで開発することが可能です。

次は開発手法について説明します。

開発手法

ARToolKit for Android を使用してアプリケーションを作成する方法を下記に示します。

  1. 提供されているARBaseLib、ARToolKitWrpperのライブラリを使用し、主にAndroid SDKを使用して開発する方法

  2. ARToolKitWrpperを利用した新しい共有ライブラリを作成し、Android SDK、NDKを使用して開発する方法

  3. ARToolKitを直接利用する、ほぼ、Android NDK のみを使用して開発する方法

もっとも簡単な方法は、最初に上げた、提供されているライブラリを使用する方法です。
構造を簡単に図にすると下記のようになります。

この場合、ARで負荷の高いマーカー検出のための画像解析や計算部分が高速化されます。
マーカー上のモデル表示、上記の図中のRenderer部分に当たる箇所はJavaのOpenGL ESを用いて独力で書くか、NyARToolKitのようにmin3dなど外部のJavaで書かれたレンダラーを用いることになると思います。

この場合、モデル表示に処理を取られ、アプリケーションが重いと感じることがあるかもしれません。
そこで、Rendererに該当する部分をAndroid NDK側で処理する方法があります。
また、適切なJavaで書かれたRendererがない場合、C言語で書かれたOpenGLのコードをAndroid NDKに移植して使うこともできると思います。

そのため、下記の図のような構造を採用することになると思います。

ARBaseLibを使うこところまでは同じですが、OpenGL ESを使用する部分をAndroid NDKに任せています。
これにより、Javaで処理するよりも高度なモデルなどが表示しやすくなると共に、Cで書かれたRendererを利用することが可能になります。
しかし、この方法には欠点があり、ARToolKitで検出した結果をSDKを経由して、NDKに渡し直すという手順を取るため、行ったりきたりする分、遅くなるという現象が発生します。

となると結果的に全てNDKで書けばいいのではないか?ということになり、下記のような構造を採用することになります。

メモリ管理さえ出来れば、この方法が最も安定し、書き方によってはiOSアプリと共有できるのでお勧めしたい構成ですが、難易度は一気に高くなります。

開発に必要な要件

このSDKは、Android 2.1以降のデバイスをターゲットとしています。
しかし、JITコンパイラが含まれる Android 2.2 以降が現実的です。
ほぼ全てNDKに押し込めるのであればAndroid 2.3以降ですが、カメラ周りの制御ができないので結果的にAndroid 2.2以降になると思います。

開発環境には、Eclipse、ADT、Android SDK、ネイティブ開発のためのAndroid NDKが必要です。
また、現在、ARToolKit for AndroidはWindows上で開発されているため、WindowsにCygwinが必要になります。

同時に、Android Emulatorはウェブカメラを代用として使うことができないため、Android端末が必須です。

温馨提示:
本文最后更新于 2022年03月01日,已超过 333 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录