Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UnityRenderStreamingを使って サーバー側でQuilt映像をレンダリングする
Search
blkcatman
June 11, 2021
Programming
720
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UnityRenderStreamingを使って サーバー側でQuilt映像をレンダリングする
LookingGlass向けにクラウドレンダリングのシステムを構築できるか、UnityRenderStreamingの仕組みを使って簡単にサーバー側レンダリングが行えないかを検証しました
blkcatman
June 11, 2021
Other Decks in Programming
See All in Programming
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
550
AmebaブログはKMPから卒業します
kmars0605
0
190
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Domain-Driven Transformation
hschwentner
2
2.3k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
The Cult of Friendly URLs
andyhume
79
7k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
BBQ
matthewcrist
90
10k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Everyday Curiosity
cassininazir
0
350
Un-Boring Meetings
codingconduct
0
460
Transcript
@blkcatman 第5回 Looking Glass勉強会 #るきべん UnityRenderStreamingを使って サーバー側でQuilt映像をレンダリングする
以前のLookingGlass関連の活動 以前、開発ボードのJetson Nano上でLookingGlassを使うハックを行っていた • NvidiaのGPUが積まれているボードの中でも当時は最安(1万円前後) • ArmLinux向けにLookingGlassのプリセットを読み込む処理を書く • その他もろもろを工夫 【DoMCN東京出張企画】Looking
Glass ミートアップの LTで発表・展示
LookingGlassの仕組みのおさらい、Quilt映像について 3Dモデルを多方向からレンダリング、レンダリングしたものを1枚の画像として 中間出力し、その画像をエンコードしてLookingGlassで見ると立体的に見える 3Dモデル Quilt映像化 エンコード (最終出力) 実機表示 © UTJ/UCL
LookingGlassの仕組みのおさらい、Quilt映像について 3Dモデルを多方向からレンダリング、レンダリングしたものを1枚の画像として 中間出力し、その画像をエンコードしてLookingGlassで見ると立体的に見える 3Dモデル Quilt映像化 エンコード (最終出力) 実機表示 PCパワーが かなり必要
© UTJ/UCL
LookingGlassの課題 リアルタイムでの映像レンダリングはハイスペックのパソコンが必要 • 視点数や映像解像度の増加に応じてハイパワーGPUが必須 • LookingGlass Portraitよりも大きいPCを持ち運ぶのはさすがに・・・ NUCや汎用の小型コンピュータボード(※1)を使う方法も限界がある どうすればよいか? ※1
Jetsonシリーズなど、安価なPC
最近気になっているテーマ:クラウドレンダリング 主要クラウドで5G基地局内のサーバー(MEC)を使えるサービスを知る(今更) • サーバー・クライアントの構成比率が1:1というリッチなゲーム向けの構成とし ても使える • NvidiaのCloudXRも1:1のベースで運用することを前提としている • 使う時だけサーバー建てれば安く収まるんじゃないか? リモートレンダリング使ってLookingGlassのQuilt映像作れないか?
時は変わって・・・ 脱線
参考:CloudXRについて • Nvidiaが提供する、SteamVRのHMDを仮想化、リモート端末側でVRゲームを 配信するフレームワーク。映像や入力の遅延を感じにくい • Oculus Air Linkをさらにマルチプラットフォーム対応にしたイメージ
リモートレンダリングをどう実現するか リモートレンダリングのシステムをどう作るか • UnityでレンダリングしたQuilt映像を動画ストリームにエンコード • エンコードした動画を配信システムに載せる • クライアント側でQuilt映像を受信 • 受信した映像をLookingGlass用にエンコードする
UnityRenderStreamingを使えば簡単に作れそう システム作るのめんどい
UnityRenderStreamingのメリット クラウドレンダリングを行うための仕組みが大体そろっている • ゲーム画面はライブラリが自動的にエンコードされる • 映像の送受信にWebRTCクライアントが使える ◦ MediaChannel ◦ DataChannel
◦ 伝送経路上の問題は大体ICE(STUN/TURN)サーバーの仕組みで解決できる • 公式がサンプルでWebブラウザアプリを用意されている ◦ ブラウザアプリは開発しやすく、手間が減る 映像・音声の送受信 コントローラー入力 Webカメラ入力に近い イメージで扱える
Web App LookingGlassのリモートレンダリング概要図 Holoplay Capture (Holoplay SDK) quiltRT (RenderTexture) Camera
Camera Camera レンダリングサーバー(Unity) Unity RenderStreaming WebRTC Client Signaling Server Web Server クライアント (Webブラウザ) WebRTC Client 描画エンジン (WebGL) Camera
サンプル(ベースはBroadcast.unity)のHierarchyの構造 RenderStreaming本体 配信に使用されるカメラ Holoplay CaptureのPrefab ※Quiltの映像のオーバーライド先になる
変更したインスペクタの設定など(RenderStreaming) Web Browser Input Channel Receiverと Camera Streamerのコンポーネントの みをアタッチ Signaling
Typeを HttpSignaling に変更 URLを http://localhost に変更 ※サーバー仕様によって変更する 実際はWebSocketを使うケースのほうが多い ※映像を送るだけだったらCamera Streamerのみで良い 将来的にブラウザ側の入力を受けたいのでこの2種を設定
変更したインスペクタの設定など(Render Streaming Camera) Culling Maskを Nothingに変更 カスタムスクリプト(※後述)をアタッチ Holoplay CaptureのGameObjectをアタッチ Streaming
Sizeを 任意のサイズに変更 ※このカメラの映像はQuilt映像で上書きされるので オブジェクトの描画そのものを切っている
変更したインスペクタの設定など(Holoplay Capture) Quiltのサイズを配信したい画像サイズに調整 視点数を調整
カスタムスクリプト(QuiltGrabber.cs)の中身 Graphics.Blit()を使って カメラ(Render Streaming Camera)の映像を Quilt画像のRenderTextureで上書き
クライアント側のWebアプリについて • コード整理できてないので、後日記事でフォローします ※実は一番時間がかかってるかも
クライアント側のWebアプリ画面 (Quilt映像表示) レンダリングサーバー側の Unity画面
LTまでにできたこと、今後やること 〇できたこと • 多視点の映像をリアルタイムレンダリング、Quilt動画をクライアント側に送信 • WebアプリとしてWebブラウザ上でQuilt映像を見れるようになった !今後やること • WebアプリにHoloplay.jsを仕込んで実際にLookingGlassPortraitで見てみる
• AWS WavelengthやAzure Edge Zoneなどの低遅延コンピューティング環境で 試す
2K以上の解像度での安定動作が難しい • ハードウェアエンコード有効時、解像度を2Kより大きくするとランタイムエラー を吐いてUnityごとクラッシュすることがある(4Kに設定するとよく落ちる) • PCスペックが足りない?(2060Superを使っているがもっと強いGPUが必要?) • ソフトウェアエンコードだと4Kもレンダリングできるが、映像がカクカクで実用的 でない
他、残課題など • 送られる映像のビットレートが低い?固定化する仕組みがないか 調べたい • 動画のFPS数を60fpsに固定する方法など
今後やること、試したいこと • とりあえずはWebアプリでHoloplay.jsを動作して、LookingGlassPortrait実機で 見れるようにするまで持っていく予定 • UnityRenderStreaming の仕組みそのものは理解しているが、実装部分を理 解しておらずブラックボックスなので、ソースコードを分解・解明したい※ ※com.unity.webrtcのパッケージの上にUnityRenderStreamingが実装されているのでC#のソースで読める
• UnityRenderStreaming が Version3.1 からAndroidビルドが可能になるので、 Android端末をクライアント環境としてリモートレンダリングを試してみたい