ARToolKitの安定化 その① 今回のプログラムの基本
順番が逆になってしまいましたが、動画で紹介した内容を書きます。
最初に、ARToolKitについてまったく知らない方は、youtube等で作品を検索してみるのが一番早いかと思います。
AR(augmented reality)(拡張現実)とはVR(virtual reality)(仮想現実)に近い言葉です。
VRが現実に存在しない仮想空間をメインにするのに対し、ARは現実世界がメインで、そこに対して情報を付加したりします。
ARToolKitはそんなARの技術の1つを、なんとフリーで公開しています。なので、研究レベルのアプリを個人でも作成できてしまうというすばらしいツールなのです。
現在、ネット上の動画サイトで、このツールを使った作品が多数製作されています。
さらに、ARToolKitのプログラムに興味がある方がこちらをご覧ください。
工学ナビ:「攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング
さて、僕が作成したプログラムも、そんなARToolKitを使い、作成したものです。
BGM:エコテロニカ(sansuiさん)
このプログラムは、複数のマーカー間の関係を検出して、その関係を用いて3Dモデルの表示を安定化させるためのものです。
そんなすばらしいARToolKitですが、プログラムには欠点もあります。その1つが、「3Dモデルが消えやすい」というものです。モデルは以下の条件で、簡単に消えてしまいます。
・黒い枠を認識できなかったとき
・内部のマーカーを認識できないとき
・マーカーが画面の外に出たとき
・マーカーを裏返したとき
・カメラを少し早く動かしたとき
最後の、「カメラを早く動かしたとき」という問題は、カメラの性能やマシンスペックが原因の場合が多いので、ここでは無視しました。
この問題を解決する手段として、MultiMarkerというプログラムがARToolKitに入っています。
しかし、MultiMarkerではマーカー間の関係を自分で定義しなくてはいけません。また、復元できる座標系も1つだけです。
ちなみに、その関係をあらわすデータは以下のようなものです。
marker 1をベースとして、marker 2、marker 3にはmarker 1との関係(座標系の変換行列)が書かれています。
単純なマーカーの配置なら、このように簡単な数値になりますが、ちょっとでも配置をずらすと、数値は急に複雑になります。
そこで、僕の作ったプログラムでは、この数値を自動計算します。
そうすることにより、もっと自由に複数のマーカーを配置して、モデル表示の高い安定性が保てるようになる、という訳です。
最初に、ARToolKitについてまったく知らない方は、youtube等で作品を検索してみるのが一番早いかと思います。
AR(augmented reality)(拡張現実)とはVR(virtual reality)(仮想現実)に近い言葉です。
VRが現実に存在しない仮想空間をメインにするのに対し、ARは現実世界がメインで、そこに対して情報を付加したりします。
ARToolKitはそんなARの技術の1つを、なんとフリーで公開しています。なので、研究レベルのアプリを個人でも作成できてしまうというすばらしいツールなのです。
現在、ネット上の動画サイトで、このツールを使った作品が多数製作されています。
さらに、ARToolKitのプログラムに興味がある方がこちらをご覧ください。
工学ナビ:「攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング
さて、僕が作成したプログラムも、そんなARToolKitを使い、作成したものです。
BGM:エコテロニカ(sansuiさん)
このプログラムは、複数のマーカー間の関係を検出して、その関係を用いて3Dモデルの表示を安定化させるためのものです。
そんなすばらしいARToolKitですが、プログラムには欠点もあります。その1つが、「3Dモデルが消えやすい」というものです。モデルは以下の条件で、簡単に消えてしまいます。
・黒い枠を認識できなかったとき
・内部のマーカーを認識できないとき
・マーカーが画面の外に出たとき
・マーカーを裏返したとき
・カメラを少し早く動かしたとき
最後の、「カメラを早く動かしたとき」という問題は、カメラの性能やマシンスペックが原因の場合が多いので、ここでは無視しました。
この問題を解決する手段として、MultiMarkerというプログラムがARToolKitに入っています。
しかし、MultiMarkerではマーカー間の関係を自分で定義しなくてはいけません。また、復元できる座標系も1つだけです。
ちなみに、その関係をあらわすデータは以下のようなものです。
#the number of patterns to be recognized
3
#marker 1
Data/multi/patt.a
40.0
0.0 0.0
1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
#marker 2
Data/multi/patt.b
40.0
0.0 0.0
1.0000 0.0000 0.0000 100.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
#marker 3
Data/multi/patt.c
40.0
0.0 0.0
1.0000 0.0000 0.0000 200.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
marker 1をベースとして、marker 2、marker 3にはmarker 1との関係(座標系の変換行列)が書かれています。
単純なマーカーの配置なら、このように簡単な数値になりますが、ちょっとでも配置をずらすと、数値は急に複雑になります。
そこで、僕の作ったプログラムでは、この数値を自動計算します。
そうすることにより、もっと自由に複数のマーカーを配置して、モデル表示の高い安定性が保てるようになる、という訳です。
