Language:
Page Info
Tags:
Skill Level:
Engine Version:

マテリアル インスタンスの作成と使用方法

UE4 で標準マテリアルを作成、セットアップ、および微調整することは、非常に時間のかかるプロセスです。 このプロセスをスピードアップし、合理化するためにアンリアル エンジン 4 では マテリアル インスタンス と呼ばれる特殊タイプのマテリアルを用意しています。 以下の操作ガイドでは、プロジェクトでマテリアル インスタンスをセットアップし、使用する方法について学習します。

マテリアルのインスタンス化

マテリアルのインスタンス化は、親マテリアルとして参照されるひとつのマテリアルを作成する方法です。親マテリアルは、多様な外観のマテリアルを作るベースとして利用できます。 こうしたフレキシビリティを実現するために、マテリアルのインスタンス化では、継承という概念を採用しています。 継承とは、単に親が持つプロパティをその子に与えることを意味します。 以下は、マテリアルの継承が実際に機能している例です。

Material_Instancing_Explanation.png

番号

説明

1:

これは親マテリアルです。右側にある 2 つのマテリアル インスタンスがプロパティを継承します。また、このマテリアルでは 4 つのテクスチャが使用されていることがわかります。

2:

親マテリアルとして使用すべきマテリアルがマテリアル インスタンスで設定される場所です。ここで使用されているマテリアルを変更すると、マテリアル インスタンスがどのように機能するかを完全に変えることができます。

3:

ここで使用するテクスチャを変更することで、マテリアル インスタンスの外観を完全に変えることができます。4 つのテクスチャ入力があるのがわかります。こうした入力が存在するのは、マテリアル インスタンスが左側の親マテリアルから機能を継承したからです。

マテリアル パラメータ

マテリアル インスタンスの様々なパラメータを変更できるようにするために、マテリアル グラフで パラメータ ノード と呼ばれる様々なタイプのノードを使用する必要があります。 パラメータ ノード は通常のマテリアル式ノードのような外観であり、機能も同様です。主な違いはパラメータ ノードはマテリアル インスタンスにどのように機能するかを指示するために使われるという点です。 マテリアル パラメータを使用することは、マテリアルをマテリアル インスタンスと相互作用させる唯一の方法です。

ノードをパラメータ ノードに追加 / 変換する

2 つの全く違う方法で、パラメータ ノード をマテリアルに追加できます。

  • マテリアル パレットから追加 - Material PaletteParameter という語を使って検索すると、利用可能なすべての Parameter ノードが見つかります。続いてこうしたノードをパレットからドラッグして、マテリアル グラフにドロップできます。

    Materails_Instances_Search_For_Pram_Nodes.png

  • ノードを変換する - マテリアル グラフ 内でノード上を 右クリック して、[Convert To Parameter (パラメータへ変換)] オプションを以下のように選択します。

すべてのマテリアル ノードに対してこれを行えるわけではないことに注意してください。ノード上で 右クリック しても [Convert To Parameter (パラメータへ変換)] オプションが見つからなければ、そのノードはパラメータ ノードに変換できません。

マテリアル インスタンスの作成

以下のセクションでは、上記で説明した方法を使用して独自のマテリアル インスタンスを作成します。

  1. 最初にすべきことは、作業対象の新規マテリアルを作成することです。コンテンツ ブラウザ右クリック し、[Create Basic Assets (基本アセットを作成)] リストから [Material] を選んで新規マテリアルを作成します。

    Materails_Instances_Creat_New_Material.png

  2. これでマテリアルが作成されたので、名前を付けます。この例では、「Material_Master」 と名前を付けました。

    Materails_Instances_Named_Material.png

  3. マテリアルに名前を付けたら、コンテンツ ブラウザ で探して、その上で マウスの左ボタンダブルクリック して開きます。マテリアルが開いたら、パレットで以下のマテリアル式ノードを検索してマテリアル グラフに追加します。

    • Constant 3 Vector x 1

    • Constant Node x 1

    • Scalar Parameter x 1

  4. マテリアル ノードを配置したら、Main Material ノードの各スロットに接続します。ここの例では、以下のスロットを使用します。

    • Base Color

    • Metallic

    • Roughness

  5. すべてを接続したら、いくつかのマテリアル ノードを マテリアル インスタンス で使用できるように パラメータ ノード に変換します。これを行うには、変換したいマテリアル ノード上で 右クリック して、次に 右クリック メニューから [Convert to Parameter (パラメータへ変換)] を選択します。

  6. ノードをパラメータ ノードに変換したので、マテリアル インスタンスで使用する際に各ノードが何を行うかがわかるようにラベル付けします。パラメータ ノードに名前を付けるには、マテリアル グラフ内でパラメータ ノードを マウスの左ボタン で選択し、[Parameter Name] セクションで パラメータ名 として使用する名前を入力します。ここの例では、以下の名前を使用します。

    • Base Color

    • Metallic

    • Roughness

    ノードに付けた名前が、実際にノードが行うことを適切に表すようにします。こうすることで、マテリアルとマテリアル インスタンスの間を行ったり来たりしてノードが行う機能を確認する必要がなくなります。

  7. ノードを作ったら、[Apply (適用)] ボタンを押してマテリアルをコンパイルするようにします。正しくコンパイルされると、[Apply (適用)] ボタンは以下のようにグレイアウトされます。

    Materails_Instances_Complied.png

  8. マテリアルがコンパイルされたので、そこからマテリアル インスタンスを作ります。これを行うには、コンテンツ ブラウザ でマテリアルを 右クリック し、[Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。

    マテリアル インスタンスの名前は、作成元のマテリアルの名前から派生します。作成中にマテリアル インスタンスの名前を変更するか、またはマテリアルを選択し、キーボードで F2 を押して、付けたい名前を入力します。

  9. 新規作成されたマテリアル インスタンスを コンテンツ ブラウザ 内で マウスの左ボタンダブル クリック して開きます。開くと、以下のようになります。

    Materails_Instances_Instance_Editor.png

  10. マテリアル インスタンス エディタ を開くと、必要に応じてパラメータを調整できます。パラメータを調整するには、最初にそれを有効にします。これは、パラメータ名の左にあるボックスでクリックして行います。パラメータが有効になると、名前はグレイアウトされなくなり、名前の左側のボックスにチェックマークが入ります。

  11. パラメータが有効にされると、マテリアルを再コンパイルする必要なく、それらを調整し、リアルタイムで結果を見ることができます。

マテリアル内でパラメータに設定した名前は、マテリアル インスタンス内で見る名前が反映されます。たのため、パラメータが実際に行うことに対応した名前を付けることが重要なのです。 Materails_Instances_Names_Relation.png

動作中のマテリアル インスタンス

マテリアル インスタンス システムは、外観が異なるが類似の制御を持つ非常に多くのマテリアルが必要な場合、またはゲームプレイ中に特定の方法でマテリアルを制御する必要がある場合に威力を発揮します。 以下の例では、前の手順で作成された親マテリアルに基づいた 3 種類のインスタンス化マテリアルを作ります。 次に親マテリアルを変更し、親に加えた変更がどのように子に影響を及ぼすかを見ます。

  1. まず、上記で作成した Material_Master マテリアルを親マテリアルとして使用してマテリアル インスタンスをさらにいくつか作ります。 これを行うには、コンテンツ ブラウザMaterial_Master 上で 右クリック し、メニューから [Create New Material Instance (マテリアルインスタンスの新規作成)] を選択します。 マテリアル インスタンスが合計 3 つになるまで、以上の操作を 2 回行います。

    Materails_Instances_Create_3_New_MI.png

  2. これで 3 つのマテリアル インスタンスを追加作成したので、それらを開いて パラメータ の調整を開始します。 マテリアル インスタンスのひとつを開くには、コンテンツ ブラウザ 内でそのマテリアル インスタンス上で マウスの左ボタンダブルクリック します。 マテリアル インスタンスが開いたら、カラー、ラフネス、メタリックの値を必要に応じて設定できます。 この例では、赤、緑、青を、他の入力のための様々な数字を持つ色として使用します。 この例で使用したすべての数字は以下の画像に表示されています。

  3. マテリアル インスタンスを作成し、いくつかのデータを入力した状態で、ワールド内のオブジェクトに適用することができます。 この例では、マテリアル インスタンスを スターター コンテンツShapes フォルダに入っているいくつかの基本的メッシュに適用します。

  4. マテリアル インスタンス システムが実際に機能している様子を見るには、Master_Material を開きます。 Master_Material が開いたら Scalar Parameter Nodes のひとつを選択し、キーボードで CRTL+ W を押して複製します。 これでノードが複製されました。名前を 「Specular」 に変更し、デフォルト値を 0.5 に設定します。 スカラー パラメータ ノードの出力を Specular 入力に接続し、マテリアルをコンパイルします。

  5. マテリアルをコンパイルしたら マスター マテリアル を閉じて Red Material Instance を開くことができます。 開くと、Specular の新しい入力がどのようになっているかがわかります。 BlueGreen の両方のマテリアル インスタンスを確認してください。両方とも Specular の新しい入力があることがわかります。 これこそマテリアル インスタンスの真価です。親マテリアルに加えた変更が常に子に継承されます。

マテリアル インスタンスの親マテリアルの変更

マテリアル インスタンスの親として使用されているマテリアルは、マテリアル インスタンス エディタで新しい親を設定して簡単に変更できます。 これは、マテリアル インスタンスを開き、[Details (詳細)] パネルの [General (一般)] セクションで、[Parent] セクションにあるマテリアルを、自分で選んだ新しいマテリアルに変更するだけで行うことができます。 これを行った後、新しいマテリアルのオプションに応じて、マテリアル インスタンス エディタは、新しい親マテリアルのオプションを反映するように変更します。 以下は、上記のマテリアルを親として使用して作成されたマテリアル インスタンスです。

Material_Instancing_Change_Parent.png

以下は、同じマテリアル インスタンスですが、今回は親マテリアルが変更されています。 テクスチャ入力が少なくなり、新しい数値入力が追加されているのがわかります。

Material_Instancing_Change_Parent_Results.png

まとめ

マテリアルのインスタンス化は、プロジェクトのあらゆる側面で使用できる強力なツールです。 武器やプロップにバリエーションを加えたり、アーティストが利用可能なマテリアルをうまく活用できるようにしたり、 マテリアル インスタンスはマテリアルの作成方法とプロジェクト内での使用方法を合理化し、統一するのに非常に役立ちます。

Tags