ARchemy(アルケミー)は、画像から目印となるマーカーを検出し、カメラアングルに合わせて3DCGモデルを合成するソフトウェアです。静止画と動画に対応しています。
Windows XP上でもMac OS X上でも動作します。
静止画の場合、これが
こうなります。
動画の場合、Webカメラ等のキャプチャデバイをス入力源とし、リアルタイムで合成を行います。これが
こうなります。
ARchemyを使用するには、Java言語のクラスライブラリであるJOGLとJMFをインストールする必要があります。
以下のページを参考に、JOGLをインストールして下さい。
インストールの前に、使用するキャプチャデバイスを接続しておくと、面倒がなくてよいと思います。接続していない状態でインストールした場合は、後でインストール先の"bin"フォルダ内の"jmfint.exe"を実行して下さい。
インストールが完了したら、キャプチャデバイスを接続し、"JMStudio"(デスクトップにショートカットが作られていると思います)を実行して動作確認をして下さい。"File"メニューから"Capture..."を選択し、キャプチャした画像が表示されればOKです。
ARchemy.zipを解凍し、お好きな場所に置いて下さい。"Program Files"フォルダ辺りが一般的かと思います。
ARchemyを使用するには、Java言語のクラスライブラリであるJOGLをインストールする必要があります。
以下のページを参考に、JOGLをインストールして下さい。
Mac OS Xの場合も、OSとCPUに合わせたファイルをダウンロードするところまでは同様です。
ダウンロードしたファイルを解凍してできる"lib"フォルダ内の全てのファイルを"/System/Library/Java/Extensions"(日本語環境では"/システム/ライブラリ/Java/Extensions")に置けば、インストールは完了です。
ARchemy.zipを解凍し、お好きな場所に置いて下さい。"アプリケーション"フォルダ辺りが一般的かと思います。
"ARchemy.jar"をダブルクリックする、または開くことで起動できます。
Windowsの場合は、"ARchemy.jar"を実行してもエラーになって起動できないことがあります。その場合は、"ARchemy"フォルダ内の"ARchemy.bat"を実行してみて下さい。
ARchemyを使うには、3DCGモデルを合成する際の目印となるマーカーを用意する必要があります。マーカーは、以下のような黒枠で囲まれた正方形の図形です。
ARchemyでは、1面のマーカーを使用する平面型マーカーの他に、最大6面のマーカーをひとまとめにして扱うキューブ型マーカーを使用することができます。
キューブの各面の呼称とマーカーの向きは、以下の通りです。各面のマーカーは向きが決まっており、向きが違うと、正しく合成できません。私は一度間違えました。みなさんは間違えないよう御注意下さい。
キューブ型では、各面のマーカーはそれぞれ異なりますが、キューブのどの面が画像から検出されても同じ位置に3DCGモデルが合成されます。平面型では、例えばカメラをマーカーの下に回り込ませることはできませんが、キューブ型ではいずれかの面がカメラに映っていればいいので、平面型よりも広いカメラアングルに対応できます。
"ARchemy/Data/png"フォルダに、マーカー用画像ファイルがありますので、これを紙に印刷してお使い下さい。
マーカーはなるべく平坦であることが望ましいので、平面型の場合は固めの台紙に貼り付けるとよいと思います。
キューブ型は、立方体であれば材質や大きさは問いませんので、お好きに作って下さい。私は、10cm角のキューブ型マーカーを作りました。
10cm角のキューブ型マーカーは、東急ハンズで売っている10cm角の発泡スチロールを使用して作りました。それに、直径2.5cmの丸スチロール棒をくっつけています。
マーカーは紙に印刷した物を貼り付けています。
御自分でマーカーを作る場合は、以下の点に御注意下さい。
ARchemyがマーカーを検出できるようにするためには、マーカーをデータ化したパターンファイルが必要です。
"ARchemy/Data/pat"フォルダに、"ARchemy/Data/png"のマーカー用画像ファイルに対応したパターンファイルがありますのでお使い下さい。
御自分でパターンファイルを作る場合は、以下のページを参考にして下さい。
ARchemyは、静止画モードで起動します。また、"Mode"メニューから"Still"を選択すると、静止画モードに切り替わります。
"File"メニューから"Open Image..."を選択し、3DCGモデル(以下モデル)を合成したい画像を読み込みます。もちろん、画像にはマーカーが写っている必要があります。
セーブしておいたキューブの設定がある場合は、"File"メニューから"Load Setting..."を選択して設定を読み込みます。設定を読み込まない場合は、一から設定を行うことになります。
キューブは、最大10個まで設定できます。つまり、一つの画像に最大10種類のモデルを合成することができます。
"新規キューブを追加"ボタンを押すと、新しいキューブの設定を追加します。"現在のキューブを削除"ボタンを押すと、現在表示されているキューブの設定を削除します。タブを切り替えることで表示するキューブの設定を切り替えることができます。
キューブの各面のパターンファイルとマーカーを設定して下さい。
コンボボックスで面を選択し、"ロード"ボタンを押すと、ファイル選択画面が開くので、ロードするパターンファイルを選択して下さい。ファイルを選択すると、コンボボックスで選択した面にパターンファイルをロードし、キューブ画像にマーカーを表示します。"クリア"ボタンを押すと、コンボボックスで選択した面のパターンファイルとマーカーをクリアします。
キューブ画像上でマウスをドラッグすることで、キューブを回転させることができます。
"キューブ(mm)"テキストフィールドは、キューブの一辺のサイズをmmで指定します。"マーカー(mm)"テキストフィールドは、マーカーの黒枠の内側の正方形の一辺のサイズをmmで指定します。
合成するモデルを選択して下さい。
"モデルを選択"ボタンを押すと、ファイル選択画面が開くので、合成するモデルファイルを選択して下さい。モデルファイルは、mqo形式にのみ対応しています。
"モデルサイズ(mm)"テキストフィールドは、モデルのサイズ(原点から最も遠い頂点と原点との距離)をmmで指定します。モデルの元のサイズに関らず、合成したい任意のサイズを指定できます。
"モデルの移動量(X,Y,Z)"テキストフィールドは、モデルの移動量をmmで指定します。左からそれぞれ、X軸、Y軸、Z軸方向の移動量です。マイナス値も指定できます。
"モデルの回転量(X,Y,Z)"テキストフィールドは、モデルの回転量を度(ラジアンではない)で指定します。左からそれぞれ、X軸、Y軸、Z軸を回転軸とした回転量です。プラス値を指定すると半時計回りに、マイナス値を指定すると時計回りに回転します。
"シェーディングモデル"コンボボックスは、シェーディングモデルを指定します。両者の違いはこんな感じです
"光源の位置"コンボボックスは、光源の位置を指定します。SOUTH面方向から見た場合の位置になります。
"光源の色(R,G,B)"テキストフィールドは、光源の色を指定します。左からそれぞれ、R(赤)、G(緑)、B(青)の値です。指定できる値の範囲は0〜1で、0,0,0が黒、1,1,1が白になります。
"設定を反映させる"ボタンを押すと、現在のキューブの設定内容で画像にモデルを合成します。指定を変更しても、"設定を反映させる"ボタンを押さないと変更内容は反映されませんので御注意下さい。
まずは、モデルの移動量と回転量を0にして合成し、結果を見ながら細かく調整していくとよいと思います。
"File"メニューから"Save Setiing As..."を選択すると、ファイル名を指定して設定を保存することができます。設定ファイルを読み込んでいる場合、"File"メニューから"Save Setiing"を選択すると、設定ファイルを上書きで保存します。保存する内容は、全てのキューブの設定と光源の設定です。
"Mode"メニューから"Movie(Win)"を選択すると、動画モード(Win)に切り替わります。
キャプチャデバイスが検出されると、"Select Capture Device"画面が開きます。
"デバイス"コンボボックスは、キャプチャデバイスを指定します。
"フォーマット"コンボボックスは、画像のフォーマットと解像度を指定します。
"フレームレート(fps)"テキストフィールドは、フレームレートをfps(1秒あたりのフレーム数)で指定します。フレームレートはマシンの性能に左右されますので、フレームレートが指定した値を下回ることもあります。
"OK"ボタンを押すと、キャプチャを開始します。以降は、静止画モードと同様です。
"Mode"メニューから"Movie(Mac)"を選択すると、動画モード(Mac)に切り替わります。
"Select Width,Height,Frame Rate"画面が開きます。
"幅"テキストフィールドは、キャプチャ画像の解像度の幅を指定します。
"高さ"テキストフィールドは、キャプチャ画像の解像度の高さを指定します。
"フレームレート(fps)"テキストフィールドは、フレームレートをfps(1秒あたりのフレーム数)で指定します。フレームレートはマシンの性能に左右されますので、フレームレートが指定した値を下回ることもあります。
キャプチャデバイスが検出されると、"ビデオ"画面が開きます。
"OK"ボタンを押すと、キャプチャを開始します。以降は、静止画モードと同様です。
"Confidence"メニューで、一致度の値が一定値未満のマーカーを無視するよう調整できます。ARchemyがマーカーではない部分もマーカーとして検出してしまう場合は、このメニューで調整して下さい。
満たすべき一致度の値が高い順に"High","Middle","Low","Off"です。"Off"の場合、一致度の値を考慮しません。
起動時は"Off"が選択されています。
一つの画像に同じキューブが複数写っている場合は、最も一致度の高いキューブ1個にのみモデルが合成されます。一つの画像に同じモデルを複数合成したい場合は、異なるキューブに同じモデルを割り当てることで実現できます。
モデルが合成される位置は、常にTOP面です。モデルの座標系は、TOP面の中心を原点として以下のようになっており、モデルはこの座標系上で移動・回転します。
キューブは、全ての面を設定する必要はありません。平面型マーカーの場合は、TOP面のみ設定すればOKです。TOP面が設定されていない場合も、モデルが合成される位置は、TOP面になります。
ARchemyの作成にあたり、NyARToolkit for Java、java版OpenGL用モデルデータ読み込みを改変して使用させていただきました。作者の方に心より感謝を。