Choose your operating system:
Windows
macOS
Linux
Unreal Engine 4 で標準マテリアルを作成、セットアップ、および微調整することは、非常に時間のかかるプロセスです。 このプロセスのスピードアップと合理化にむけて、UE4 では マテリアル インスタンス と呼ばれる特殊タイプのマテリアルを用意しています。 以下の操作ガイドでは、プロジェクトでマテリアル インスタンスをセットアップし、使用する方法について学習します。
マテリアルのインスタンス化
マテリアルのインスタンス化は、親マテリアルとして参照されるひとつのマテリアルを作成する方法です。親マテリアルは、多様な外観のマテリアルを作るベースとして利用できます。こうしたフレキシビリティを実現するために、マテリアルのインスタンス化では、継承という概念を採用しています。継承とは、単に親が持つプロパティをその子に与えることを意味します。以下は、マテリアルの継承が実際に機能している例です。
クリックしてフルサイズで表示。
番号 |
説明 |
---|---|
1 |
右側にある 2 つのマテリアル インスタンスの親マテリアルです。この親マテリアルには 4 つのテクスチャが使用されていることがわかります。 |
2 |
親マテリアルとして使用すべきマテリアルがマテリアル インスタンスで設定される場所です。ここで使用されているマテリアルを変更すると、マテリアル インスタンスの動作の仕方を変えることができます。 |
3 |
ここで使用するテクスチャを変更することで、マテリアル インスタンスの外観を完全に変えることができます。マテリアル インスタンスが左側の親マテリアルから機能を継承したため、4 つのテクスチャ入力があるのがわかります。 |
マテリアル パラメータ
マテリアル インスタンスの様々なパラメータを変更できるようにするために、マテリアル グラフで パラメータ ノード と呼ばれる様々なタイプのノードを使用する必要があります。 パラメータ ノード は通常のマテリアル式ノードのような外観であり、機能も同様です。主な違いはパラメータ ノードはマテリアル インスタンスにどのように機能するかを指示するために使われるという点です。 マテリアル パラメータを使用することは、マテリアルをマテリアル インスタンスと相互作用させる唯一の方法です。
パラメータ ノードを マテリアル グラフ に追加する方法は 2 通りあります。
マテリアル パレットからパラメータ ノードを追加する
Material Palette で「Parameter」という語を使って検索すると、利用可能なすべての Parameter ノードが見つかります。これらのたノードをパレットからドラッグして、マテリアル グラフにドロップできます。
ノードを変換する
マテリアル グラフ 内でノード上を 右クリック して、[Convert To Parameter (パラメータへ変換)] オプションを以下のように選択します。
すべてのマテリアル ノードに対してこれを行えるわけではないことに注意してください。ノード上で右クリックしても [Convert To Parameter (パラメータへ変換)] オプションが見つからなければ、そのノードはパラメータ ノードに変換できません。
マテリアル インスタンスの作成
以下のセクションでは、上記で説明した方法を使用して独自のマテリアル インスタンスを作成します。
作業対象の新規マテリアルを作成します。コンテンツ ブラウザ で 右クリック し、[Create Basic Assets (基本アセットを作成)] > [Material] を選びます。
新しいマテリアルに 「Material_Master」 と名前を付けます。
コンテンツ ブラウザ から名付けたマテリアルを探して、マテリアル グラフでダブルクリックして開きます。マテリアルが開いたら、パレットで以下のマテリアル式ノードを検索してマテリアル グラフに追加します。
Constant 3 Vector
Constant Node
Scalar Parameter
Material Expression ノードを配置したらメインの Material ノードの各ピンに接続します。ここの例では、以下のスロットを使用します。
Base Color
Metallic
Roughness
すべてを接続したら、いくつかのマテリアル ノードを マテリアル インスタンス で使用できるようにパラメータ ノードに変換します。これを行うには、変換したいマテリアル ノード上で 右クリック して、次に 右クリック メニューから [Convert to Parameter (パラメータへ変換)] を選択します。
ノードをパラメータ ノードに変換したので、マテリアル インスタンスで使用する際に各ノードが何を行うかがわかるようにラベル付けします。パラメータ ノードに名前を付けるには、マテリアル グラフ内でパラメータ ノードをマウスの左ボタン選択し、[Parameter Name] セクションでパラメータ名として使用する名前を入力します。ここの例では、以下の名前を使用します。
Base Color
Metallic
Roughness
ノードに付けた名前が、実際にノードが行うことを適切に表すようにします。こうすることで、マテリアルとマテリアル インスタンスの間を行ったり来たりしてノードが行う機能を確認する必要がなくなります。
ノードを作ったら、[Apply (適用)] ボタンを押してマテリアルをコンパイルするようにします。正しくコンパイルされると、[Apply (適用)] ボタンは以下のようにグレイアウトされます。
マテリアルがコンパイルされたので、そこからマテリアル インスタンスを作ります。これを行うには、コンテンツ ブラウザ でマテリアルを 右クリック し、[Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。
マテリアル インスタンスの名前は、作成元のマテリアルの名前から派生します。作成中にマテリアル インスタンスの名前を変更するか、またはマテリアルを選択し、キーボードで F2 を押して、付けたい名前を入力します。
新規作成されたマテリアル インスタンスを コンテンツ ブラウザ 内でダブル クリックして開きます。開くと、以下のようになります。
マテリアル インスタンス エディタ を開くと、必要に応じてパラメータを調整できます。パラメータを調整するには、最初にそれを有効にします。これは、パラメータ名の左にあるボックスでクリックして行います。パラメータが有効になると、名前はグレイアウトされなくなり、名前の左側のボックスにチェックマークが入ります。
パラメータが有効にされると、マテリアルを再コンパイルする必要なく、それらを調整し、リアルタイムで結果を見ることができます。
マテリアル内でパラメータに設定した名前は、マテリアル インスタンス内で見る名前が反映されます。たのため、パラメータが実際に行うことに対応した名前を付けることが重要なのです。
動作中のマテリアル インスタンス
マテリアル インスタンス システムは、異なる外観で類似する制御を持つ非常に多くのマテリアルが必要な場合、またはゲームプレイ中に特定の方法でマテリアルを制御する必要がある場合に威力を発揮します。 以下の例では、前の手順で作成された親マテリアルに基づいた 3 種類のインスタンス化マテリアルを作ります。 次に親マテリアルを変更し、親に加えた変更がどのように子に影響を及ぼすかを見ます。
まず、上記で作成した Material_Master マテリアルを親マテリアルとして使用してマテリアル インスタンスをさらにいくつか作ります。 これを行うには、コンテンツ ブラウザ の Material_Master 上で右クリックし、メニューから [Create New Material Instance (マテリアルインスタンスの新規作成)] を選択します。 マテリアル インスタンスが合計 3 つになるまで、以上の操作を 2 回行います。
これで 3 つのマテリアル インスタンスを追加作成したので、それらを開いてパラメータ の調整を開始します。 マテリアル インスタンスのひとつを開くには、コンテンツ ブラウザ 内でダブルクリックします。 マテリアル インスタンスが開いたら、Color 値、Roughness 値、Metallic 値を設定することができます。 この例では、赤、緑、青 を、他の入力のための様々な数字を持つ色として使用します。 この例で使用したすべての数字は以下の画像に表示されています。
クリックしてフルサイズで表示。
マテリアル インスタンスをオブジェクトに適用することができます。 この例では、マテリアル インスタンスを スターター コンテンツ の「Shapes」フォルダに入っているいくつかの基本的メッシュに適用します。
クリックしてフルサイズで表示。
マテリアル グラフで Master_Material を開きます。 Scalar Parameter ノード の 1 つを選択して CRTL + W で複製します。 複製されたノードに「Specular」という名前を付けてデフォルト値を 0.5 に設定します。 Scalar Parameter ノードの出力を Specular 入力ピンにつないでマテリアルをコンパイルします。
クリックしてフルサイズで表示。
マテリアルをコンパイルしたら Master_Material を閉じて Red Material Instance を開きます。 開くと、Specular の新しい入力がどのようになっているかがわかります。 Blue と Green の両方のマテリアル インスタンスを確認してください。両方とも Specular の新しい入力があることがわかります。 ここがマテリアル インスタンスの真価が存在する場所です。親マテリアルに加えた変更が常に子に継承されます。
クリックしてフルサイズで表示。
マテリアル インスタンスの親マテリアルの変更
マテリアル インスタンスの親として使用されているマテリアルは、マテリアル インスタンス エディタで新しい親を設定して簡単に変更できます。 マテリアル インスタンスを開き、[Details (詳細)] パネルの [General (一般)] セクションで、[Parent] セクションにあるマテリアルを変更します。 これを行った後、新しいマテリアルのオプションに応じて、マテリアル インスタンス エディタは、新しい親マテリアルのオプションを反映するように変更します。 以下は Parent プロパティで表示された親マテリアルを使って作成されたマテリアル インスタンスです。
以下は、同じマテリアル インスタンスですが、今回は親マテリアルが変更されています。 テクスチャ入力が少なくなり、新しい数値入力が追加されているのがわかります。
まとめ
マテリアルのインスタンス化は、プロジェクトのあらゆる側面で使用できる強力なツールです。 武器やプロップにバリエーションを加えたり、アーティストが利用可能なマテリアルをうまく活用できるようにしたり、 マテリアル インスタンスはマテリアルの作成方法とプロジェクト内での使用方法を合理化し、統一するのに非常に役立ちます。