Perl日記

PerlとかRubyとかPHPとかPythonとか

Unity から YouTube で 360度ライブ配信をしたときに調べてやったまとめ

f:id:rightgo09:20190530084156p:plain
ねこ型オブジェクト

YouTubeライブ配信をするために

360度ライブ配信に関するYouTube のヘルプページ

  • https://support.google.com/youtube/answer/6396222?hl=ja
  • 「現在、YouTube でサポートされている 360° 動画は正距円筒図法によるものだけです」
  • 「360° ライブでは 2160p または 1440p の解像度が推奨されます。」
  • 「最適な動画品質を提供するために 16:9 のアスペクト比を選択します。詳しくは、アスペクト比についての記事をご覧ください。」
  • 手持ちのモニタでは 1920x1080 が限界だったので、フルスクリーンでアプリ起動して、1080p で送った
  • 四方八方の映像を送るので、解像度的にはたぶんこれくらいが限界かもしれない
    • それでもカメラに近寄るとジャギジャギしてしまっていた
    • 4K とかで送れるならそれがベストなのに越したことはない

f:id:rightgo09:20190530083306p:plain
ジャギジャギしている

正距円筒図法 = Equirectangular

  • Unity 2018 のバージョンから RenderTexture.ConvertToEquirect が使えるようになったらしい(よくわかってない)
    • なのでまずは気合で Unity 2018 までバージョンアップします(しました)
Recorder を使う
Facebook のライブラリを使う
  • GitHub - facebook/360-Capture-SDK
  • Unity から直接 YouTube ライブ配信に必要な設定(ストリームキーとか)もできる、なんかすごそうなやつ
  • OBS などを挟まないので、「ちょっと待ってね」シーンとかに切り替えできないのと、後述の資料でちょっと不安な感じだったので、今回はやめておいた
Unity の機能を直接使う

実際に 360度ライブ配信をやってみて、気になったところ

  • HMD 内でレンダリングされている世界と、Equirectangular で出力した映像に、ズレがあった
    • 具体的にはトラッキングしている 3D モデルが腰の位置で高さが固定されてしまって、頭は下に下がらないし、足を曲げても宙に浮いてしまっていた
      • ライブ配信時のコメントで、「浮いてる」とあって、「浮いてないです」と答えてしまったけど、あとでアーカイブ見たら浮いてた(悲)
    • 同じ原因で、メガネも HMD の位置に追随するようにしていたので、自分にはちゃんと見えていても YouTube では縦横無尽に移動するメガネとなってしまった
  • 私の見えている世界が、世界のすべてではなかった……!


f:id:rightgo09:20190530082138p:plain
ねこ型オブジェクトを撫でていたのに、ライブ配信では浮いてしまっていたスクショ

そのほか

  • なんか新しい演出を入れたいなと思って、パーティクルを入れてみた
    • Particle Collection SKJ 2016_Free samples - Asset Store
    • magic_ring ってやつ
    • サイズが大きかったので Scaling Mode を Hierarchy にして普通にサイズ調整して、Play() と Stop() しかやりかた分かんなかったけど
    • Unity のパーティクルシステムは Shuriken っていうの、初めて知った
  • 360 度の世界を見せるのに何かできないかなと考えて、赤いキューブを回転させて、その上にねこを置いた