0013-08-13

[][][][]Oculus + Razer Hydra でバーチャルリアリティ(2) Oculus + Razer Hydra でバーチャルリアリティ(2) - Nao_uの日記 を含むブックマーク はてなブックマーク - Oculus + Razer Hydra でバーチャルリアリティ(2) - Nao_uの日記 Oculus + Razer Hydra でバーチャルリアリティ(2) - Nao_uの日記 のブックマークコメント

上記の動画はOculusとKinectを使ったVRの実験をしていたもので、この動画自体は6月には完成していて今回の動画の最後の部分で使おうと思っていたんだけど、実際に動かしてみると思いのほか巨大感が出なくていまいちだったので、没にした。

実寸だとだいたい40㍍級くらいに相当するサイズになっている。

以下、これを作ってたときのtwitterのメモより抜粋。

Kinect+Oculus、自分の手足の動きがリアルな視界でCG再現されるのはすごく楽しい。キャプチャー精度の都合で手の角度や向きの追随が完全ではないし遅延もあるので、なんだかGガンダム方式のロボットを操縦してるような感じ。


しばらく中の世界に入ってるとどこが実世界の壁だったかわからなくなって、注意しながら歩かないとすぐにぶつかりそうになる。あと、認識精度の都合で視点がすごく揺れるので、そっちに慣れてしまうとHMDを外した後も世界が揺れてる感じが続いてかなり気持ち悪くなる。

片足で立って目を閉じると視覚情報が足りなくてバランスを崩しやすいのと似た感覚で、KinectでヘッドトラッキングされたHMDをつけて片足立ちしてると、誤差の震えなどで誤った位置情報が目から入ってくるせいで、まっすぐ立っていることが難しくなってた

いつかやってしまうだろうなとは思ってたけど、足元にあった360を思い切り蹴飛ばしてしまった…。本体は無事だけど足が痛い。反対側にあった炬燵机も危ないので片づけた。ケーブルで移動範囲が限られるのは結構困る。そのうちOculusの制御用ユニットの箱を踏み抜いて壊してしまいそう

Kinectの精度不足で視界がふらついてバランスを崩したときに、現実には存在しないHMDの中の世界の机に手をついて支えようとして危うく転びそうになったこともあった。あのときは完全にVR側の世界と現実を混同してしまってたように思う。

また、OpenNIでは後ろに振り向いてもちゃんと認識してくれてたのに、Kinect for Windowsでは振り向きが認識されず、体の表裏が突然逆転してしまう。これのせいで、体がKinectに対して横を向いた時に動作が不安定になるという問題も解決しづらかった。

結果として、それなりに認識範囲は広いのに自由に動こうとすると突然認識誤差で視界が大きく揺れる、という事態が起きやすい。また、カメラから隠れた側の腕の認識もおかしくなるので、映像で見ているよりは自由に動けるという感じではなかったりしている。

また、CPU負荷の高さも問題だった。最初、何も考えずに動かすと30fpsを下回っていて、Oculusでフレームレートが低いと違和感が大きくなるため、こちらも対策が必要だった。

MMD for UnityのIKやExpression、Kinectの自前のモーション補間など負荷の高そうな処理を片っ端から切ってみたところ、最終的にKinect SDKの根本の取り込み部分が残り、それだけでも60fpsを諦めざるを得ない重さになっていた。

すくなくともうちの環境では、KINECT SDK+Unityで60fpsを出すのは難しそう。

Kinectの動作そのものをカットしてみて久々に60fpsで動いてるOculusを見ると、やっぱり自然さが全然違っていた。モーション入力系のUIなど、人間に直結する部分のフレームレートってすごく大事だなぁ、と実感。

ただ、もしフレームレートの問題が解決できても、Kinectはその性質上、カメラに相対した向きでしか正常に動作を取得できない。せっかくHMDで自由な方向に向けるにもかかわらず、特定の角度では頭も腕も正常に認識できなくなる、というのは根本的な問題であるように思った。

通常の用途ではテレビを見るためにカメラに正対する必要があるので大きな問題にならないけれど、動きの自由度が上がるような用途では、このあたりが大きな欠点になってしまいそう。とはいえ、頭の位置を手軽にトラッキングする方法としては今のところかなり有力な方法の一つなので、マルチスレッドで動作させるなどでフレームレートの問題が解決できれば、使い手はありそうかも。

また、破壊表現がいまいちなのも今回の動画で巨大感が出なかった理由の一つにありそうだけど、これについては最近出た物体をバラバラに破壊するアセット( Exproder: https://www.assetstore.unity3d.com/#/content/9771)などを使えばもう少し何とかなったかもしれない。それ以前に、大きさが比較できてディティールがわかるような細かいオブジェクトが不足している、といった根本的な問題もありそうだけど。このあたりももうちょっと手をかけてうまくやれたらよかったなぁ、とは思う。