
MaterialParameterCollection は、 各種アセットの参照先となる スカラーおよびベクターパラメータ の 任意のセットを格納するアセットです。アーティストがグローバルデータをたくさんのマテリアルへ一度に取り込むことができる、 パワフルなツールです。レベル内の各種 MaterialInstance に対してそれぞれのパラメータ値の設定が必要となる作業も、 このツールで雪の量、破壊量、濡れ具合など、レベルごとのエフェクトの操作も可能になります。
上記の例は、シーンで使われる次にような項目の制御にグローバル パラメータを使用しています。
- 花のモーフィングの状態は風速と一致し、強さが制御されます。
- プレイヤーの位置の追跡情報はフォリッジへ送り込まれます。プレイヤーの位置情報を使って、プレイヤーが通る位置付近の花や草をプレイヤーから遠ざけます。
- 太陽の角度と色も追跡し、水位点の正確な色付けや、ライトが波高点から直接光っている時のみに効果を制限しています (プレイヤーが太陽に向かっている時)。
- 時間経過に伴った効果や水の全体的なディフューズ ライトカラーの彩色も制御されています。
Material Parameter Collection の作成と編集
MaterialParameterCollection は コンテンツ ブラウザ の [New] メニューから作成するか、 またはコンテキストメニューを 右クリック すると、他のアセットと同様に編集および保存ができます。
-
マテリアル パラメータ コレクションを作成するには、まず コンテンツ ブラウザ を 右クリック して作成メニューを公開します。そのメニューの中から、[Materials & Textures] セクション、 そして、[Material Parameter Collection] を選択します。選択すると、コンテンツ ブラウザ に新規の Material Parameter Collection が作成されます。
-
Material Parameter Collection は他のアセットと同様に コンテンツ ブラウザ へ追加および保存ができます。
-
Material Parameter Collection を編集するには、まず マウスの左ボタン で ダブル クリック して、プロパティ ウィンドウを開きます。
-
Scalar Parameters または Vector Parameters の横に位置する
ボタンをクリックして、マテリアル内にアクセスしたい新規のパラメータを作成します。
これらのパラメータの入力値とデフォルト値を覚えておいてください。
マテリアルで Material Parameter Collection を使う
マテリアルへの Material Collection Parameter ノードの追加は、幾つかのステップで行います。 以下のセクションでは、ゲームの再生中にマウスの左ボタンを押すとマテリアルの彩度を落とす非常にシンプルなマテリアルへ Material Collection ノードを追加する方法を見てみます。
-
まず最初に、Material Collection Parameter ノードを作成してデータを入力していきます。 これを行うには、コンテンツ ブラウザ でマテリアルを 右クリック し、[Materials & Textures] セクションを選択、次に [Material Parameter Collection] を選択します。 選択すると、コンテンツ ブラウザ に新規の Material Parameter Collection が作成されます。作成された Material Parameter Collection には名前を付けなければなりません。この例では、「MPC_Global_Material_Prams」 という名前にします。 完了すると、 コンテンツ ブラウザ は以下のようになります。
-
Material Collection Parameter が作成されたら、その上で マウスの左ボタン を ダブルクリック して開きます。 Material Collection Parameter が開いたら、Scalar Parameter を 1 つ追加して名前を 「Global_Desaturation」 と付けます。 Global_Desaturation のデフォルト値は 0.0 のままにしておきます。完了すると、Material Collection Parameter は以下のようになるはずです。
-
Material Collection Parameter が作成されたので、次はそれを使うためのシンプルなマテリアルを作成する必要があります。 ここの例では、以下のマテリアルを使用します。
このマテリアルには、 Scalar Parameter Material Expression ノードが 2 つ、そして Vector Parameter Material Expression ノードも 1 つ必要になります。 ノードの名前はそれぞれ Base_Color、Metallic、Roughness とし、対応する入力に接続されます。
-
Main Material ノードにノードを接続したら、次は Desaturation Material Expression ノードと Material Expression Parameter ノードの両方をマテリアルへ追加します。 Desaturation Material ノードを追加するためには、Palette で検索し、マテリアル グループにドラッグ&ドロップします。 追加したら、次は コンテンツ ブラウザ で Material Parameter Collection を探し、コンテンツ ブラウザ からマテリアル グラフへドラッグします。 上記を完了すると、マテリアルは以下のようになるはずです。
-
必要なノードはすべて追加されたので、次は全てを正しく接続していきます。 まず最初に、 Base Color 出力を Desaturation ノードの最初の入力へ入力します。 次に、Material Collection Parameter の出力を Desaturation ノードの Fraction 入力へ接続する必要があります。 接続したら、Desaturation ノードの出力を メインのマテリアル ノード の Base Color 入力に接続します。 最後に、[Apply (適用)] ボタンを押してマテリアルをコンパイルします。 上記を完了すると、マテリアル グラフは以下のようになるはずです。
-
Material Collection Parameter の動作を確認するには、まず Material Collection Parameter を使っているマテリアルをワールドのオブジェクトのどれかに適用してみる必要があります。 マテリアルを適用したら、 コンテンツ ブラウザ の マウスの左ボタン で Material Collection Parameter を ダブルクリック して開きます。 開いたら、 Global_Desatration の デフォルト値 を 0 から 1 に変更して、適用中のマテリアルのあるオブジェクトが (この場合だと) 次の例のように青からしろへ行っているのが確認できます。
ブループリントで Material Parameters Collections を使う
Material Collection Parameter パラメータの操作方法の 1 つは、ブループリントの使用です。 ブループリントによる操作は非常にパワフルです。なぜなら、ゲームプレイ中ずっと必要に応じて Material Collection Parameter を調整できるからです。
-
開始前に、まず以下のことを行ってください。 最初に、マテリアルから マテリアル インスタンス を作成しておきます。 この例では、上記で作成されたマテリアルに基いて 3 つのマテリアル インスタンスを作成する必要があります。 作成したマテリアル インスタンスは色を調整して、識別できるようにしておきます。 この例では、マテリアル インスタンスに赤、緑、青の色を付けました。 上記を完了すると、コンテンツ ブラウザ は以下のようになるはずです。
-
マテリアル インスタンスを作成したら、コンテンツ ブラウザ の マウスの左ボタン でマテリアル インスタンス をクリックして、シーンのオブジェクト上にドラッグし、シーンの様々なオブジェクトにそれらを適用していきます。 マテリアル インスタンスを使用したいオブジェクトにマウスを当てたら、マウスの左ボタン をリリースして、そのオブジェクトにマテリアル インスタンスを適用します。 以下のようになります。
-
マテリアル インスタンスをレベルのオブジェクトに適用したら、次は Level ブループリントを開いてみましょう。 Level ブループリントを開くには、メイン ツールバーの [Blueprints] をクリックし、ドロップダウン メニューから [Level Blueprint] を選びます。
- Level ブループリントが開いたら、ノードを配置していきます。ここの例では、以下のノードと変数を使用します。
- Left Mouse Button Pressed
- Timeline
- Set Scalar Parameter Value
- Float Variable Named:Des
完了したら、ブループリント グラフは以下のようになるはずです。
-
ブループリント グラフにノードを正しく追加したら、次はそれらの設定を行います。 まず最初に、 Set Scalar Parameter Value の設定を行います。 この設定をするには、使用する Material Parameter Collection をまず最初に定義します。 定義するための手順は、まず マウスの左ボタン を使って Collection 入力をクリックして、使いたい Material Parameter Collection を選択します。 次に、操作したい パラメータ名 を選択します。この例では Global_Desaturation になります。完了すると、Set Scalar Parameter Value ノードは以下のようになるはずです。
-
次に、マウスの左ボタン が押されるとカラーが徐々に変わり、ボタンを放すと元に戻るように タイムライン を設定する必要があります。 タイムラインを設定するには、まずタイムライン上で マウスの左ボタン で ダブルクリック して開きます。 その結果、以下のような画面が表示されるはずです。
- タイムラインを開いたら、アクティベート時に実行するためのデータを与える必要があります。
まず、[Add Float Track (Float トラックを追加)] アイコンをクリックして、タイムラインに Float トラック を追加します。
次に マウスの右ボタン を使って薄いグレーの部分をどこかクリックし、メニューから [Add Key (キーを追加)] を選んで、キー トラックを 2 つ追加します。
追加する 2 つのキーは、 1 つが 0 タイムで値が 0 、もう 1 つはタイム 1 で値が 1 です。
キー ポイントを追加したら、その役目が分かるように名前を付けておきましょう。ここでは、「Des_Amount」 という名前を使用します。
完了すると以下のようになります。
-
タイムライン を正しく設定したら Timeline メニューを閉じて Level ブループリント の イベント グラフ に戻ります。 Level ブループリントが利用できるようになったので、次は全てのノードを接続していきます。 完了すると、ブループリントは以下のようになるはずです。
-
接続がすべて完了したら、[Compile] ボタンを押し、必ず Level ブループリントを コンパイル してからブループリント エディタを終了してください。 ブループリント エディタを終了したら、変更がゲームでどのような感じになっているかテストしてみます。手順は、メイン ツールバー上の [Play (プレイ)] アイコンを押すだけです。 [Play (プレイ)] を押すと、レベルが実行中の新規ウィンドウが表示されます。 動作中の Material Collection parameter を確認するには、マウスの左ボタン ボタンを長押しします。 長押しすると、シーンのマテリアルの色が元の色からグレーに変わるのが分かります。 マウスの左ボタン をはなすと、マテリアルが元の色に戻ります。
制限およびパフォーマンスの特徴
マテリアルは最大で 2 つの異なる MaterialParameterCollection を参照することができます。通常はコレクションの 1 つをゲーム全体の値として使用し、 その他は、レベル固有のパラメータとして使用されます。コレクションは最大で 1024 のスカラーパラメータと、 1024 の ベクター パラメータを持つことができます。
コレクションのパラメータ数の修正は、コレクションを参照している全マテリアルの再コンパイルの要因となります。 パラメータを多数追加する必要がある場合、あらかじめパラメータを空のマップへ追加しておくと作業を短縮できます。
パラメータ名を変更した場合、そのパラメータを参照しているマテリアルは予想通りの機能を継続します。その一方で、 パラメータを参照しているブループリントは壊れてしまいます。修正するにはコレクションを操作するブループリント機能の ParameterName を 再び割り当てなくてはいけません。
いろいろなマテリアル インスタンスのパラメータを設定するよりも、 MaterialParameterCollection の値を更新しておく方が効率が良いです。