もさぷい

ゲーム、3D関連技術ついて

手軽な?マーカーなし拡張現実感 1

この↓ホームページで「マーカーを用いない複合現実感のデモ」というのを発見しました。カメラの首ふりをしても違和感なく合成されていました。

千葉大学大学院工学研究科建築専攻平沢研究室 - 動画デモ』

http://hlab.ta.chiba-u.jp/staticpages/index.php?page=20070910021039317

 

紹介文には、「三次元加速度センサによる複合現実感のデモです。このセンサから得られる、ピッチ、ロール、ヨーなどカメラの首振りに関する情報をもとに三次元モデルを合成しています。」と書いてありました。

 

察するに、一番初めに1回だけ合成するための変換行列を求めて、その後、カメラが首振りで回転した分だけ、カメラ空間において、モデルを反対側に回転させているみたいです。(元のカメラ空間から新しいカメラ空間を定義したと考えることもできます。)

 

忘れないように、ちょっと簡単な実験して、まとめておきます。

 

・一番初めに、1回だけ合成するための変換行列を求めます。

方程式を解くために必要な特徴点を目視で見つけています。

not_mark0.jpg

 

・モデルと背景を合成します。

これ以降は、合成するための変換行列の計算を行う必要がなく、マーカーも必要ありません。(今回は、モデルが正しい位置に存在し続けることを確認するために残しておきます。)

not_mark1.jpg

 

・真上から見て、反時計回りにカメラを45度ぐらい動かしてみる。(目分量で正確ではありません。)

合成するための変換行列を計算していないので、モデルもカメラに合わせて移動してしまい、おかしくなります。モデルは、最初の位置に存在するべきです。

not_mark2.jpg

 

・カメラ自身が動いてもモデルが動かないようにするためには、カメラが回転した分を

キャンセルするような処理をモデルに与えれば良いです。今回の場合は、カメラ空間において、モデルに対して時計回りに45度回転してあげれば、キャンセルされます。

今回は目分量でカメラを動かしたので、ちょこっとずれてしまいました。

正確なカメラの回転角度を知ることができれば、ぴったりもとの位置に戻るはずです。

not_mark3.jpg

 

・この結果より、カメラが動くたびに上記の処理を行ってあげれば、カメラを動かしながら、違和感のない合成が実現できます。(カメラの回転に限らず、カメラの平行移動もできそうです。)また、マーカーの認識も必要ないので、マーカーなしが実現できると言うことです。

 

・この処理の大事なところは、正確なカメラの移動量を知るという部分です。

それが、難しい。

 

参考:

 

もやしもんオリゼー モデルは、

『 三次元CG@七葉(http://nanoha.kirara.st/3dcg/) 』

の「ファイル保管庫@七葉」からお借りしました。