前回は、動画を2Dで再生してみました。
今回は、前回までで作成した動画プレイヤーで再生した動画をOculusで再生してみます。
早速ですが、再生する準備をしていきます。
◇Unityを実行すると、Oculusへ出力するよう設定する
まずは、下記の記事を参考に、OculusのunitypackageをUnityに取り込みます。
[OculusRift] unityとの連携
取り込むと、Unity画面の左下のAssets内にOVRというフォルダが作られます。
OVRのフォルダ直下に/Prefab/OVRPlayerControllerというファイルがあり、
そのファイルをHierarchyにドロップして、実行するとOculusにUnityの実行結果を出力することが出来ます。
◇Oculusで前回までに作成した動画プレイヤーをOculusで再生してみる
次に、Hierarchy内に、前回までに作成した動画プレイヤーを作成してください。
プレイヤーが作成できたら、上記のOVRPlayerControllerもHierarchyに入れます。
当初は、ここまで行った時点で、Oculusに出力されると考えていましたが、実際には動画を
表示することができませんでした。
原因は、Oculusのpackageには、重力が設定されており重力の影響でカメラが落下している状態だったことと、
重力のほかに、ヘッドトラッキングによるカメラ移動が発生することが原因でした。
この2点を無効にしておかないと、Oculusに動画を出力することはできないことがわかりました。
◇問題の対処
まず、重力を無効にします。
対応方法は簡単で、先ほどHierarchyに入れたOVRPlayerControllerをクリックします。
すると右側にinspectorがというものが表示されます。
inspector内のScriptにOVRPlayerControllerというものがあり、その項目にGravity Modifierというものがあります。
こちらが、重力の設定になっていて、この値が0に近いほど重力が少なくなり、0になると重力が無効になります。
今回は、重力を無効にしたいので、値を0に変えます。
これで重力は無効にすることができました。
次は、ヘッドトラッキングによる、カメラ移動を無効とします。
今回は、カメラのオブジェクトの中に、動画プレイヤーを入れ、カメラと動画プレイヤーを一緒に動かすことで、
擬似的にヘッドトラッキングを無効としている状態をつくりました。
Hierachy内の動画プレイヤーObjectを全部OVRPlayerController/OVRCameraRig/TrackingSpace/CenterEyeAnchor内に入れます。
これでヘッドトラッキングによる、カメラ移動を擬似的に無効とすることができました。
上記2つの対処を施すことで、再生された動画がOculusの画面外に動いてしまうことを抑制し正常に出力することができます。
今回の記事内容で、出来たものがこちらです。
ご覧の通り、Oculusでも、無事画面内で再生されていることが確認出来ました。
以上で、今回は終了です。
◇まとめ
Unityで重力の設定や、トラッキング機能などを調べているうちに、Oculusを利用した3Dゲームの作成をしてみたくなります。
今回の動画再生方法も、昨今増加してきている、OculusなどのVR技術を利用したゲーム開発などに取り入れていきたいと感じました。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。