Unity上でテクスチャをノードベースで生成できるOSS「Mixture」の使い方を簡単にまとめました。
Unity2020.3.22f1
Mixture?
MixtureはUnity上でプロシージャルなテクスチャをノードベースで作成できるライブラリです。
OSSで公開されているため、ライセンスの範囲内で自由に使用することができます。
機能が多く拡張性にも優れている上、Unity上で動作するため、
エフェクト用のテクスチャなど他のツールを介さないワークフローを構築したいときに便利そうです。
改めて今このOSS使ってみて、エフェクト制作に最高なのでは...ってなってます。
— Haruki Yano / Haruma-K (@harumak_11) 2021年11月12日
Unity上でノードベースでテクスチャ作成 -> そのままテクスチャアセットとして使用可能。もちろん更新もシームレスに可能。 https://t.co/WLZH34J7ZI pic.twitter.com/ZHooHKWAMk
なおUnityの要件はドキュメント上Unity2020.2 以上となっていますが、
package.jsonとしては途中からUnity2020.3以上となっているので2020.3以上を使っておいた方が無難です。
どちらかが正しいのかは判断がつかないためissueで問い合わせています。
-> 2020.3以上が正しいという返信 & ドキュメント更新してくれました
本記事ではこのMixtureの使い方を簡単にまとめます。
インストール
MixtureはOpenUPM経由でインストールします。
OpenUPMを使用したインストールの仕方は以下の記事にまとめていますので、必要に応じて参照してください。
レジストリの情報は以下の通りです。
項目名 | 内容 |
---|---|
Name | Open UPM |
URL | https://package.openupm.com |
Scope(s) | com.alelievr |
テクスチャアセットを作る
それでは実際にMixtureを使ってテクスチャを作成します。
まずAssets/Create/Static Mixture Graph
からアセットを作成します。
作成したアセットをダブルクリックするとMixtureウィンドウが開きます。
初期状態ではCellular Noise
ノードが作成されていますが、こちらは不要なので右クリックして削除(Delete)しておきましょう。
ノードを組み合わせてテクスチャを作る
次にノードを組み合わせてテクスチャを作成します。
ノードを作るにはMixtureウィンドウ上の何もない領域で右クリックするか、スペースキーを押下します。
試しに検索枠にCellular Noise
と入力してノードを作成します。
ノードには以下のようにポートとプレビュー、プロパティが表示されます。
また、ノードによってはここには一部のプロパティのみが表示され、残りは隠された状態なっています。
全てのプロパティはノードを選択した状態でInspectorから編集することができます。
今回はInspectorから以下のようにプロパティを調整しておきます。
同様にGradient
ノードとRemap
ノードを作成し、以下のようにポート同士を繋ぎます。
Output Texture Asset
ノードに繋ぐと、その色がテクスチャとして出力されます。
ここまでできたら左上のSaveボタンを押下してアセットを更新します。
更新されたアセットはそのままテクスチャとして使用できます。
Realtime Mixture
Realtime MixtureはランタイムでCustom Render Textureを用いてリアルタイムにテクスチャを生成するためのアセットです。
Custom Render Textureについては以下の記事にまとめていますので、必要に応じて参照してください。
Realtime Mixtureを使うにはまず、Assets/Create/Realtime Mixture Graph
からアセットを作成します。
以下のようなグラフを組むと、Timeなどのノードを使ってリアルタイムにアニメーションするテクスチャを作ることができます。