ARToolKitのTwoViewを触ってみる

|
やっと2つめのカメラを購入したので、さっそくTwoViewを触ってみました。
遅くなってしまったので、コメントを頂いた方はもう解決したかもしれませんが、一応書いておきます。

基本的には、工学ナビ様のBBSで説明されている手順通りです。
詳しく書いてみます。

ちなみに僕の環境は以下の通りです。
OS      : Microsoft Windows XP Home Edition (SP2)
CPU    : AMD Athlon^(TM) 64 X2 プロセッサ 3800+
メモリ   : DDR SDRAM 1GB
Webカメラ:Qcam Pro for Notebooks ×2


1.GraphEditの入手
GraphEditは、DirectX SDKの中に入っています。
ひとまず、"C:\Program Files\"内で、GraphEditとか、graphedtで検索してみてください。
見つからない場合は、DirectX SDKをインストールしてください。


2.Webカメラのデバイス名を取得
GraphEditを起動したら、メニューから[Graph]->[Insert Filters...]を選択、ダイアログを開きます。
ダイアログのツリーから[Video Capture Source]を開き、その中の各Webカメラ名を選択します。
僕の場合は、[Qcam Pro for Notebooks]が2つあります。

各Webカメラ名を選択したときに、一番下のエディットボックスに表示される長い文字列が、そのWebカメラのデバイス名になります。僕の場合は、

@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00
#6&22a7aaac&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}

@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00
#6&a9d31db&1&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}
という文字列でした。

この文字列は、もちらんそのカメラ固有のもので、僕のカメラのものを他の人が使っても上手くいきません。


3.ARToolKitの設定ファイルを書き換える
Dataフォルダの"WDM_camera_flipV.xml"というファイルを、適当なエディタで開きます。
その中で、

<camera show_format_dialog="true" friendly_name="PGR">

という行があるはずです。これに"device_name"追加して、以下のようにします。

<camera show_format_dialog="true" friendly_name="PGR" device_name="">

ここで、先ほど取得したカメラのデバイス名を、device_nameの""内にコピーします。

<camera show_format_dialog="true" friendly_name="PGR" device_name="@device:pnp:\\?\usb#vid_046d&pid_0991&mi_00#
6&22a7aaac&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}">

次に、コピーした文字列で"&"になっている部分を"&amp;"に置き換えます。

<camera show_format_dialog="true" friendly_name="PGR" device_name="@device:pnp:\\?\usb#vid_046d&amp;pid_0991&amp;mi_00#
6&amp;22a7aaac&amp;0&amp;0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\
{bbefb6c7-2fc4-4139-bb8b-a58bba724083}">

この変更したファイルを、別名で保存します。
ここでは、"WDM_camera_flipV_01.xml"とします。

もう1つのデバイス名についても同じ作業をして、名前を変えて保存します。
こっちは、"WDM_camera_flipV_02.xml"としました。


4.プログラムを書き換える
プロジェクトを開いて、twoView.cを変更します。
"WDM_camera_flipV.xml"のところを、新しく作ったファイルに置き換えます。

#if defined(_WIN32)
        "Data\\WDM_camera_flipV.xml",
        "Data\\WDM_camera_flipV.xml",
#elif defined(__APPLE__)



#if defined(_WIN32)
        "Data\\WDM_camera_flipV_01.xml",
        "Data\\WDM_camera_flipV_02.xml",
#elif defined(__APPLE__)
に変更しました。



以上で終わりです。
僕の場合は、これでうまくいきました。

これでも失敗する場合は、残念ながら僕には分かりません。
twoViewについては、他にも解説しているサイトがあるので、そちらを参照してください。

Webカメラの種類も関係あるみたいです。




※追記 

○08/05/09

一方のカメラのフレームレートだけ、やけに遅い問題が発生していましたが、
"videoWin32DirectShow.cpp"ファイルの

const long                frame_timeout_ms = 0L;
というのを

const long                frame_timeout_ms = 100L;
ぐらいにしたら、直りました。数値は適当です。


○08/05/10

一方のカメラの画面が上下反転していた問題がありました。
調べてみると、"WDM_camera_flipV_02.xml"ファイルだけ、

<RGB32 flip_h="false" flip_v="true"/>


<RGB32/>
となっていたのが原因でした。
このファイルを作るのに、"WDM_camera.xml"を利用したのが間違いだったみたいです。

このブログ記事について

このページは、PipeRが2008年5月 9日 20:42に書いたブログ記事です。

ひとつ前のブログ記事は「ARToolKitの解析 その② マーカーの認識」です。

次のブログ記事は「ARToolKitの解析 その③ ソースの公開」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01a