Imaginary Code

from kougaku-navi.net

Processing用のOculus Riftのライブラリを作りました

DK2向けにヘッドトラッキングとレンズ補正をやってくれるProcessing用のちゃんとしたライブラリが見当たらなかったので、先人たちの偉業を組み合わせて新しく作りました。先人たちに感謝。

ダウンロードページ(GitHub

kougaku/OculusRiftP5

ページ右下の「Download ZIP」をクリックしてダウンロードしてください。ダウンロードして解凍したら、まずはOculusRift_BasicExampleを実行してみてください。

ライブラリと銘打っていますが、まだJAR化せずにPDE形式になっています。自分のスケッチで使いたいときは、いずれかのサンプルに入っているOculusRift.pdeと、codeフォルダに入っているjna-4.1.0.jar、JOculus.jar、jovr-0.4.4.0.jar、それとdataフォルダに入っているbarrel_frag.glslを自分のスケッチに追加してください。

動作を確認した環境

Windows環境)

Mac環境)

何ができるか

  • ヘッドトラッキング(IRカメラによる位置計測含む)
  • Oculus Rift DK2用のステレオ表示 (※DK2用の設定になってます)

サンプルコードいろいろ

OculusRift_BasicExample

いちばん基本のサンプル。床、壁、立方体、ステレオ画像でシーンが構成されています。左目と右目で処理を分岐できる仕組みになっているので、それを利用してステレオ画像の表示をやっています。

OculusRift_PanoramaView

THETAで撮影した全天球画像を鑑賞できるサンプルです。サンプルで使っている写真は、明治大学中野キャンパスの吹き抜け。バルーンにTHETAを付けて撮影しました。

OculusRift_RadarExample

自分の向いている方向を取得するサンプル。ゲームっぽくレーダーを左下に表示しています。

OculusRift_VideoSeeThrough

カメラのライブ映像を使ってARをやるためのサンプル。OculusRift.pdeで使っているjna-4.1.0.jarと、ProcessingのCaptureクラスが利用しているjna.jarが衝突してしまう問題があり、それを回避するためにwebcam-captureというライブラリを使ってカメラから映像を取得しています。ちなみにこのサンプルはカメラ1つの単眼仕様です。

なにを作ろう?

サンプル群を見て察しのいい人は気付いたかもしれませんが、うまく組み合わせるとSR(代替現実)システムが作れます。ユーザがどこを見ているかの情報に基づいて、リアルタイムのカメラ映像とあらかじめTHETAで撮った全天球動画をすり替えて、現実とバーチャルを交錯させるわけです。実際に作る時は、カメラ間で見え方に差異が出ないよううまく工夫する必要があると思いますが。

また、全天球画像ネタは福地先生の下記の資料が参考になります。これをHMDで拡張してみるのもいいかも。