Ugen
#ネタ
やりたいこと
Unityでジェネやりたくなったときに簡単に作れるようにするテンプレート/ライブラリを作りたい
RectorのノードエディタをUnityエディタ上で事前に構築するようなイメージ
コードを書かなくてもすぐに音に反応するものが作れるし、コードを追加で書くこともできる
名前
Ugen
Unity + Gene
有限/幽玄/有言
構想
基本的にはRector同じような構成
オブジェクト単位の振る舞いをコンポーネントで記述する
コンポーネントの例:
TransformRotator:Transformを回転させる
Vector3 angleSpeed; のような入力を持つ
AnimatorStateSetter:Animatorのstateを変更する
int stateのような入力を持つ
UgenButton:uGUIのButtonに相当する
IObservable<Unit> onClick のような出力を持つ
コンポーネント間のやりとりはノードベースエディタで記述する
コンポーネントに対応するノードが用意されていており、コンポーネントの定義によって入力や出力を持つ
グラフはScene(= .unityファイル)にシリアライズする
Scne起動時にグラフを元にRxでコンポーネントを接続する
要件
Unity6 (6.1?)
HDRP
機能
入力
GUI
キーボード/マウス
MIDI/OSC
GUIへのマッピングにする
音声入力(level, spectrum)
動画再生
出力
Shader Graph
VFX Graph
Cinemachine
Animator
ポスプロ
映像
Spout
Syphon
NDI
設計案
MonoBehaviourを継承したUgenBehaviourを作る
UgenBehaviourを継承したクラスとそれに対応するNodeのクラスを作る
attributeから自動生成できるとおしゃれ
Scene内にUgenManagerというMonoBehaviourを作り、それにUgenBehaviourの参照を持たせる
その参照を使ってUgenManagerにUgenGraphをシリアライズする
=> グラフの情報はScene(.unity)にシリアライズすることで参照のバインド的な面倒臭さをスキップする
UgenManagerはシーン起動時にGraphを読み込んでUgenBehaviour間の参照・データフローを構築する(主にR3)
UIをUgenBehaviourにする必要があるので、uGUIを使う必要がある