読者です 読者をやめる 読者になる 読者になる

OculusRiftを使った電脳フィギュアを作った

概要

OculusRiftとOvrvisionとLeapMotionとARマーカーを使って、現実世界のマーカーの上にミクさんが出てきて、指で触ったりマーカーを傾けるとミクさんが反応してくれると言うデモを作り、6/1Ocufes豊橋で展示してきました。

f:id:izm_11:20140603011351p:plain

これは、はるか昔に東京芸者エンターテイメントさんが作った電脳フィギュアARis( http://www.geishatokyo.com/jp/ar-figure/ )をもし現代の技術で作るなら、と言うのがコンセプトだったので勝手ながらお名前を拝借しました。

webカメラでマーカーARと言うのは若干手垢がついている感じもありますが、高視野角のHMDで、指のトラッキングによるインタラクションを行えるというのが、意外と面白いのではないかと感じました。

システム構成

  • OculusRift DK1
  • Ovrvision
  • LeapMotion

OculusRiftで視野を覆い、そこにOvrvisionから取り込んだ本来の現実世界の視界を映します。その過程でARマーカーを見つけて、LeapMotionで指の位置を取得し、それぞれに応じたCGを重畳表示することで成立しています。

f:id:izm_11:20140603013223p:plain

出来る事

ミクさんの頭を撫でる
ミクさんのお腹を突っつく
曲に合わせたMMDの踊りを再生する
マーカーを傾けた時にミクさんが転ぶ

→ミクさんかわいい!!!楽しい!!!!!

余談ですが今回の開発終盤に、以下のツイートを見て、なんとしてでも指の認識を組み込むぞ、と決意し、今回のデモをより良くするモチベーションが湧きました。

技術上のトピック

マーカーAR

今回の展示ではマーカーの上にいるミクさんに手を伸ばす必要がある(し、そもそも普通の人は立体視しているCGに対して手を伸ばすものです)ので、そうするとOvrvisionからマーカーが隠れてしまってミクさんが消える。井戸の底に映る月みたいになってしまう。
これは良くないので、マーカーを6個並べて板自体もA3サイズの大きなものにしました。

f:id:izm_11:20140603013511j:plain

これによって手を伸ばしていない時は複数の見えているマーカーの多数決的に精度が上がって、手を伸ばして何個かのマーカーが消えても生き残ったマーカーの情報を頼りに位置姿勢を推定できます。

このマーカー検出、マーカー位置姿勢推定部分はOvrvisionSDKの物を使っています(つまり、Arucoのライブラリを使っている)

カメラが動くかマーカーが動くか

以前に書いたように、(http://izm-11.hatenablog.com/entry/2014/05/04/225502) 追跡対象のマーカー(というか今回は板です)が一個ならば、後のことを考えると&&物理エンジンの関係上マーカーは固定でカメラを動かした方が都合が良いです。

LeapMotionの配置

カメラを動かしてマーカーの板の中心を世界座標の原点に固定する、と言う前述の処理によって、ここが楽になります。LeapMotionをマーカー板の中央に両面テープで固定しました。
すると特に何も大したコードを書かなくても

  • マーカー上のミクさん
  • 現実世界の手
  • LeapMotionで検知した手

がうまいことちゃんと合います。そうした後はミクさんにColliderを設定して、LeapMotionで検知した指にもColliderを当てて、判定が簡単にできます。

補足

嘘です。LeapMotionで取得できる指の座標は、かなり当て込んでいる値のようで、体験する人によって判定(というかLeapMotionのCGの指)が下に表示されたり、上に表示されたり、左右がズレたりします。これは現時点のバージョンの問題かもしれない(し、調べる時間が無かった)ので今後の課題です。

机に対するマーカーの傾きを取得する

  • マーカーのOvrvision(Webカメラ)に対する傾き
  • Ovrvisionを取り付けたOculusRiftのジャイロセンサから取得した傾き

の2種の傾きからオイラー角で引き算をすると、地面に対するマーカーの傾きが求まります。

f:id:izm_11:20140603014423p:plain

これは普通のWebカメラでは出来ないことで、Ovrvisionを取り付けたOculusRiftに良いジャイロセンサが付いているからこそ出来ることです。

今回のデモではミクさんの立っている地面が傾き、バランスを崩してコケる部分の判定にこれを使いました。その結果出現したコンテンツについては下記ツイートを参照ください|д゚)

https://twitter.com/UnaNancyOwen/status/473006989530759170 https://twitter.com/hoozuki37/status/473011969725702144

雑感

今回のようなカメラが付いたヘッドマウントディスプレイは昔からビデオシースルーHMDと呼ばれていて、高視野角のビデオシースルーHMDのソリューションと言うと、大体ちょっと良いポルシェが買えるくらいの値段でした。ところがOculusRift,Ovrvision,LeapMotion,Unity等のコンシューマに降りてきたプロダクトを組み合わせると月のお給料よりも安い値段で前述のハイエンドな環境の8割くらいの完成度が出せてしまう。

今回は僕の趣味でミクさんで試した訳ですが、Ovrvisionの中の人に聞いたところ、企業での使用例もだんだん増えているようで、VR,AR含めた価格破壊の波みたいなのを感じました。

また、今回のデモは真っ当に作るととても時間がかかりそうに思っていたら、アセットストア、サンプルコード、先人の知恵やtwiterで助けてくれた人などのおかげで予想以上に早く、予想以上に良い物が出来たように思います。

科学の進歩ってすごい!!!

最後に

今回作った電脳フィギュアを 6/1 Ocufes in 豊橋 (http://www.ocufes.jp/2014/05/666/)で展示してきました。現地では色々な方からフィードバックを頂けてとても励みになるとともに、もっとブラッシュアップして別の機会にも展示したいなと考えています。

ちょっとこの電脳フィギュアの現物を見てみたいという方、これを展示しても良いイベント等がありましたらお気軽に twitter id: @izm までご相談、連絡を頂けると嬉しいです。

感謝

ありがとうございました!