【Unity】Unity上でテクスチャをノードベースで生成できるOSS「Mixture」の使い方簡単にまとめ

Unity上でテクスチャをノードベースで生成できるOSS「Mixture」の使い方を簡単にまとめました。

Unity2020.3.22f1

Mixture?

MixtureはUnity上でプロシージャルなテクスチャをノードベースで作成できるライブラリです。
OSSで公開されているため、ライセンスの範囲内で自由に使用することができます。

github.com

機能が多く拡張性にも優れている上、Unity上で動作するため、
エフェクト用のテクスチャなど他のツールを介さないワークフローを構築したいときに便利そうです。

なおUnityの要件はドキュメント上Unity2020.2 以上となっていますが、
package.jsonとしては途中からUnity2020.3以上となっているので2020.3以上を使っておいた方が無難です。
どちらかが正しいのかは判断がつかないためissueで問い合わせています
-> 2020.3以上が正しいという返信 & ドキュメント更新してくれました

本記事ではこのMixtureの使い方を簡単にまとめます。

インストール

MixtureはOpenUPM経由でインストールします。
OpenUPMを使用したインストールの仕方は以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

レジストリの情報は以下の通りです。

項目名 内容
Name Open UPM
URL https://package.openupm.com
Scope(s) com.alelievr

テクスチャアセットを作る

それでは実際にMixtureを使ってテクスチャを作成します。
まずAssets/Create/Static Mixture Graphからアセットを作成します。

アセットを作成

作成したアセットをダブルクリックするとMixtureウィンドウが開きます。
初期状態ではCellular Noiseノードが作成されていますが、こちらは不要なので右クリックして削除(Delete)しておきましょう。

Cellular Noiseノードを削除

ノードを組み合わせてテクスチャを作る

次にノードを組み合わせてテクスチャを作成します。
ノードを作るにはMixtureウィンドウ上の何もない領域で右クリックするか、スペースキーを押下します。

ノードを作成

試しに検索枠にCellular Noiseと入力してノードを作成します。
ノードには以下のようにポートとプレビュー、プロパティが表示されます。

ノード

また、ノードによってはここには一部のプロパティのみが表示され、残りは隠された状態なっています。
全てのプロパティはノードを選択した状態でInspectorから編集することができます。
今回はInspectorから以下のようにプロパティを調整しておきます。

プロパティを調整

同様にGradientノードとRemapノードを作成し、以下のようにポート同士を繋ぎます。
Output Texture Assetノードに繋ぐと、その色がテクスチャとして出力されます。

ノードを作成

ここまでできたら左上のSaveボタンを押下してアセットを更新します。
更新されたアセットはそのままテクスチャとして使用できます。

アセット

Realtime Mixture

Realtime MixtureはランタイムでCustom Render Textureを用いてリアルタイムにテクスチャを生成するためのアセットです。
Custom Render Textureについては以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

Realtime Mixtureを使うにはまず、Assets/Create/Realtime Mixture Graphからアセットを作成します。

Realtime Mixtureを作成

以下のようなグラフを組むと、Timeなどのノードを使ってリアルタイムにアニメーションするテクスチャを作ることができます。

Realtime Mixture

関連

light11.hatenadiary.com

light11.hatenadiary.com

参考

github.com

alelievr.github.io