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
pibo
August 31, 2020
Programming
0
370
オーディオリアクティブなVR空間で生演奏のライブがしたくてライブシステムを作った話
xR Developers Community Conferenceで発表した内容です。
https://vrtokyo.connpass.com/event/185043/
pibo
August 31, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
980
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
4.7k
CSC307 Lecture 04
javiergs
PRO
0
620
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
200
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
2
530
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
930
愛される翻訳の秘訣
kishikawakatsumi
3
370
Basic Architectures
denyspoltorak
0
170
チームをチームにするEM
hitode909
0
440
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
550
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
31
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
A Tale of Four Properties
chriscoyier
162
24k
The browser strikes back
jonoalderson
0
300
Music & Morning Musume
bryan
46
7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
So, you think you're a good person
axbom
PRO
0
1.9k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Transcript
オーディオリアクティブなVR空間で 生演奏のライブがしたくて ライブシステムを作った話 ぴぼ(memex) @memex_pibo
自己紹介 • ぴぼ(@memex_pibo) • 大学院で裸眼MR(空中映像)を研究 • 在学中にVR空間での音楽活動に興味を持ち 2人組音楽ユニット「memex」でVR音楽活動開始 • 本業:Androidエンジニア
手乗り裸眼MR「FairLift」 memex
memex ワンマンライブ 「#解釈不一致」 memexがVR空間で行ったライブ • 生歌生ギター • リアルタイムモーション収録 • オーディオリアクティブな演出
• 体験可能人数無制限 YouTubeに360°立体視のアーカイブがあります
None
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う!
#解釈不一致 システム構成 Max For Live モーション 演奏 音から生成した 演出信号 音声
データ モーションと 演出の映像化 配信映像再生 コンポーネント カメラによる テクスチャ化 Shaderで モーションと 演出の復元
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う!
オーディオリアクティブな視覚演出が好き オーディオリアクティブ = 音に反応すること 例) 声の音量に合わせて円が大きくなる バスドラムに合わせて床が隆起する Soundscape of Portrait
- Ayumu Nagamatsu ハイスイノナサ"地下鉄の動態" MV
VRでオーディオリアクティブの世界に入りたい オーディオリアクティブな空間の中でライブしたい…… VRChatならできそう!バーチャルアーティストすっぞ!
VRでオーディオリアクティブの世界に入りたい オーディオリアクティブな空間の中でライブしたい…… VRChatならできそう!バーチャルアーティストすっぞ!
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う!
できない理由:同期の経路がバラバラ • VRChat アバターの モーション ライブの音声 空間演出イベント 演者 お客さん
演者 同期の経路がバラバラ • VRChat お客さん アバターの モーション ライブの音声 空間演出イベント ここは気にならない
ここが合わない
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う!
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う! 1. 素直なアプローチ 2. 演出イベントの映像化 3. アバターのモーションの映像化
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う! 1. 素直なアプローチ 2. 演出イベントの映像化 3. アバターのモーションの映像化
素直なアプローチ 音と演出のタイミングを合わせるために最低限必要そうなもの 1. モーション・音声・イベントにタイムコードを持たせたフォーマット 2. 1をやりとりするサーバー 3. 1のタイミングを一致させて再生できるクライアント
素直なアプローチ 音と演出のタイミングを合わせるために最低限必要そうなもの 1. モーション・音声・イベントにタイムコードを持たせたフォーマット 2. 1をやりとりするサーバー 3. 1のタイミングを一致させて再生できるクライアント たいへんなのでなるべく既存のものに乗っかりたい!
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う! 1. 素直なアプローチ 2. 演出イベントの映像化 3. アバターのモーションの映像化
• VRChatクラブシーンでの先行例 演出イベントを映像として配信する アバターの モーション ライブの音声 空間演出イベント (色で表現) 演者 お客さん
映像ストリーミングサービス経由 Shaderで映像を 演出にデコード (VRChat) HLS再生 オブジェクト VRChat経由
演出イベントの映像化 先行例:TouchDesignerなどで音圧レベルを白黒グラデーションにマッピング https://www.slideshare.net/noriben/vj-168074352 #解釈不一致ではMAX for LiveとUnity 映像をシーン内のカメラでRender Textureにし、シェーダーで読み込む バスドラム スネア
バスドラム(床) スネア (円周)
曲中の任意のタイミングで演出イベントを生成する 音楽制作ソフトのシーケンサーにMIDIノート(音符)を配置 UnityでMIDIを拾って映像化 伴奏音声 演出イベント (MIDIノート)
問題点:アバターと音がズレる
今日のテーマ 目的:オーディオリアクティブな演出で生演奏のVRライブがしたい! 課題:音と演出のタイミングが合わない! 解決策:アバターも演出も音も全部動画として配信すれば合う! 1. 素直なアプローチ 2. 演出イベントの映像化 3. アバターのモーションの映像化
任意のシェーダー変数が 映像として配信・再生可能 (精度は低い……)
アバターのモーションも 映像として配信しよう
#解釈不一致 の配信形式 アバターの モーション ライブの音声 空間演出イベント お客さん 映像ストリーミングサービス経由 演者 メッシュ・
シェーダー等 アセット類 VRChat経由
モーションの映像化 • VAT(Vertex Animation Texture) ◦ アニメーションの各フレームにおける各頂点の位置をテクスチャに書き込むことで テクスチャにアニメーション情報を記録する手法 #解釈不一致 では映像1フレームに1フレーム分のアニメーションを記録
エンコードによる劣化 映像として配信する際のH.264エンコードで頂点の位置情報が劣化する 外れ値をフィルタリングすることで原型を保つ エンコード フィルタリング
実際に配信した映像
演出イベント アバター1 モーションデータ アバター2 モーションデータ ツイート (空間に表示)
None
#解釈不一致 システム構成 Max For Live モーション 演奏 音から生成した 演出信号 音声
データ モーションと 演出の映像化 配信映像再生 コンポーネント カメラによる テクスチャ化 Shaderで モーションと 演出の復元
まとめ
良かったこと • VRChatに依存しなくなった ◦ 360°アーカイブはUnity上でUnityCaptureで録った映像 • 人数制限がなくなった ◦ VRChatの1インスタンス(1空間)には人数制限があるが、 この手法なら複数インスタンスに同時に現れることができる
▪ 「仲いい人だけでインスタンスを立ててライブを見るのが面白かった」 • 「VR空間上の一連のできごとが1つのファイルとして記録されている」 ことが面白い ◦ Unityのビデオプレイヤーで再生ファイルを差し替えるだけでリハーサルの様子が見られる ◦ ビルドしたクライアントと録画映像があるのでVRChatが対応しなくなっても 今後もずっと体験できる(はず)
大変だったこと • エンコードによる情報量の劣化への対処に凄く時間がかかった • AWSで1時間の映像を400人程度に配信した結果5万円かかった
より詳細な内容がQiitaにあります https://qiita.com/memex_pibo/items/3fbfcd627e5e7c7f2061
オーディオリアクティブなVR空間で 生演奏のライブがしたくて ライブシステムを作った話 ぴぼ(memex) @memex_pibo