ARTool Lite for HSP　説明書

＜序論＞
ARTool Lite for HSPはひとつの完成されたプログラムというより、
モジュール的側面が非常に強くなっています。
このモジュールを用いることによって今後さらなるHSPの新たな発展が
あれば嬉しい限りです。

もともとARToolKitというC言語用の拡張現実感（AR）アプリケーション作成ライブラリがあり、
本作品も大部分(99％以上)の技術がこのARToolKitに依存しております。
ARToolKitの詳細はここでは省かせて頂きます。

本プログラムはARToolKitが取得するカメラ座標からマーカー座標への
並進ベクトルや回転ベクトルを取得し
その値を簡単にHSP上で利用できるようにしたものです。

得られる値としては
マーカーの3次元位置、マーカーの3軸回転角度、
画面上におけるマーカーの中心位置、画面上のマーカーの四隅の座標などです。

マーカーの3軸回転角度に関しては、
その数学的性質から情報が縮退してしまうため、一部に正確な値が出ない仕様となっています。

ARToolKitがオープンソースということなので、
今回のソースは全て公開致します。
もっともAR部分のソースは工学ナビ(http://www1.bbiq.jp/kougaku/)さんの
AR_Metaseqを流用させて頂いております。
（マーカー情報の出力のみ自作。
モジュールではその情報を利用して数学的に回転角度を算出しています。）

ARToolKitに関する情報は上記の工学ナビ(http://www1.bbiq.jp/kougaku/ARToolKit.html)さんの
ところに沢山あるので、是非ご一読下さい。
また工学ナビさんでも紹介されてますが、カメラのキャリブレーションを行うことで
若干認識率が上がるので、そちらも合わせてご参考下さい。





＜サンプルデモの使い方＞
このモジュールは予めARフォルダにあるar.exeを起動することによって初めて意味を持ちます。
それはar.exeが出力したデータをHSP側で利用するからです。
以下に簡単な使い方の説明を行います。

1.「ソースなど」というフォルダの中にあるpattHiro.pdfを印刷しておく(画面でも代用可)
2.ARフォルダにあるar.exeを起動する
3.hsptmp.exeを実行する
4.「Calibration!!」と出たら、ar.exeで表示されてる映像を見て
　　鏡と同じ動きをしたらエンターキーを、鏡と逆ならスペースキーを押してください。
　　このときar.exeの映像にマーカーが映るようにして、
　　さらにマーカー上に赤青緑の3軸が表示される様にしてください。
　　キーを押した瞬間のマーカーの位置が初期位置となります。
5.初期位置から上下左右奥手前にマーカーをある一定以上動かすことによって
　モデルの周りをカメラが回ります。

　上：カメラが上に回りこむ
　下：カメラが下に回りこむ
　右：カメラが右に回りこむ
　左：カメラが左に回りこむ
　奥：カメラがズームイン
　手前：カメラがズームアウト

同時に様々な数値が画面上に出ている思いますがそれぞれの説明をします。
ROT：回転ベクトルです。多分一般には使いません
PAR：並進ベクトルです。
COR：マーカーの四隅の画面上の座標です。
DIR：マーカーの向きにより0〜3の値を取ります。
CEN：マーカーの中心の画面上の座標です。
ROT_DEG：XYZ軸それぞれの軸中心の回転角度です。cos由来とsin由来でCとSの二通りあります。
DIFF：マーカーの初期位置からどのくらいずれているかを表示します。

最初は操作が難しく感じるかも知れませんが、慣れると思った通りに動かせるようになります。






＜モジュールの使い方＞
HSPのモジュールに対する知識が少なく、モジュールの記述として正しいかどうか分かりませんが
一応の使い方です。サンプルデモのソースを参照しながらご覧下さい。

ar_hsp.asというのがARTool Lite for HSPモジュールです。
プログラムの本体の方でこれをインクルードして欲しいのですが、
ar.exeの出力を常に読み込む必要があるため、
プログラム上でループしている部分に「#include "ar_hsp.as"」を記述して下さい。
この使い方は非常にイレギュラーで一般的にはあまり好ましく無いと認識しています。

関数など
ar_rot(i,j)：３×３の回転行列
ar_par(i)：１×３の並進行列
ar_cor(i,j)：２×４のマーカーの四隅の座標
AR_DIR：マーカーの向き
ar_cen(i)：マーカーの中心座標
AR_ROT_C_X：cos由来のX軸まわりの回転角
AR_ROT_S_X：sin由来のX軸まわりの回転角
AR_ROT_C_Y：cos由来のY軸まわりの回転角
AR_ROT_S_Y：sin由来のY軸まわりの回転角
AR_ROT_C_Z：cos由来のZ軸まわりの回転角
AR_ROT_S_Z：sin由来のZ軸まわりの回転角

（注）回転角は情報が縮退しているので実用にはマーカーの向き等の情報により補完する必要あり
　　　情報の縮退についてはオイラー角などでネット上で検索すると良い

＜まとめ＞
ARToolはまだまだ主に回転軸に関して不安定な部分が多く
一般的なARとしての利用には限度があるのではないかと感じています。
しかしARToolの並進ベクトル出力に関してはかなり安定しており、
今回のデモプログラムのように、
マーカーを使った新しい入力機器としての利用が出来るのではないかと考えます。
例えば将来的にはWiiリモコンのような感覚でマーカーを使ったゲームが
出来たらきっと楽しいと思います。
筆者も今回のHSPプログラムコンテスト2008で別に出品している
「Fighting in the sky」にARコントローラを組み込もうかとも考えましたが、
多くの人に遊んでもらうことを考え、今回は別の技術として出品することにしました。
しかし最近ではWebカメラの値段も非常に安価になってきているため、
ARコントローラは新しい体感型のゲームのコントローラとして今後注目されていくことと思います。

＜最期に＞
本プログラムを使用したいかなる損害も筆者は負いかねます。

作者：gluck
HP : http://olddog.blog.shinobi.jp/