Unity出力の全天球ステレオ動画をYouTubeへ360度ステレオ動画としてアップロードする方法

# 全天球映画 オワリズム弁慶 幻夢大演舞 -(un)ExtraVERSE-

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【全編VR作品】全天球映画 オワリズム弁慶 幻夢大演舞 -(un)ExtraVERSE-<br><br>11.25(fri)-27(sun)<br>大塚Hearts Next<br><br>[Ticket]<a href="https://t.co/LRPmp2O953">https://t.co/LRPmp2O953</a><br><br>[GUEST RAPPER]<br>DOTAMA <a href="https://twitter.com/dotamatica?ref_src=twsrc%5Etfw">@dotamatica</a> <br>ぽおるすみす(INNOSENT in FORMAL) <a href="https://twitter.com/smith_paul_walk?ref_src=twsrc%5Etfw">@smith_paul_walk</a> <a href="https://twitter.com/hashtag/%E5%B9%BB%E5%A4%A2%E5%A4%A7%E6%BC%94%E8%88%9E?src=hash&amp;ref_src=twsrc%5Etfw">#幻夢大演舞</a><a href="https://twitter.com/hashtag/VR%E9%9F%B3%E6%A5%BD%E6%98%A0%E7%94%BB?src=hash&amp;ref_src=twsrc%5Etfw">#VR音楽映画</a><a href="https://twitter.com/hashtag/%E3%82%AA%E3%83%AF%E3%83%AA%E3%82%BA%E3%83%A0%E5%BC%81%E6%85%B6?src=hash&amp;ref_src=twsrc%5Etfw">#オワリズム弁慶</a> <a href="https://t.co/kSPQC7QLAI">pic.twitter.com/kSPQC7QLAI</a></p>&mdash; オワリズム弁慶@VR音楽映画製作中 (@owa_benkei) <a href="https://twitter.com/owa_benkei/status/1579841886096789504?ref_src=twsrc%5Etfw">October 11, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

去年から、[「オワリズム弁慶」](https://twitter.com/owa_benkei)というバンドの[VR音楽映画製作のクラウドファンディング](https://motion-gallery.net/projects/owarhythmbenkei_vrmovie_project)に技術協力をしており、そこで得られた知見について記事を書いていきたいと思います。

# この記事のポイント

- **UnityRecorderで出力される全天球動画は正常に録画できないことがある**
- **YouTube360度ステレオ動画をアップロードするには、特殊なメタ情報の付与が必要となる**

この2点について解説していきたいと思います。
今回の手法では以下のような動画がUnityから出力が可能で、全天球のステレオ動画としてYouTubeで視聴可能です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/vEvrj0NxSpg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


# UnityRecorderのインストール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/faf58387-1c0e-e302-9cf6-f28f9ca867fd.png)

Unityで動画を作成する際は、簡単には[UnityRecorder](https://docs.unity3d.com/ja/Packages/com.unity.recorder@2.6/manual/index.html)という公式のパッケージを利用します。

①WindowからPackageManagerを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/eb19fb57-0227-6b28-2381-6399d0ff7f25.png)

②左上のPackagesの部分を「Unity Registry」へ変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/26fbec6c-8d36-80ba-4ccd-df8e5a50cb0e.png)

③右上のテキストボックスに"Recorder"と入力すると、左のカラムに「Unity Recorder」が表示されるので、選択し、 「install」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/ea75c079-f553-a6f9-27ff-d8f83fad4b36.png)

# Unityで360度動画を作成する

**UnityRecorderは機能が豊富で、360度動画の作成機能もあります。しかし、この360度動画作成の機能が正常に機能しない問題があります。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/46021141-c753-d400-cd42-10f39f47aa1b.png)

これは[もともとの解説記事](https://qiita.com/tan-y/items/941de5c8bc3309f835d5)の画像を引用しますが、

UnityRecorderの360度撮影機能での出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/fe43ee3e-7cb8-2567-0871-0d1ad629570e.png)

解説記事の手法を用いた方法での出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/830ba769-de35-4061-b951-4f07f3d04110.png)

© Unity Technologies Japan/UCL

となります。このようにPlayModeで見ている絵と、出力動画が異なる問題が発生します。
上記の記事のソースコードを一部切り出し、UnityPackage化したものを使います。

① 下記のリンクから「UnityVRVideoRecordingTest.unitypackage」をダウンロードしてください。
https://github.com/kotauchisunsun/UnityVRVideoRecordingTest/releases/tag/v0.0.1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/56ff0648-f960-c4f0-8690-7e91557b5b94.png)

② Unityのツールバーから「Assets」を選び、「Import Package」「Custom Package」を選択し、先ほどの「UnityVRVideoRecordingTest.unitypackage」を選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/c4338d96-92b6-e29b-16ce-fac1acae8a39.png)

③ ProjectのWindowでRenderTextureを作成します。縦と横のサイズは同じ(正方形)を指定してください。
ここで指定したRenderTextureの解像度が、動画の出力の解像度になります。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/f18a0078-4f04-bdbd-6684-4472dd2ccbc1.png)

④ 動画を録画するCameraにCubemap To Other Projectionのコンポーネントを付与し、RenderTargetに③で作成したRenderTextureを指定してください。Projection Typeは「Equirectangular_360」で「Render In Stereo」にチェックが入っていると基本的には動作します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/0dbf320d-eaf6-326d-19f5-118be8debb15.png)

⑤ Unityのツールバーから「Window」「General」「Recorder」「Recorder Window」を選択し、UnityRecorderを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/24af887c-9564-0f4e-080c-2a4d9f835547.png)

⑥ 「Add Recorder」をクリックし、「Movie」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/9a033f2c-3cc8-8326-bcfa-4447c1ae132d.png)

⑦ Sourceに「RenderTextureAsset」を指定し、「Render Texture」に③で作成したRenderTextureを指定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/cb328df6-66fc-8128-56f9-5b05c2c33bf3.png)

⑧ 録画は、「START RECORDING」を押してください。動画には右目左目の動画が上下に分割した動画が出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/56fd2894-e718-c44a-cec4-059a7eb9a60c.png)


# 360度メタ情報の付与

**YouTubeに360度動画をアップロードしても360度動画として認識されません。そのためのメタ情報の付与をする必要があります。**

[YouTubeの公式の解説](https://support.google.com/youtube/answer/6178631?hl=ja)はありますが、分かりにくいので説明します。

① Spatial Media Metadata Injectorをダウンロードします。
https://github.com/google/spatial-media/releases/tag/v2.1

② Spatial media Metadata Injectorを起動し、Openから動画ファイルを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/ebf625ac-f74f-2645-ad4d-ccfe19d25610.png)

③ 「My video is spherical(360)」と「My video is stereoscopic 3D(top/bottom layout)」のチェックを入れ、「Inject metadata」のボタンをクリックし、メタ情報が付与された動画を保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/0fea316e-ebbc-3968-5333-da29f5788b23.png)

メタ情報が付与された動画をYouTubeへアップロードし、ステレオ動画として認識されると、右下のUIの歯車マークに「3D」の表示が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/eb10bfb3-6c50-116e-1205-b88892b0aba7.png)

また、全天球動画として認識されると左上のUIに、視点を動かすためのUIが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139643/700eec37-dab9-f52d-db01-bcb9743d26b4.png)

# 参考：YouTube動画が勝手にYouTubeショート動画になる

**YouTubeとして動画を表示したい場合、61秒以上の動画にしてください。**

技術検証をしてて気づいたのですが、短尺の動画は勝手にYouTubeショートの方になってしまいます。
調べてみた結果、60秒以下の動画は勝手にショート動画としてアップロードされ、なおかつYouTube動画へ変更するのが不可能のようなので、回避したい場合は、動画自体を61秒以上にする必要があるそうです。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11242497386

# 感想

　今回、色々とUnityに関する映像のノウハウについて調べることが多かったのですが、なかなか大変でした。UnityRecorderで全天球の出力機能はあるものの綺麗に映像が出ないという技術的な問題が発生しました。次に問題となったのは、動画のチェックです。各個人がHMDをかぶって動画を確認するにしても、都度、HMDをUSBでつなぎ、動画をPCから転送し、確認する。というのは、なかなか面倒なものです。そうすると、YouTubeで限定公開でアップロードして、それを共有して動画を確認する方が色々と便利じゃない？という発想になりました。しかし、YouTubeで見るにもひと手間必要だったりします。
　あんまりUnityの360動画周りの知見は世の中に出てこないな。という予感はあって、それはなんでだろう？という疑問はありました。実際、このような動画の制作を行ってみると、技術的な問題もありますが、品質チェックなどレビューなどの運用にも課題があるため、あまり多くの作品がでてこないなだろうなぁ。と思いました。