Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サーバレス な マルチユーザVR システム
Search
shinyoshiaki
October 05, 2018
Technology
0
1.9k
サーバレス な マルチユーザVR システム
歌舞伎座.tech#15
2018/10/5(金) バーチャルキャスト会場
shinyoshiaki
October 05, 2018
Tweet
Share
More Decks by shinyoshiaki
See All by shinyoshiaki
CPaaS「SkyWay」を作るために 必要なスキルの身につけ方
shinyoshiaki
0
970
TypeScriptとNode.jsでWebRTCを実装してみた
shinyoshiaki
1
2.9k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
2k
P2P分散型SNS “D-Twi”
shinyoshiaki
0
1.9k
Other Decks in Technology
See All in Technology
オーナーシップを持つ領域を明確にする
konifar
11
2.6k
なぜ NOT A HOTEL が Web3 に取り組むのか - NOT A HOTEL TECH TALK
ynunokawa
0
160
Tebiki株式会社 エンジニア採用資料
tebiki
0
4.1k
Janus
bkuhlmann
1
490
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
120
OpenTelemetry を使ったトレースエグザンプラーの活用 / otel-trace-exemplar
k6s4i53rx
2
640
Postman v10リリース後を振り返る
nagix
0
130
エンタープライズ環境下での Active Directory の運用 TIPS
tamaiyutaro
1
1.6k
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
120
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
61
18k
DevOpsDays History and my DevOps story
kawaguti
PRO
8
1.6k
強みを伸ばすキャリアデザイン
yug1224
0
200
Featured
See All Featured
Fireside Chat
paigeccino
20
2.6k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
The Pragmatic Product Professional
lauravandoore
24
5.8k
Debugging Ruby Performance
tmm1
70
11k
Building Applications with DynamoDB
mza
88
5.6k
A Tale of Four Properties
chriscoyier
150
22k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
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