公開日:2011/8/21 0:00:00

ARToolKit Professional (ARToolKit Version 4)

Setup document section 2 Rebuild AR libraries

この作業は、ライブラリのリビルド作業です。
配布パッケージにはデバック版のlibが含まれていないため、それをどうしても必要とする場合にこの作業を行います。

また、config.hを始めとして各所にある各種パラメータを書き換えた場合にもこの作業を行うことになります。
知っていて損はないですし、必要とするパターンが多いので面倒でも進めておきましょう。
なお、失敗するとビルド済みの提供ライブラリが消えてしまうので、必ずバックアップを取ってください。

なお、今回、リビルドするARVideoは、GPL版である v2.x で言うところの、libARVideoにあたります。

なんで ARToolKit v2 は、GPLなのか?

v2.xでは、Video部分にDSVLが含まれています。 このDSVLは、Vienna University of Technology が権利を持つ GPL v2 のライブラリです。
ARToolKit v2 がGPL配布されている理由はこれが原因ではないかと推測されます。

Microsoft DirectX のインストール

Windowsの場合、DirectShow経由でカメラ入力を取得しているため、DirectX が必要になります。
OS初期インストール済みのものではなく、DirectXのサイトからダウンロードしてインストールしないと駄目だったという事例があります。 もし、サンプルアプリケーションが起動しない場合はDirectXの確認をしてください。

ARVideoのリビルド

ARToolKitをインストールした場所にARToolKitのソリューションファイルがあるので、それを実行します。 今回の環境の場合、C:\ARToolworks\ARToolKit4.5.4\VisualStudio\vs100\ARToolKit4.slnになります。

Visual Studioが起動したら下記のようになると思います。

ARToolKit4 - Microsoft Visual Studio

最初にコンパイル条件を修正します。
このままだと、DSVL や QuickTime も巻き込んでしまい、必要なライブラリが出てきてしまうのでそれらを排除するために行います。

[AR]->[config.h]と開きます。

ARToolKit4 - Microsoft Visual Studio

エディタ内から下記の部分を探してください。236行目あたりになります。

/*------------------------------------------------------------*/
/*  For Windows                                               */
/*------------------------------------------------------------*/
#ifdef _WIN32
#undef   AR_BIG_ENDIAN
#define  AR_LITTLE_ENDIAN

#define AR_INPUT_WINDOWS_DIRECTSHOW
#define AR_INPUT_WINDOWS_DSVIDEOLIB
#undef  AR_INPUT_WINDOWS_DRAGONFLY
#undef  AR_INPUT_WINDOWS_HDCAM
#define AR_INPUT_QUICKTIME
#define AR_INPUT_DUMMY
#define AR_DEFAULT_INPUT_WINDOWS_DIRECTSHOW
#undef  AR_DEFAULT_INPUT_WINDOWS_DSVIDEOLIB
#undef  AR_DEFAULT_INPUT_WINDOWS_DRAGONFLY
#undef  AR_DEFAULT_INPUT_WINDOWS_HDCAM
#undef  AR_DEFAULT_INPUT_QUICKTIME
#undef  AR_DEFAULT_INPUT_DUMMY

上記の通り、AR_INPUT_WINDOWS_DSVIDEOLIBAR_INPUT_QUICKTIMEが有効になっているので、これを #undef に修正します。

/*------------------------------------------------------------*/
/*  For Windows                                               */
/*------------------------------------------------------------*/
#ifdef _WIN32
#undef   AR_BIG_ENDIAN
#define  AR_LITTLE_ENDIAN

#define AR_INPUT_WINDOWS_DIRECTSHOW
#undef AR_INPUT_WINDOWS_DSVIDEOLIB // undef に変更
#undef  AR_INPUT_WINDOWS_DRAGONFLY
#undef  AR_INPUT_WINDOWS_HDCAM
#undef AR_INPUT_QUICKTIME // undef に変更
#define AR_INPUT_DUMMY
#define AR_DEFAULT_INPUT_WINDOWS_DIRECTSHOW
#undef  AR_DEFAULT_INPUT_WINDOWS_DSVIDEOLIB
#undef  AR_DEFAULT_INPUT_WINDOWS_DRAGONFLY
#undef  AR_DEFAULT_INPUT_WINDOWS_HDCAM
#undef  AR_DEFAULT_INPUT_QUICKTIME
#undef  AR_DEFAULT_INPUT_DUMMY

保存後、[AR]プロジェクトを[Debug]構成でリビルドします。
[AR]プロジェクトを選択してから、[ビルド]->[プロジェクトのみ]->[ARのみをリビルド]としてください。

ARToolKit4 - Microsoft Visual Studio

その後、[ARVideo]プロジェクトをリビルドします。
これも同様に[ARVideo]プロジェクトを選択してから、[ビルド]->[プロジェクトのみ]->[ARVideoのみをリビルド]としてください。

正常に終了したら、[ソリューション構成]を[Debug]から[Release]に変更して、リリースビルドも作成しておくと良いでしょう。

ついでに、他のライブラリもデバッグビルドが無いので作り直しましょう。

ライブラリのリビルド

プロジェクト名とそれが何を意味するかを説明します。
リビルドは、それぞれのプロジェクトで、[プロジェクトのみ]でターゲットDebug、Release両方でリビルドを行ってください。

AR
lib\AR.lib と lib\ARd.lib (ARToolKitのコア部分) が生成される。GPL版で言うところの libAR.lib
ARVideo
lib\ARVideo.lib と lib\ARVideod.lib
すでにリビルド済みなので不要。無かったらひとつ前の手順を確認しつつリビルドしてください。
ARgsub、ARgsub_lite
lib\ARgsub.lib、lib\ARgsubd.lib、lib\ARgsub_lite.lib、lib\ARgsub_lited.lib
**AR Graphics Subroutines**トラッキング結果をOpenGLで使用するためのライブラリ。
Camera parameter から、OpenGL の projection matrix を算出したりする処理が含まれています。
ARMulti
lib\ARMulti.lib、lib\ARMultid.lib
マルチマーカーを使う時に使われるライブラリ。
ARosg
lib\ARosg.lib
[OpenSceneGraph](http://www.openscenegraph.org/)を使う場合に必要になるライブラリ。
リビルドする場合は、osgのコンパイル済みバイナリをダウンロードするか、ソースコードをダウンロード後、osgのビルド、OSG_ROOTをWindowsの環境変数に設定などの作業が必要です。
ARvrml
ARvrml.lib、ARvrmld.lib
VRMLを使用する場合に使うライブラリ。
リビルドする場合は、osg同様、[OpenVRML](http://sourceforge.jp/projects/sfnet_openvrml/)、[Boost C++ Libraries](http://sourceforge.net/projects/boost/) などが必要になります。

これ以外に、ARICP、ARICP-s が必要となりますが、これはソースコードが含まれていないので、付属しているコンパイル済みのライブラリを使うことになります。

また、それ以外に外部のコンパイル済みライブラリ(OpenCV、glutなど)が含まれていますが、必要に応じて準備してください。
OpenCVは、カメラキャリブレーションにしか利用しないので、ARアプリケーションを作るだけであれば不要です。

ARosg、ARvrml

どちらもリビルド手順が面倒なので、別ページで作成しようと思います。
osgについては他のプラットフォーム版でも利用されているのでそちらが優先されると思いますが……

次のセクションではサンプルをビルドします。