ARやVR空間に表示された仮想物体と実物体が何かしらの相互作用ができたら面白いのではないかと思い、ちょっとしたコンテンツを試作しました。わりと簡便な方法で実現できるのでメモ程度にざっくりとした手順を残しておきます。
1.開発環境
今回の試作では以下のセンサやライブラリを使用しました。
・開発言語:C#
・グラフィクス:OpenGL (OpenTK使用)
・センサ:Kinect for Windows
・画像処理:OpenCVSharp
ARに関するAdvent Calendar用の内容としてはちょうど良さそうなので昨年書いた記事を再掲。
LEAP motionを用いたARシステムを作る上での参考になれば幸いです。
以下、本文
2013年7月にLeapMotionが手元に届き、一通り遊んでみたので振り返りもかねて紹介します。
まず、開発に用いた言語やライブラリは以下の通りです。
・開発言語:C#
・グラフィクス:OpenGL (OpenTK使用)
・カメラ画像取得:DirectShow.NET
・ARマーカの認識: NyARToolKit for C#
・物理演算:BulletSharp
・その他センサ:Kinect for Windows
2014年は色々な種類のHMD(ヘッドマウントディスプレイ)が登場ましたが、多くの場合これとセットでAR(Augmented Reality)話題に挙がります。
そこで、各種HMDの特徴やARの見え方を紹介してみようかと思います。
1. inforod
ウエストユニティスという国内メーカーから販売されたHMD。あの有名なgoogle glassと同様に片目側にディスプレイがありますが、inforod(下図左)の方がgoogle glass(右)よりも表示領域が小さいのが特徴です。
視界の片隅に情報が提示される様なイメージで、作業中に補助情報をチラ見するような用途が考えられます
先日、友人の宮地さんに手作りcardboardをいただいたので、これを利用したデモコンテンツを作ってみました。
cardboardとは、Google I/O 2014で配布されたダンボール製のHMDで、前面にスマートフォンを差込むだけで、3Dコンテンツを楽しむことができます。
このcardboardは設計図が公開されており、100円均一などで材料をそろえて同様の物を作ることが可能なため簡易HMDとも言われていますが、簡易版とは思えないほどの没入感を得ることができます。
また、没入体験を得られるHMDとして有名なOculus Riftと異なりPCとの接続ケーブルも不要で行動範囲が広いというメリットもあります。
そこでユーザーが自由に動いて遊べるコンテンツの一例としてKinect for windows v2で取得した点群(Point Cloud)データの中を歩きまわれるシステムを作ってみました。
Out-of-body experience with google cardboard and kinect v2 - YouTube
動画を見てわかるようにユーザーの位置に追従して視点が変化していますが、この時のユーザーの位置の取得もKinectの骨格追跡機能を用いて行っています。
また、このコンテンツではスマホの画面をタップした瞬間の空間データを使用しているため、「ついさっき」の様子を客観的に見るという少々不思議な体験をすることができます。
今後、色々なところでデモをしていきたいと思いますので、興味のある方はお声掛けください。