Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバレス な マルチユーザVR システム

shinyoshiaki
October 05, 2018

サーバレス な マルチユーザVR システム

歌舞伎座.tech#15
2018/10/5(金)  バーチャルキャスト会場

shinyoshiaki

October 05, 2018
Tweet

More Decks by shinyoshiaki

Other Decks in Technology

Transcript

  1. 大学3年生
    Shin
    歌舞伎座.tech#15

    2018/10/5(金)  バーチャルキャスト会場
    サーバレス な マルチユーザVR システム

    View Slide

  2. バーチャルキャストの基本的な機能を
    サーバレスで実現可能なのか?
    サーバレスでリアルタイム通信をするために
    WebRTCを用いて実験的な開発

    View Slide

  3. WebRTC
    •本来は、ブラウザ同士をP2Pでつなぐための技術
    •P2Pで異なるネットワーク間で接続。NAT越え
    •Streamで映像と音を、DataChannelで任意のデータを送受信
    •Unity用のサンプルプラグインが存在
    •低遅延

    View Slide

  4. 低遅延

    View Slide

  5. 低遅延

    View Slide

  6. Unity Unity
    シグナリングサーバ
    •シグナリングサーバでお互いの情報を交換する
    シグナリング

    View Slide

  7. Unity Unity
    P2P
    •シグナリング完了後は完全なP2P, サーバレスな通信を実現
    シグナリング

    View Slide

  8. DataChannelをうまく使う
    •文字列しか使えないので送受信のルールを決めておく
    •RPC風の実装を行う
    •関数名+引数(配列)なJsonを文字列にして相手に送る

    View Slide

  9. • 3Dモデルをサーバに保管するのではなく、P2Pで交換する
     → ストレージサーバ不要、モデル所有者の心理的安心感
    3Dモデルの共有
    VRM
    VRM

    View Slide

  10. View Slide

  11. • VRMファイル
     ①wwwでバイト配列として読み込む
     ②deflateで圧縮
     ③10kbごとに分割 
     ④チャンクをBase64で文字列に
     ⑤VRMの受信関数名 + チャンク をDataChannelで送る
    DataChannelでVRMを送る

    View Slide

  12. •モーションの同期
     positionとrotateを文字列にして「受信関数名 + モーション」を 
     DataChannelで送る
              
    •オブジェクトの同期
     オブジェクトの座標、回転、今誰が影響を与えてる(動かしている)か、
     をDataChannelで共有
    •リップシンクの同期
      OVRlipSyncのVisemesをDataChannelで送る

    View Slide

  13. 方法 結果
    UnityのWebRTCプラグイン標準 繋がったり、繋がらなかったり、不安
    定。
    ドキュメントがない。
    UnityOpus + DataChannel 自環境では音質が悪い。
    ドキュメントがない。
    UnityからブラウザのWebRTCを使う 当然、普通につながる。
    高音質。
    立体音響は無理。
    現時点ではこれを採用。
    ボイス

    View Slide

  14. スクリーンキャプチャの共有
    Electron内にシグナリングサーバを建てて
    Unityとローカルでシグナリング
    相手側のUnityとは外部のシグナリング
    サーバでシグナリング
    Electronでスクリーンキャプチャをしてスト
    リームをUnityに送る

    Unity
    Electron
    ① StreamingAsset
      から起動
    Unity
    ➂ 映像
    ➂ 映像
    自分側 相手側

    View Slide

  15. View Slide

  16. まとめ
    •バーチャルキャストにある機能はある程度、WebRTCでも
     再現可能と思われる

    View Slide

  17. 今後
    • ミドルウェア化
    • メッシュ型、ツリー型、SFUで3人以上の接続対応?
    ソーシャルVR?(Max 5~6人) 音楽ライブ? (N人) 大規模低遅延配信
    (最近だとIRIAM
      みたいなことができる?)
    SFU

    View Slide

  18.   ↓パワポのファイル     ↓質問はTwitterで
    @ShinYoshiaki

    View Slide