Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
サーバレス な マルチユーザVR システム
shinyoshiaki
October 05, 2018
Technology
0
1.7k
サーバレス な マルチユーザVR システム
歌舞伎座.tech#15
2018/10/5(金) バーチャルキャスト会場
shinyoshiaki
October 05, 2018
Tweet
Share
More Decks by shinyoshiaki
See All by shinyoshiaki
CPaaS「SkyWay」を作るために 必要なスキルの身につけ方
shinyoshiaki
0
440
TypeScriptとNode.jsでWebRTCを実装してみた
shinyoshiaki
1
2.2k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
1.8k
P2P分散型SNS “D-Twi”
shinyoshiaki
0
1.7k
Other Decks in Technology
See All in Technology
増田亨さんによる 「設計の考え方とやり方」勉強会オープニング
tsuyok
0
210
20220803投資先CXO候補者向け 会社紹介資料_合同会社BLUEPRINT
hik
0
310
hey BOOK
heyinc
26
290k
テクニカルライティングの検定を受けてみた話 / "My Story About Taking the Technical Writing Exam
line_developers
PRO
1
210
Sysdig Secure/Falcoの活用術! ~Kubernetes基盤の脅威モデリングとランタイムセキュリティの強化~
owlinux1000
0
240
psql, my favorite tool!
nuko_yokohama
1
180
Red Hat Partner Training Portal のご紹介 / Red Hat Partner Training Portal Introduction
rhpej
0
110
金融領域のマルチプロダクトを効率よく開発・運用するためのシステム基盤と組織設計について / 2022-07-28-multi-product-platform
stajima
0
150
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
10
19k
SPAとWebアプリケーションでCognitoの使い方はどう変わるのか? / How do we use cognito with SPA and web applications?
kitano_yuichi
0
380
大声で伝えたい!定時に帰る方法
sbtechnight
0
230
Goで実装するブランドネットワークとの接続ポイント
pongzu
2
270
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
31
6.8k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
173
8.6k
How to name files
jennybc
40
63k
Scaling GitHub
holman
451
140k
No one is an island. Learnings from fostering a developers community.
thoeni
9
1.3k
Faster Mobile Websites
deanohume
294
28k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Git: the NoSQL Database
bkeepers
PRO
415
59k
WebSockets: Embracing the real-time Web
robhawkes
57
5.5k
A Philosophy of Restraint
colly
192
15k
Fantastic passwords and where to find them - at NoRuKo
philnash
27
1.6k
Transcript
大学3年生 Shin 歌舞伎座.tech#15 2018/10/5(金) バーチャルキャスト会場 サーバレス な マルチユーザVR システム
バーチャルキャストの基本的な機能を サーバレスで実現可能なのか? サーバレスでリアルタイム通信をするために WebRTCを用いて実験的な開発
WebRTC •本来は、ブラウザ同士をP2Pでつなぐための技術 •P2Pで異なるネットワーク間で接続。NAT越え •Streamで映像と音を、DataChannelで任意のデータを送受信 •Unity用のサンプルプラグインが存在 •低遅延
低遅延
低遅延
Unity Unity シグナリングサーバ •シグナリングサーバでお互いの情報を交換する シグナリング
Unity Unity P2P •シグナリング完了後は完全なP2P, サーバレスな通信を実現 シグナリング
DataChannelをうまく使う •文字列しか使えないので送受信のルールを決めておく •RPC風の実装を行う •関数名+引数(配列)なJsonを文字列にして相手に送る
• 3Dモデルをサーバに保管するのではなく、P2Pで交換する → ストレージサーバ不要、モデル所有者の心理的安心感 3Dモデルの共有 VRM VRM
None
• VRMファイル ①wwwでバイト配列として読み込む ②deflateで圧縮 ③10kbごとに分割 ④チャンクをBase64で文字列に ⑤VRMの受信関数名 + チャンク をDataChannelで送る DataChannelでVRMを送る
•モーションの同期 positionとrotateを文字列にして「受信関数名 + モーション」を DataChannelで送る •オブジェクトの同期 オブジェクトの座標、回転、今誰が影響を与えてる(動かしている)か、 をDataChannelで共有 •リップシンクの同期
OVRlipSyncのVisemesをDataChannelで送る
方法 結果 UnityのWebRTCプラグイン標準 繋がったり、繋がらなかったり、不安 定。 ドキュメントがない。 UnityOpus + DataChannel 自環境では音質が悪い。
ドキュメントがない。 UnityからブラウザのWebRTCを使う 当然、普通につながる。 高音質。 立体音響は無理。 現時点ではこれを採用。 ボイス
スクリーンキャプチャの共有 Electron内にシグナリングサーバを建てて Unityとローカルでシグナリング 相手側のUnityとは外部のシグナリング サーバでシグナリング Electronでスクリーンキャプチャをしてスト リームをUnityに送る ② Unity Electron
① StreamingAsset から起動 Unity ➂ 映像 ➂ 映像 自分側 相手側
None
まとめ •バーチャルキャストにある機能はある程度、WebRTCでも 再現可能と思われる
今後 • ミドルウェア化 • メッシュ型、ツリー型、SFUで3人以上の接続対応? ソーシャルVR?(Max 5~6人) 音楽ライブ? (N人) 大規模低遅延配信
(最近だとIRIAM みたいなことができる?) SFU
↓パワポのファイル ↓質問はTwitterで @ShinYoshiaki