UnrealEngine(UE4)でパノラマ動画再生させてOculusRiftで見るまで


UE4でのパノラマ動画再生をテストしまして、せっかくなのでやり方を共有します!

できるもの

こんな感じで、UE4でパノラマ動画再生できます。ここからワンタッチでOculusで再生もできます。
image06

下準備

・UE4をダウンロード&インストール(現時点で最新版4.7.3)
参考 [UE4]フリー版UnrealEngine4の導入手順

・Oculus Runtime for Windowsをダウンロード&インストール(現時点で最新版0.4.4)
参考 https://developer.oculus.com/downloads/

・再生したいパノラマ動画
今回は、testvideo.mp4という名前のパノラマ動画を使用。各自ご用意ください。

・動画テクスチャを貼り付ける球体
test.fbxをダウンロードしてご利用ください。「Oculus Riftでオレの嫁と会える本」を参考に自作しましたので、自分で作りたいかたは本を参考にしてください。

やり方

・EpicGamesLauncher起動
image01

・EpicGamesLauncherからUE4起動
image16

・新規プロジェクト作成。今回は、「ブループリント→ブランク」「デスクトップ/コンソール」「ハイエンド」「スターターコンテンツ無し」を選択。
image20

・いらないもの消す。ワールドアウトライナータブで、PlayerStart以外を消す。こんな感じになるはず。
image19

・PlayerStartの座標を、x=0, y=0, z=0へ。これがカメラ位置になる。
image03

・動画テクスチャを張り付ける球体をインポートする。test.fbxをコンテンツブラウザへドロップして、「すべてインポート」を選択。メッセージログがでてくるけど、とりあえず気にしない。
image05

・test.fbxをドラッグして貼り付け。位置はx=0, y=0, z=0、スケーリングはx=100, y=100, z=100で。
image04

・球体に張り付けるパノラマ動画をインポートする。testvideo.mp4をコンテンツブラウザへドロップ。
image00

・testvideoをダブルクリックすると新しくタブが出てくる。再生ボタンおして、ちゃんと再生されるか確認。
image02

・コンテンツブラウザに戻って、testvideoを右クリックして、CreateMediaTextureを選択。
image12

・作成されたMediaTextureを右クリックして、CreateMaterialを選択。
image11

・作成されたMaterialをドラッグして球体のところにドロップ。これで球体に動画が張り付いたはず。
image17

・確認。testvideoを右クリックしてPlayMovieをおすと、球体に動画が映し出されているはず。
image15
image18

・Oculusで確認してみよう!Oculus繋げてUE4のプレイからVRプレビューを選択すると、すぐOculusで確認できる。これは超便利!戻るときはEscキーで。
image08

その他

エラーがでるとか動画再生できないとかがあったら。。。

公式のMedia Frameworkを参考にするといいかも、、、?ここにあるとおり、まだ動作不安定みたいです。

Oculusでみたときに動画がカクつく

いろいろ試行錯誤中で、まだ答えは見つからずですが、参考までに以下に共有します。

・動画自体を75fpsにする。
OculusRift DK2のための動画の75fps変換方法

・各種設定をいじってみる。
自分用も兼ねて、UE4+Oculusについて色々纏めてみる 準備編
自分用も兼ねて、UE4+Oculusについて色々纏めてみる 高速化編

・このへんも参考になりそう。
Unreal Engine+Oculus Riftメモ

以上


UnrealEngine(UE4)でパノラマ動画再生させてOculusRiftで見るまで」への3件のフィードバック

  1. faifx

    Oculusでみたときに動画がカクつく件について
    UE4環境で役に立つかどうかはわかりませんが、
    参考までにUnityPro+AVPro(有料アセット)の組合せで感じた点をいくつか書いておきますね。

    ・動画のfpsについては、Oculus側が75fpsなので、その更新間隔に合うような 75fps/37.5fps/25fps が良い。
    ・動画コーデックは、デコードの速いものが有利。MPEG4ならfastdecodeオプションは効果あり。
    ・動画の解像度は75fps化動画の場合、1/75秒=13.3ms 以内にデコードとその他のUnity側の全ての処理を終える必要があるので小さい方が有利。
     1280×720 は全く問題なし、1920×1080でギリギリ、それより上はかなり厳しいです。
    ・古いUnityの場合、動画テクスチャの解像度を2のn乗に内部でリサイズするのに時間が掛かるので、あらかじめ2のn乗ピクセル(例えば 1024×512 )のようなサイズで準備すると良い。
     (最新のUnityではリサイズに掛かる時間は無視できるほど速くなった気がします。)
    ・動画ファイルは、HDDよりもSSDやRAMディスクから読み込む方がスムーズ。HDDからでも、一度読み込んでディスクキャッシュに入れば、大差は無いです。

    ・OculusSDK側では、TimeWarp無効化、ポジショントラッキング無効化、MonoscopicModeは負荷軽減に効果あり。
     0.5.0.1より前のSDKでは、DirectMode時のミラーリングオフも効果あり。

    ここまで準備しても、Oculusの75fpsの更新間隔と、動画の75fpsの再生間隔が一致しないとカクついて見えます。
    このタイミングの不一致は、首を振ってみると顕著に分かりやすい気がします。
    UnityPro+AVProではこれを同期させる手段が無い(30fps以下の動画ではDisplaySyncオプションが効くかも)なので、
    手作業で一時停止&再生操作してタイミングをずらすことで快適に見られます。orz

    返信
    1. admin 投稿作成者

      うおー、詳しいコメントいただきありがとうございます!私、ぜんぜんあまちゃんで、知らなかった情報ばかりで大変助かります。けっこういろいろ大変なのですね。。。がんばります!

      返信
  2. ピンバック: PANORA VIRTUAL REALITY JAPAN » 4/6 前日までのVR・パノラマ関連記事まとめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です