Mac OSX 10.6 Snow Leopard 64bit で PTAMを動かそう

拡張現実(AR: Augmented Reality)のツールとして有名なのに ARToolKit があるが、マーカーが必要になる。このマーカーを必要としない方法としてPTAMというものがある。
このPTAMなんだが、動かせるようにするまでが結構大変なのだが、Macにおいては、Snow Leopard になって、さらに導入困難になった。PTAMが使っているライブラリのコンパイルが通らないからだ。これを通す方法を見つけたので、メモとして残しておく。ちなみに参考になったのは 【snow leopard でPTAM】


ところで、拡張現実ってーのは、実際の映像に何かしらの情報を重ねて表示すること(正確には情報付加なんだけどね)。サッカーのオフサイドラインとか、オリンピックの世界記録ラインとか。結構いろいろなところに使われていたりするが、たいていの場合、マーカーをおかないといけないので結構大変らしい。


さて、実際にPTAMを入れた手順を記す。


まずは PTAMとそれに必要な一式を入手。PTAMはここからダウンロードできる。あと TooN, libCVD, Gvars3 が必要だ。これらは PTAM の readme に取得方法が書いてある。cvsで最新のをもってこれば良い。


次に、mac ports をインストールする。これがあると楽なので。
64bit OS の場合、mac ports は 64bit base でビルドしてしまう。 libCVDあたりが 64bitでは動かないので困った事態になる。そこで、 mac ports も 32bit base で動くように設定してやる。
mac ports の設定ファイル /opt/local/etc/macports/macports.conf で built arch i386 を設定する。これはコメントアウトされているので、それを外すだけ。


mac ports を入れたら、mac ports を使って OpenCV をインストールする。これをすると、必要そうなライブラリを一式入れてくれるのでこれがおすすめ。まぁ、余分なものもかなり入るので、それが嫌な人は、1つ1つ入れるのも良い。かなり面倒だけどね。OpenCVあると便利だからこれがおすすめ。
ちなみに・・・すでに 64bit で OpenCV を入れてしまっている人は、readline だけ 32bit で入れ直す。これをしないと libCVDがコンパイルできないので注意!!
ちゅ〜か、OpenCVいらない?readlineだけで良いかもね。試してないからわからないけど。。。


mac ports で libdc1394 をインストールしておく。IEEE1394カメラを使うので。USBの場合はどうか知りません。


TooN のインストールをする。次のようにすれば良いようだ。

export CXXFLAGS=-D_REENTRANT
./configure CXXARCH="-arch i386" --without-ffmpeg
make
make install


libCVD のインストールをする。これが結構面倒。基本、OSX10.5のSDKを使うようにしてやれば良いらしい。
まず、 cvd/gl_headers.h にある

#include <GL/gl.h>
#include <GL/glu.h>

の GL を OpenGL に書き換える。次に progs/calibrate.cxx の中の GL_TEXTURE_RECTANGLE_NV を GL_TEXTURE_RECTANGLE_ARB に書き換える。
configure_mac.sh を以下の内容で作成する

#!/bin/zsh

SDK="-isysroot /Developer/SDKs/MacOSX10.5.sdk"
SDKLIB="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
export MACOSX_DEPLOYMENT_TARGET="10.5"

ARCH="-arch i386"

export CFLAGS="$ARCH $SDK -mmacosx-version-min=10.5 -I /usr/local/include"
export CXXFLAGS="$ARCH $SDK -mmacosx-version-min=10.5 -I /usr/local/include"
export CPPFLAGS="$ARCH $SDK -mmacosx-version-min=10.5 -I /usr/local/include"
export LDFLAGS="$ARCH $SDKLIB -mmacosx-version-min=10.5 -I /usr/local/include"

CC="/usr/bin/gcc-4.2"
CXX="/usr/bin/g++-4.2"
OBJC="/usr/bin/gcc-4.2"

./configure $1 $2 $3 $4 $5 $6 $7 $8 $9

cvd_src/Linux/dvbuffer3_dc1394v2.cc の guid==0x814436200006075 を guid==0x814436200006075LLU に変更する。
後は、次のようにビルドする

sh configure_mac.sh --without-ffmpeg --x-libraries=/Developer/SDKs/MacOSX10.5.sdk/usr/X11/lib/ --x-includes=/Developer/SDKs/MacOSX10.5.sdk/usr/X11/include
make
make install


Gvars3 をインストールする。
まず、 ./configure --disable-widgets で Makefile を作る。
できた Makefile の CXX=g++ に -arch i386 を追加する。
あとは、make と make install をするだけ。


PTAM のビルド
Build/OSX 以下にあるものを全てカレントにコピーする。
コピーした Makefile の CC=g++ -g -O3 に -arch i386 を追加する。
あとは、 make して終わり。


Mac book pro はこれでうまくいった。
環境依存はありそうなんで、参考までにということで。