見出し画像

【VRChat】VRSLの始め方 手動制御編

VRSL(VR Stage Lighting)にはリアルの照明卓を用いてVRChat内の照明制御をする機能がある。

↓公式Wiki

DMX信号を用いて制御するわけだが、とにかく通信経路が複雑で簡単な制御を行うにも非常に苦労した。
一部、公式Wikiの解説とは異なる方法で制御を実現しているが、一通り動かすことはできたため、その方法を解説する。

VRSLの環境導入やシーン作成方法がわからない方は下記のリンクからどうぞ。


動作確認環境

  • Unity 2022.3.22.f1

  • VRSL 2.7.1

  • USharpVideo 1.0.1

  • Gridnode 2.3

  • OBS 30.2.0

VRSLによるDMX制御のメカニズム

VRChatでは直接DMX信号を受け付けるインターフェースは無い。
そこでVRSLでは、YoutubeやTwitchによる動画ストリーム配信サービスを用いてDMX通信を実現している。
何を言っているかわからないと思うが、私も未だにこの実現方法が信じられない。

とりあえず通常のDMX制御と比較して、VRSLによる制御方法について解説する。

通常のDMX制御

TODO

VRSLによるDMX制御

TODO

VRSLによるDMX制御のシステム構成イメージ

TODO

インストール

UsharpVideo

VRChatワールドでTwitch/Youtube配信を受信するのに本記事ではUsharpVideoを使用する。
下記リンクより、最新バージョンをダウンロード&インストールする。

.unitypackageファイルをダウンロード
任意のVRCプロジェクトを起動して.unitypackageをダブルクリック&import

QLC+

リアルの照明卓は持ってないので、フリーのバーチャルコンソールを使用してデモする。
下記リンクよりバーチャルコンソール(QLC+)をダウンロード&インストール

VR Stage Lighting Artnet Grid Node

DMX信号をグレースケール&OSCに変換するツール。$12かかるので嫌な人は自作しよう。(私は自作するのが面倒すぎて買いました)
下記リンクより購入&インストール

OBS

グレースケール画像をストリーミング配信するためのキャプチャソフト。
これ一つで画像キャプチャからTwitch/Youtube配信までできてしまう優れ物。
下記リンクよりダウンロード&インストール


Unityエディタ内で動作確認

VRCワールドは使用せず、Unityエディタの再生ボタンを押して起動するデバッグモードで、灯体をリアルタイムで制御するデモをする。
Unityエディタでデバッグする時のみ、VRSLはOSCに対応するため、本デモではOSCによるDMX通信を行う。

事前準備

動作確認用に3つの灯体を設置したシーンを作成。
すべての灯体はスタートアドレスを1に設定

シーンの作成&設定方法はコチラ

VRSLコントロールパネルを開いてDMX Screens~のHorizontalボタンを押下し、“VRSL-DMX-TekOSCGridReader-H”プレハブを生成

VRStageLightingGridNode.exeを起動

`VRStageLighting-ArtnetGridNode\VRStageLighting-ArtnetGridNode-Beta v2.3\VRStageLighting-ArtnetGridNode-Beta v2.3`フォルダー内の実行ファイルを使用

続いてQLC+を起動。
[入力/出力設定]タブから[ArtNet:127.0.0.1]行の[出力]列のチェックボックスをチェック

動作確認

Unityの再生ボタンを押して、デバッグモードを起動。
QLC+の[シンプル卓]のフェーダーを動かすと照明が動く。
参考:VRSLが用意する灯体のアドレス対応表

VRChatワールドで動作確認

VRCワールド内に設置した灯体をリアルタイムに制御するデモをする。
誤解を恐れずに言うとVRワールドではOSC通信が使用できない。そのため、本デモではグレースケール画像変換&ストリーミング配信によるDMX通信を行う。

事前準備

動作確認用に3つの灯体を設置したシーンを作成。
すべての灯体はスタートアドレスを1に設定

シーンの作成&設定方法はコチラ

VRSLコントロールパネルを開いてDMX Screens~のHorizontalボタンを押下し、“VRSL-DMX-TekOSCGridReader-H”プレハブを生成

UsharpVideoプレハブをシーン内に設置。

UsharpVideoプレハブは‘assets->USharpVideo‘フォルダー内にある

UsharpVideoで受信した映像を、“VRSL-DMX-TekOSCGridReader-H”プレハブに投影する。
[UsharpVideo]プレハブ -> [Internals] -> [AVProRenderTextureFetch]の[VRC ACPro Video Screen]コンポーネントを“VRSL-DMX-TekOSCGridReader-H”プレハブ->[Viewer]にコピー&ペーストする。

VRStageLightingGridNode.exeを起動

`VRStageLighting-ArtnetGridNode\VRStageLighting-ArtnetGridNode-Beta v2.3\VRStageLighting-ArtnetGridNode-Beta v2.3`フォルダー内の実行ファイルを使用

OBSを起動。
ウィンドウキャプチャでVRStageLightingGridNodeのGrid画面を指定。

[javaw.exe] VRSL Gridを指定する

ウィンドウキャプチャの設定で"垂直反転"と"画面に引き伸ばして置く"を適用。

キャプチャしたアイテムにカーソル置いて右クリックすると画像のメニューが出る

[プロファイル]タブ -> [新規]で配信用のプロファイルを作成
自動構成ウィザードで"配信のために最適化~"を選択した後は案内に従って配信環境を整える。

配信映像の解像度は1920x1080に設定。これで配信環境の構築は完了。

続いてQLC+を起動。
[入力/出力設定]タブから[ArtNet:127.0.0.1]行の[出力]列のチェックボックスをチェック

動作確認

OBSで[配信開始]ボタンを押下し、配信を開始する。

Unity画面に戻り、[UsharpVideo]プレハブの[Usharp Video Player]コンポーネントのDefault Playlist URLsに配信URLを入力。
また、Default Stream Modeにチェック。 

[VRChat SDK]タブ -> [Show Control Panel]でVRChat SDKのコントロールパネルを表示。
[Builder]タブ -> [Built & Test New Build]ボタンでビルドを開始。
※USharpVideoはUnityエディタの再生ボタンによるデバッグモードではストリーム配信を受信できないため注意

VRChatのデバッグ画面が表示されたらQLC+の[シンプル卓]のフェーダーを動かすと照明が動く。
QLC+から生成された信号が、VRCワールド内の灯体に反映されるまで約30秒ほどかかる。
参考:VRSLが用意する灯体のアドレス対応表

リアルタイム??制御ができた!

余談

OBSでエラーダイアログ“指定したチャンネルまたはストリームキーにアクセスできません~”が表示され配信できない時がある。

設定画面からアカウントを切断し、アカウントにログインしなおしたら治った。


USharpVideoをシーン内に配置して、Unityエディタの再生ボタンでデバッグを開始すると下記のエラーが発生。ストリーミング映像が受信できない。

[USharpVideo] Video 'https://www.twitch.tv/koru_05' failed to play with error Unknown
UnityEngine.Debug:LogError (object,UnityEngine.Object)

VRCコントロールパネルの[Built & Test New Build]ボタンでビルドを開始すると正常にストリーミング映像を受信できる。

この記事が気に入ったらサポートをしてみませんか?