ゼロからはじめるUnityでVJ | 音に反応するパーティクルをVisual Effect Graphでつくる
※2020年時点での検証内容になるので、情報が古い可能性があります。
ここでは、Unity 2018.3からの新機能(プレビュー版)の「Visual Effect Graph」を活用したオーディオリアクティブなパーティクル芸について触れておきたいと思います。
※ Visual Effect Graph(以下、VFX Graph)については、他サイトでも色々と概要が載っているのでここでは触れません。ご参考までに以下の2サイトを載せさせていただきます。
Visual Effect Graph × LASPという選択
次の動画は実際にVFX Graphを活用して作ってみた映像となります。
学生時代にProcessingで似たようなこと頑張っていた記憶が蘇りますが、VFX GraphはノードベースのGPUパーティクルシステムなのでサクッと美しいパーティクル芸ができるのがとても魅力的と言えるでしょう。
音に反応する映像とかをつくる際に前提として必須となるのが、映像と音の間の遅延が無いことでしょう。
が、実際にUnityの標準機能のみではどうしても遅延が気になってしまいます。
この課題に対して、Keijiro 氏が github で公開している低レイテンシのオーディオ入力を処理できるライブラリ LASP を活用するのが最も良い選択肢と言えます。
LASPを試してみたい方は、先程のリンクの github から git clone して実際にまずは脳死で動かしてみると良いかと思います。
どうやっているのか
Keijiro 氏の 他のレポジトリを参考にしてたのですが、私の場合は LASP の “AudioLevelTracker.cs” をアタッチして使う方法ではなく VFXGraph をコントロールするスクリプトを別途作成して、”VisualEffect.SetFloat(”音に応じて反応させたいVFXのパラメータ名”, LASPで処理した正規化済のオーディオレベル)”で音に応じたエフェクト操作をするようにしています。
※現在は、変数のバインダーが標準で用意されており↑を準備しなくても大丈夫そうです。
“音に応じて反応させたいVFXのパラメータ名”は、今回のテストの場合には、VFX Graph内でパラメータとして定義しておき、Remapを介してSpawnノードの”Rate”、Update内の乱気流制御で”Intensity”、”Force”にそれぞれインプットするようにしています。
今後も「Visual Effect Graph × LASP」の合せ技は色々と使えそうです。