2016年08月27日

Oculus SDK v1.7.0のOculusRoomTiny(GL)に関するメモ

Oculus Rift製品版届いていたのですが、あまり使っていなかったのでボチボチ触ってみようかと思います。今回はOculusSDK/SamplesのひとつであるOculusRoomTiny(GL)に関するメモです。一応OpenGLのサンプルですが、Oculus的にはDirectXがメインで、OpenGLはあまりサポートしていないみたいです。

サンプルプログラムの構成としては、main.cppと、OculusRoomTiny_Advanced/Common/Win32_GLAppUtil.hの2つがメインで、Win32_GLAppUtil.hの方で色々定義されているようです。

サンプルは単純なRoomのデモということですので、今回はこれを書き換えて、Tda式ミクさんを表示してみることにします。シーンの生成は、Sceneクラスで行っているため、この辺りを書き換えていくことになります。

// シーンの生成
roomScene = new Scene(false);

Sceneは構造体で、最大モデル数10個の配列になっていますので、モデル数を増やしたい場合はここも書き換える必要があります。

また、Init関数でシェーダをテキスト形式で直書きしているので、ここをファイル読込みに書き換えれば、GLSLのシェーダを使用できるようになると思います。デフォルトはかなり単純にテクスチャの色などをそのまま表示しているようです。その後、タイルパターンのテクスチャを生成しているので、ここを画像を読み込むようにすれば、モデルのテクスチャも使用できるようになるはずです。最終的に、Model構造体にテクスチャバッファを割り当てて、頂点やIndexに必要なメモリ領域を確保してからSceneに追加しています。

Model構造体では、頂点数及び面数が最大値2000と少ないので、ここはファイル読込みで動的確保するように書き換える必要があります。サンプルとしてAddSolidColorBoxという関数があり、この関数でBoxの追加をすることができますが、基本的にはAddVertex関数とAddIndex関数で頂点情報とIndex情報を設定して、最後にAllocateBuffers関数を呼ぶ流れになるかと思います。

今回はMMDBridge[1]でTda式ミクさん[2]に[3]のポーズをしてもらったものをobjで出力して、それを読み込むことにしました。で、実際にやってみたところ、HMDの姿勢の追従はかなり高い精度でしてくれているのですが、どうもPosition trackingの方が殆ど効いていないようです。コントローラで操作することをメインにしているのか、顔を前後左右に平行移動しても、視点の位置が変わらない感じです。
(2016.9.13追記:環境の問題だったみたいです。違うPCだと位置も追従しました)

DK2の時にはできていたので、製品版でもできるはずなのですが、やり方がよくわかりませんので、どなたかわかる方がいましたら教えてください。UnityのUtilityでも使えば行けるのでしょうか。

頭の位置が固定で周りを見回すYouTubeの360度動画のような感じではなく、頭を動かしてのぞき込んだり近づいたりといった操作ができた方が直感的だと思いますので、main.cppのMainLoopを書き換えることにしました。元のサンプルでは下記のような動作を想定しているようです。

oculus_sdk_v170_test001.png

本来、shiftedEyePosには左右の眼の位置であるEyeRenderPose[eye].Positionが反映されているはずなので、平行移動なども効いてくれるはずなのですが、この位置をファイルに出力してみても、平行移動ではあまり数値が変わらなかったりよくわかりませんでした。平行移動の情報が入ってそうなovrPoseStatefのLinearVelocityもなぜかずっと0になっていたり。

そこで無理やりですが、注視点を動かすのではなく、注視点を固定して、視点位置の方を動かすように変更してみました。

oculus_sdk_v170_test002.png
これで頭を動かすと、平行移動というか円運動したような感じになります。

実行結果

targetPosが、見えづらいですが赤いBoxで表示している位置です。そこを周りから眺めるような動作になります。


Seesaaの動画はFlash使ったPlayerをやめたんですね…。wmvが表示されなくなったみたいです。

[1] MMDBridge
[2] Tda式初音ミク・アペンドVer1.00
[3] あぴミクさんのポーズ
posted by シンドラー at 02:33 | Comment(0) | TrackBack(0) | Oculus Rift | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック