2009年2月5日木曜日

異なる大きさのマーカ、同じIDを持つマーカ


ArManWrap.ARTKPSetPatternWidthメソッドにはマーカの大きさの実測値を指定するのだと思っていたのだが、そうではないようだ。これは、マーカ座標系におけるマーカをあらわす正方形の大きさを指定するメソッドみたいだ。つまり、例えば10.0を指定すると、(-5,-5)-(5,-5)-(5,5)-(-5,5)を頂点とする正方形を作ってから変換行列を取得して適用してやると、ちょうど画面上でマーカと重なるようになる。

そういうわけで、使っていたマーカが一辺3cmなのでこのパラメタに30を指定していたのだが、大きさの違うマーカもそのまま認識してくれた。

また、2Dバーコードを認識するというコンセプト上、同じIDのマーカが複数あっても何の問題もなく認識してくれた。中々守備範囲が広い。

カメラの位置に点光源を置いた


ネタとしては弱くなったが、陰影がつくようになった事が分かりやすいように三角柱を置くようにした。


環境光と組み合わせると少し自然になった。もちろん、実際の光環境と不整合であるが故の気持ち悪さはどうしようもない。が、逆にそれが、バーチャルリアリティーな感じで良い。こういった類は、チープなグラフィックの方が効果が喜んでもらえるものだ。あんまり凄いグラフィックだと、photoshopで合成したみたいに見えちゃうからね。

こうしたちょっとした変更は全部xamlの変更ですんでしまう。WPF恐るべし。

高速化


ARToolkitPlusとWPFの組み合わせのサンプルのコードを少し高速化した。といっても、高速化の余地はほとんどなくて、描画のコールバックの度にキットの初期化とクリーンアップを行っていたのをウィンドウのロード時とクローズ時に行うようにしただけ。でも結構な負荷だったようでかなり動作が改善された。

それにしても今日は、午前中に横になっていたら、午後になって割と調子が良い。眼はすげー霞んでるけど。

体調

最近、朝5時くらいに眼が覚めてそれから9時くらいまでは若干比較的調子が良いのでARで遊んだりできるわけだが、今日は8時までしかもたなかった。なんか感冒様の症状が強まっていて、のどに痰が絡んで息から嫌なにおいがするし、熱はないけど熱っぽいし、眼がしょぼしょぼして霞む。ARの方も一区切りついたし今日はゆっくりしよう。

サウンドオンリーで会議中の方々


ARToolkitPlus+DShowNET+WPFのサンプル



ARTolkitPlus+DShowNET+WPFのサンプルをここに置いておいた。この構成で、全てが上手くいけば、Visual C# 2008で一発でビルドが通るはず。

遊び方:
  • data/00-04.pngを開いて、マーカの一辺が3cmくらいになるように印刷します。マーカーを少し白い余白が残るように切り取ります。
  • ソースに興味があるならばARWithWPF.slnを開きます。三つのプロジェクトが入っていますが、全てビルドしてみましょう。上手くいけば一発で通ります。ソースに興味がなければ、バイナリ入りなので次に進みます。
  • PCカメラの接続を確認してARWithWPF/bin/release/ARWithWPF.exeを実行します。設定ダイアログは初期値のままでかまいません。
  • マーカを何枚か平らな場所に置いてカメラに映るように配置します。文字が表示されたら成功!ID0番のマーカは少し認識し難いです。

なお、今回から設定をアプリケーションスコープにした。変更の必要があれば、開発環境からデフォルト値を変更するか、bin/release/ARWithWPF.exe.configを書き換えてください。