Unreal Engine で標準的なマテリアルを作成および編集するのは非常に時間がかかるプロセスです。このマテリアル作成ワーフクローを迅速化して、合理化するため、Unreal Engine では マテリアル インスタンス という特殊なタイプのマテリアルを使用することができます。このチュートリアルでは、プロジェクトでマテリアル インスタンスをセットアップし、使用する方法について学習します。
マテリアルのインスタンス化
マテリアルのインスタンス化は、親マテリアルを作成する 1 つの手段です。親マテリアルは、多様な外観の子 (マテリアル インスタンス) を作成するベースとして使用できます。
こうした柔軟性を実現するために、 マテリアルのインスタンス化 では、継承 という概念を活用します。継承とは、親マテリアルのプロパティがその子に引き継がれることを意味します。親マテリアルで パラメータ として指定されているプロパティは、マテリアル インスタンス エディタ でアーティストに公開されます。
マテリアル インスタンスを使用すると、単一のベース マテリアルから多岐にわたるバリエーションを作成できます。
ステップのプロセスでマテリアル インスタンスを作成する
まず、インスタンスの親マテリアルとして使用する パラメータ化された マテリアルを作成します。
コンテンツ ブラウザで マテリアル インスタンス定数 を作成します。これで、マテリアル インスタンス エディタでマテリアスをカスタマイズできます。
マテリアルのインスタンス化に関するその他の背景知識のついては、 こちらの概要を参照してください 。
パラメータ化されたマテリアルを作成する
マテリアル インスタンスは、親マテリアルのすべての属性を継承します。ただし、マテリアル インスタンス エディタで、これらの属性のすべてをデフォルトでカスタマイズできるわけではありません。
マテリアルの属性をマテリアル インスタンスで編集可能にするには、通常の マテリアル式 ではなく、パラメータ ノードを使用して、特定の属性を パラメータ として指定する必要があります。
パラメータ ノードをマテリアル グラフに追加するには、2 とおりの方法があります。
マテリアル パレットからパラメータ ノードを追加する
マテリアル パレット か、マテリアル エディタの右クリック メニューで「parameter」を検索すると、使用可能なすべてのパラメータ ノードが見つかります。
パレットでこれらのパラメータ ノードをドラッグアンドドロップするか、または右クリックメニューこれらを選択すると、マテリアル グラフに追加できます。
パラメータのショートカット
最もよく使用されている次の 2 つのマテリアル パラメータには、マテリアル エディタでキーボード ショートカットが設定されています。
スカラー パラメータ - マテリアル グラフで S キー を押しながら 左クリック すると、スカラー パラメータが配置されます。スカラー パラメータは定数のパラメータ化されたバージョンで、1 つの数値が格納されています。
ベクター パラメータ - マテリアル グラフで V キー を押しながら 左クリック すると、ベクター パラメータが配置されます。ベクター パラメータは Constant 4 Vector のパラメータ化されたバージョンで、4 つの浮動小数点値が格納されています。
ショートカットまたはパレットを使用すると、スカラー パラメータをマテリアル グラフに配置することができます。
パラメータに「Roughness」という名前を付けて、その名前に一致する マテリアル入力 に接続します。
デフォルト値および値の範囲
パラメータにデフォルト値を設定したり、値の範囲を制限する場合は、[Details (詳細)] パネルで実行することができます。
たとえば、Roughness 入力は 0 ~ 1 の値を受け入れます。Roughness パラメータが常にこの有効な範囲内にあるようにするには、Slider Min 値および Slider Max 値を 「0」と「1」に設定します。
Roughness のデフォルト値を 0 以外に設定する場合は、その値を Default Value フィールドに入力します。
Roughness パラメータを選択し、Ctrl+D キーを押すとノードが複製されます。2 つ目のスカラー パラメータの名前を「Metallic」に変更して、該当する入力に接続します。グラフは次のようになります。
ノードをパラメータに変換する
標準のマテリアル式を既存のマテリアル グラフ内のパラメータに変換することもできます。
デモのため、マテリアル グラフに Constant3Vector ノードを配置します。これは標準の (パラメータ化されていない) マテリアル式で、多くの場合、マテリアルのベース カラーの定義に使用されます。
このノードをパラメータに変換するには、ノードを 右クリック して、コンテキスト メニューから[Convert to Parameter (パラメータに変換)] を選択します。
なお、パラメータには、BaseColor のような、一意でわかりやすい名前を付けてください。名前指定フィールドは、ノードを変換すると、自動的に選択されます。
この図の Default Value フィールドで色を変更するか、BaseColor ノードをダブル クリックしてカラー ピッカーを開くことができます。
Unreal Engine のすべてのマテリアル ノードをパラメータ化することはできないものの、パラメータ化可能なマテリアル式では、右クリック メニューで [Convert To Parameter] オプションを使用することができます。
パラメータ化されたマテリアルの例
このマテリアル グラフには、現在、BaseColor に接続されたベクター パラメータと、Metallic 入力と Roughness 入力に接続された 2 つのスカラー パラメータがあります。
マテリアル インスタンスを作成すると、これら 3 つのパラメータを使用して、マテリアルの色、ラフネス、メタリックの各プロパティを変更することができます。
マテリアル エディタ の左上にある [Apply (適用)] をクリックして、マテリアルをコンパイルし、[Save (保存)] をクリックします。
マテリアル インスタンスの作成
パラメータ化されたシンプルなマテリアルを作成できたので、マテリアル インスタンスを作成して、 マテリアル インスタンス エディタ でカスタマイズすることができます。
マテリアル インスタンスを作成するには、コンテンツ ブラウザでマテリアルを右クリックして、メニューから [Create Material Instance (マテリアルインスタンスの作成)] を選択します。
マテリアル インスタンスの名前は、作成元のマテリアルの名前から派生します。マテリアル インスタンスを選択して F2 キーを押すか、名前フィールドを クリック すると、名前を変更できます。
マテリアル インスタンスを編集する
コンテンツ ブラウザでマテリアル インスタンスを ダブルクリック して、マテリアル インスタンス エディタ を開きます。
マテリアル インスタンス エディタは、マテリアルのパラメータをカスタマイズして、親マテリアルのさまざまな外観のバリエーションを生成するインターフェースです。
マテリアル パラメータを調整する
マテリアル パラメータは、マテリアル インスタンス エディタの右側の [Details] パネルにあります。なお、これらのパラメータは、元のマテリアル グラフのパラメータ ノードの名前を使用しています。
パラメータを編集するには、次の手順を実行します。
パラメータの横にあるチェックボックスをオンにすると、パラメータを編集できるようになります。
フィールドに新しい値を入力するか、クリックしてドラッグし、スライダで値を調整します。ベクター パラメータの場合、色見本をクリックして、カラー ピッカーを開きます。
パラメータをデフォルト値にリセットするには、以下の図の矢印アイコンをクリックします。
パラメータを調整すると、マテリアル インスタンス エディタ、およびレベルで (そのマテリアルが現在いずれかのアクタに適用されている場合)、マテリアルのプレビューがリアルタイムに更新されます。
パラメータ グループを使用する
パラメータを パラメータ グループ に分類することで、マテリアル インスタンスの編成と読み取りやすさを向上させることができます。
上の例ではパラメータが 3 つのみであるため、読み取りやすいものの、パラメータ グループを使用しない場合、パラメータ化されているプロパティを多数含むマスター マテリアルは操作効率が低下することがあります。
下のスライダは、グループを使用しているマテリアル インスタンスと、使用していないマテリアル インスタンスを示しています。パラメータ グループを使用していない例では、スカラー パラメータが整理されていない単一のリストで表示されます。パラメータ グループを使用しているインスタンスは、マテリアル属性ごとにきちんと整理されています。
パラメータ グループの使用方法
パラメータ グループは、マテリアル インスタンス内ではなく、親マテリアル内で設定されます。これはマテリアル エディタの [Details] パネルで実行されます。
マテリアル グラフで Material parameter ノードを選択します。
[Details] パネルで、Group フィールドに名前を入力します。グループの名前は希望するとおりに付けることができます。ただし、制御するマテリアル属性でパラメータをグループ化することをお勧めします。
1 つのマテリアル パラメータ式にパラメータ グループ名を割り当てると、その名前が Group フィールドの横にあるドロップダウン メニューに表示されます。
その他のパラメータについては、新しいグループ名を入力するか、ドロップダウン メニューから既存のパラメータ グループの 1 つを選択することができます。
グループ内のパラメータを並べ替える
Sort Priority フィールドを使用すると、グループ内のパラメータをリストする順序を変更することができます。デフォルトでは、すべてのパラメータはアルファベット順に表示されます。これは、マテリアル インスタンス エディタでの順序が使いづらかったり、非効率であったりする場合があります。下のスライダでは、UV タイリング コントロールとオフセット コントロールがアルファベット順に表示されると順序の整合性が保たれなくなるため、各パラメータに並べ替え優先度の値を割り当てることで、操作性が改善されます。
パラメータの順序を変更するには、ノードを選択して、[Details] パネルの Sort Priority フィールドに新しい値を入力します。
パラメータ グループを並べ替える
デフォルトでは、パラメータ グループはマテリアル インスタンス エディタでアルファベット順に表示されます。
次の 2 つの方法で、パラメータ グループの順序を変更できます。1 つ目の方法は、グループ名に数字を追加することです。
Megascans の親マテリアルは、この方法を使用しており、パラメータ グループに 00 ~ 07 の番号が付けられています。
これにより、パラメータ グループはメイン マテリアル ノードで表示される順序と同じ順序で表示されます。
Group Sort Priority
また、[Details] パネルの Group Sort Priority プロパティを使用して、パラメータ グループの順序を変更することもできます。このプロパティは、マテリアル インスタンスではなく、親マテリアルにあります。
マテリアル グラフのすべてのノードの選択を解除して、そのマテリアルのプロパティにアクセスします。
[Details] パネルで、Group Sorting、Parameter Group Data の順に展開します。
このセクションの列には、マテリアルのすべてのパラメータが表示されます。各インデックスを展開し、Group Sort Priority を変更してグループの順序を変更します。
マテリアル インスタンスの親マテリアルを変更する
マテリアル インスタンス エディタでは、マテリアス インスタンスが使用している親マテリアルを簡単に変更できます。
親マテリアルを変更するには、マテリアル インスタンス エディタでマテリアス インスタンスを開きます。[Details] パネルの [General (一般)] セクションで、Parent プロパティを確認します。
ドロップダウン メニューを使用して、他の親マテリアルを検索して選択します。また、コンテンツ ブラウザでマテリアルを選択して [Use Selected Asset from the Content Browser (コンテンツ ブラウザから選択したアセットを使用する)] ボタン (左向き矢印) をクリックすることもできます。
なお、親マテリアルを変更すると、マテリアル インスタンスの外観やプロパティが完全に変更される可能性があります。以前使用していたパラメータは、新しい親では使用できなくなることがあります。
たとえば、ドロップダウン リストから M_Metal_Gold マテリアルを選択すると、M_Parameterized の例にあった 3 つのパラメータ (Roughness、Metallic、Base Color) はこの Gold インスタンスでは使用できなくなります。
まとめ
マテリアルのインスタンス化は、プロジェクトのあらゆる側面で使用できる強力なツールです。 武器やプロップにバリエーションを加えたり、アーティストが利用可能なマテリアルをうまく活用できるようにしたり、 マテリアル インスタンスはマテリアルの作成方法とプロジェクト内での使用方法を合理化し、統一するのに非常に役立ちます。