Unity 2017.3の360 Panoramic Video Shaderを使ってみる
ayaです。
Advent Calender用の記事です。
空いているようなので、Unity 2017.3で360動画を再生する機能を試してみます。
次回の銀座VR Festの準備中ですが、当初はwarapuri様のSphere100.fbxを使っていました。ありがとうございます。
No hack, no work • UnityとOculusで360度パノラマ全天周動画を見る方法【無料編】
そんな中、360映像を表示する機能が追加された2017.3の正式版が公開されたことを知りました。恥ずかしながら、Unityで最後まで作ったことがなかったので、試してみました。
DRAFT: Panoramic 2D and 3D Video Shader in Unity - Google ドキュメント
上のリンクにある英文を要約すると、こんな感じです。使用する動画は2:1のEQ映像前提です。
- 360動画をシーンに追加する。そのVideo Playerの中にあるRender ModeをRender Textureにする。
- Asset内にRender Textureを新規作成し、サイズを動画に合わせる。depth bufferをno depth bufferにする。
- 1.でシーンに追加したVideo PlayerのTarget Textureに、2.で作ったRender TextgureをD&Dする。
- Asset内にMaterialを新規作成し、ShaderをSkybox/Panoramicにする。Sphercalに2.で作ったRender TextureをD&Dする。
- WindowにあるLighting設定を開き、EnvironmentのSkybox Materialに4.で作ったMaterialをD&Dする。
Play中にカメラのRotationを変えると、Skyboxに360動画が再生されていることがわかります。
せっかくのUnityなので、いろいろなObjectを画面内に配置しました。
足元を消すために円柱と90式戦車、背後の人の肖像権配慮のために半透明の壁を置きました。もう少し、修正していきます。
自作の360カメラは足元の30degに映像がなく、その部分を隠したいのですが、Skyboxに360映像を貼ったシーンの中に置く円柱の大きさをカメラとの相対位置で調整が必要なようです。Sphere100.fbxのときは大きさ関係が理解しやすかったのですが、Skyboxは貼った画がとても遠くにあるので、感覚をつかむのが難しいかもしれません。ただ、Sphereがシーン内にないので、シーン内がすっきりした気がします。
今回の映像には、ためしに、国土地理院の3Dデータを置きました。
今回の映像は総合火力演習なので、御殿場の3Dデータをいただきました。ありがとうございます。ちなみにこのときに置いたObjectの大きさは150unitでした。
Skyboxに貼られた360画像はアングルを変えても見え方は変わらないのが、不思議な感じがします。
なんとか位置合わせしてみて、こちらのような感じです。
実はインチキしていて、カメラの位置が撮影した場所と違っています(撮影場所はもうすこし画面右の灰色の部分・100mくらいの誤差)。
おそらく、シーン内に置いた地図データの大きさの問題か、ステッチの画のレジストレーション精度が不十分なせいだと推測します。
データと画像を突き合わせるように、Photogrammetryで取得したモデルと360映像を合成しようとするときは、改善すべき点かもしれません。
できれば、砲撃先がわかるように、データと映像を合わせたような作品に仕上げたいです。体験時間を考えると、そこまで入らないかもしれませんが、頑張ってみます。
今回は、かなり出しゃばった感じになり、すみません。
来年もよろしくお願いします。