Observe Photon

なにかについて

UnityでやってるVJの構成について

ちょうど長時間移動があって書く気力が湧いたのとジェネ系VJアドカレがあったので、自分がUnityでVJする時の構成を簡単に紹介しようと思いました。

 

今回はこちらのイベントのときの構成になります。

 

Midi入出力

Midi入力はKeijiro Takahashi が公開しているRtMidi for Unityを使っています。

github.com

これを元にMidiInputとMidiOutputコンポーネントを作り、それぞれ

MidiInputはIMidiInputを持つコンポーネントに入力されたMidiの値を渡していて、

またMidiOutputは、UnityからVRChatにloopMidiを通してMidiを渡したい時と、LaunchPad miniのPadの色を変えるために使ってます(どちらもDrawのときは使ってない)

VFX Graphに関してはPropertyBinderでCCの値、EventBinderでNoteのOnOffをTriggerとして渡せるようにして使っています。

EventBinderとPropertyBinder

レンダリング

最新ではURP14を使いました。VFX Graph、ShaderGraphが使えるのと、今のところHDRPを使うほどの絵を作ってないことが主な理由です。いい感じにHDRPを使ってやるの考えたいですね。

PostEffect群はURPはRendererFeatureを使わないといけないので、それぞれのRenderPassを書いて実装しています。(URP12と14で書き方が変わって大変だった)

 

この前のDrawでは

EdegeDetection

FeedBack

SlitScanぽいもの

を作りました。前のだと他にも作ったりしていますが移行の関係と、Feedbackするときのバグの解決に時間を取られて(Bufferの色味が変わってしまって結局、白黒にして誤魔化してます)この3つだけです。

 

また配信のため、KlakSpoutを使ってOBSに送ってます。CustomRenderPassFeatureでUI描画前の絵をKlakSpoutで送るRenderTextureにコピーしています。

Renderer Features

 

素材

主に素材はVFX Graphを基本に、 ShaderGraphで見た目を、動きの制御周りはGraphicsBufferを経由してComputeShaderとスクリプトでやったりしています。Unityだとこの3つが簡単に連携できるのでとても重宝しています。

 

ちなみにDrawのときの素材作るときに参照したネタはこのあたりです。

 

vimeo.com

 

 

ついでに今回のプロジェクトを公開します。整理あまりしてないので見づらいですが…

github.com

 

おわりに

この構成自体は3年前のGC5.0用に作ったLaunchPadからをVRChatにMidiを送るソフトから始まって、一昨年のSanrio Virtual Fes 2021、去年Channel、今年のdrawで少しずつ改良していったものです。おかげではじめから素材づくりに集中できていい感じでした。

他に、もうちょっといろいろやりたいなと思いつつネタもあるけどなかなか掘り下げられてないなという感じです。