UnityでVJをしよう
この記事はUnity Advent Calendar 2022の記事です。
自己紹介
Unityでソフトウェアを作ったり、VJしたり、レイマーチングでシェーダー芸したりしてます。しっかりしたプログラミング歴は2年くらいです。シェーダー歴は1年くらいです。
Twitter
https://twitter.com/SainaKey
ポートフォリオ
https://www.sainakey.com/
VJとは
DJさんが流している音楽に合わせて、映像を出す人です。
下の動画の真ん中の人がDJで、左の人がVJ(僕)です。
後ろにプロジェクターで写っている動画は、VJの僕がその場で編集(※)して出しています。
※VJには大きく分けて2種類あり
プリレンダ系:レンダリング済みの映像をその場で合成、編集して音に合わせるVJ
リアルタイム(ジェネ)系:ゲームエンジンやシェーダーを用いてその場で映像を生成するVJ
今回は僕が行ったのはプリレンダ系になります。
誤解を恐れずにまとめると、VJは「曲を聴いて即興でMVを作る人」です。
手元はこんな感じ
VJソフト
VJをするためには、VJソフトが必要です。
・Resolume
WindowsとMacに対応、多分一番有名、自由度に限界があるとよく言われる。
・VDMX
Macに対応、めちゃくちゃ自由度がある。
この2つが有名ですが、値段が3~10万円とかなり高いため入門のハードルが高いのが現状です。
これは宣伝ですが、必要最低限の機能を備えた安価なVJソフトを開発、販売しているので良ければ…
Unityで作る
VJしたいけど…数万円は出せない…
作れば良いやん!!!!!!
そこでみんな大好きUnityです。
・標準で映像再生機能がある
・シェーダーが書ける(レイマーチング、映像の合成方法が自由)
・3Dエンジンなので、リアルタイムレンダリングが出来る
・無料
・アセット、プラグインが沢山ある
・あのKeijiro Takahashiさんもやってる
・無料
つまり、Unityを使えばプリレンダ系、リアルタイム系どちらも出来ます。
なんなら、組み合わせたVJも可能です。
作り方(アセット紹介)
詳細なコードとかを紹介してると永遠に終わらないので雑にまとめていきます。
映像を作る
VideoPlayerコンポーネント
・標準で使える
・ちょっと重い
KlakHap
・再生がスムーズ(5倍速、逆再生とか出来る)
・事前に映像ファイルをhapコーデックに変換しておく必要がある
ポリゴン、シェーダー
・Unityのシーンで好きなように作るだけ
例
映像を出力する
フルスクリーン
・普通にビルドしたソフトをプロジェクター等に映すだけ
・マルチウィンドウが必須になる(操作用の画面と出力用の画面)
Spout
・Windows用のGPUテクスチャ共有規格(多分)
・KlakSpout を使うと簡単に実装できる
・OBSとかに簡単に取り込めるので配信VJ向き
Syphon
・Mac用のGPUテクスチャ共有規格(多分)
・KlakSyphon を使うと簡単に実装できる
・OBSとかに簡単に取り込めるので配信VJ向き
NDI
・LAN経由で複数デバイス間で映像を共有できる規格(多分)
・KlakNDI を使うと簡単に実装できる
・OBSとかに簡単に取り込めるが、同一PC内で使う場合は上記の二つを使った方が効率が良い(エンコードする必要がないため)
操作する
キーボード、マウス
・一番シンプル
・細かい操作は難しいかも
MIDI
・一番有名
・MidiJackやMinisで簡単に実装できる
・以下のようなフィジカルコントローラーなので複数の操作をまとめて行える
OSC
・MIDIをもっと扱いやすくしたもの
・OscJackで簡単に実装できる
・スマホから遠隔操作も可能
Unityで作ったもの
今までで3つのVJソフトを作ったので紹介させてください。
SynapseRack VJ Tool
今も開発中でクローズドアルファで公開してます。
「ノードベースでユーザーが操作の自動化やエフェクトをカスタマイズ出来る」というコンセプトで作っています。
プリレンダ系VJ向きのソフトウェアになります。
※ちょっと紹介動画のverが古いです
Behavior Visual Tool
VRChatで開催されたAudio/Visualイベント「draw();」でのVJのため開発したものです。
リアルタイム系(ジェネ系)VJになります。
SSS VJ Tool
前半の方で軽く紹介した、今一般公開中のVJソフトです。
基本的な機能を備えており、「とりあえずVJをやってみたい!」という方におすすめです。
まとめ
UnityはVJソフト
標準機能、アセットが充実していて、2D,3D表現が可能なのでVJにおすすめです。
Unityを使ってる方でVJに少し興味ある方はやってみてください!