2009年2月4日水曜日

ARToolkitPlusとDShowNETとWPFの組み合わせで動いたー



やっぱりカメラのキャリブレーションファイルの形式がARToolkit本家とARToolkitPlusとで違っていた。でも、ARToolkitPlusについてきたキャリプレーションツールはビルドにてこずっている。ていうか無理。もうプリプロセッサが存在する言語と付き合うのは無理。ヘッダファイルという存在が吐き気がする。

というわけでとりあえずARToolkitPlusに付属の適当なカメラのキャリブレーションファイルを使用してみたらあっさりと上手く行ってしまった。イエイ!正しいキャリブレーションじゃないので少し歪むのはご愛嬌。

面白いのは、本家のARToolkitはパターンファイルをプログラムで読み込んで、それと同じパターンをマーカとして撮影すると認識されるという仕組みなのに対し、ARToolkitでは二次元バーコードを用いる。つまり、プログラム側でパターンを登録する必要なしに、Simpleバージョンのコードなら512種類、BCHバージョンなら4096種類のマーカを自由に使える。プログラム側では認識したマーカのid番号が取得できる。この画像ではウィンドウのタイトルに、4番目のidのマーカが認識されたと表示されているが、0番から4番まで撮影するマーカを取り替えるとちゃんとこのタイトルの表示が変わってちょっとうれしい。

こうなると、当面の目標は複数のマーカを識別して、その上にバーコードに対応する番号を描画するプログラムを作る事だな。

それはそうと、キャリプレーションはどうにかしたいなあ。


改めてポインタを。
ARToolkitPlusの.net用ラッパー:
http://www.brains-n-brawn.com/default.aspx?vDir=wpfaugreal
DShowNET:
http://www.codeproject.com/KB/directx/directshownet.aspx
DShowNETのサンプル:
http://web.sfc.keio.ac.jp/~shokai/archives/2007/01/directshownet-capture-save-image.html

NyARToolkitがいやだったのはそもそもDirectXの経験がない事もあるのだが、DirectX SDKが必要で環境が特異的になってしまう事。一方でARToolkitPlusの.netラッパー+DShowNET+WPFの組み合わせならば、事実上は標準の.net framework環境とbrains-N-brawnによる``ARToolKitPlus - modified to be a DLL and export C-style functions that can be pInvoked from C#''だけで完結する。今のソリューション構成はARToolkitPlusの.netラッパーとDShowNETのプロジェクトをそれぞれ独立させて、それらのビルドターゲットアセンブリを自分のプロジェクトから参照するようにしているが、これは必要ならばひとつのプロジェクトにまとめる事すらできる。

ARToolkitを使う上では、導入しなければいけない物が多すぎて開発のスタートアップ段階で躓きやすいのと、人に配布するとき何をどうすれば良いのかさっぱりわからないというのが問題だと思うのだが、私が今やっているARToolkitPlusの.netラッパー+DShowNET+WPFの組み合わせならば、標準の.net framework環境とbrains-N-brawnによるARToolKitPlusのdllで全て完結する。しかも3DについてはWPFによって容易なコーディングが可能だ。初音ミクがウマウマする動画がニコニコ動画で流行った後、ARToolkitはアカデミックな領域以外ではやはり敷居が高くて一時的なブームに終わった感があるが、この試みをもう少し続けていけば、かなり敷居を下げられると思う。

0 件のコメント: