UnityでVJ用のテンプレートプロジェクト作った
@amagitakayosiさんが公開してくれていたUnityプロジェクトを参考に(すごく参考になりました)、自分が使いやすいように修正を加えてテンプレートプロジェクト作りました。
以下は自分用のメモです。多分すぐ忘れるので。
ざっくり構成
Layer的なものを2つ用意し、どちらかを出力するという形にしています。 個別のサブシーンをレンダリングしたTextureをMixCameraでMixし、続いてEffectCameraでPostEffectをかけ、OutputのところでどちらかのLayerをDisplayに表示するというフローになります。
以下細かい補足
Camera
MixCamera
- Layer0, Layer1用に2つカメラを用意
- 各サブシーンの表示非表示やMix関連の処理を行う
EffectCamera
- Mix処理が終わったテクスチャに対してPostEffectをかける
OutputCamera
- 最終的なOutput用のカメラ
- Layer0 or Layer1のどちらを表示するかを決める
Input
- キーボード、音声、Midiの入力ができる
- このあたりの入力値はグローバルにアクセスできたほうがいいので、安直にシングルトンインスタンに保存
- 入力値自体はMainシーンで受け取って、パラメータインスタンスに保存するようにしている
- 音声入力はLaspを利用
- Midi入力はMinisを利用
- InputSystemを使うので、有効にする必要がある
- ボタンはtoggle的な動作をさせたかったので、個別スクリプトを作ってcolorを変更するようにしている
- built-inのシェーダーを使っているので、build時にエラーがでないように以下の設定を追加
SubScene
- ParameterInitializerの中でシーンをロードするようにしている
- アンロードの機能は実装していないので、重たいシーンが増えてきたりすると辛いかもしれない...
- ControlParameterはサブシーンからでも使えるので、Midiや音声入力もつかえるはず...
おわりに
Unity初学者なので色々と突っ込みどころはあると思いますが、勉強も兼ねて素材作りがんばろう