マテリアルの基本概念

UE4 のマテリアルとその機能に関する入門書

Windows
MacOS
Linux

IntroToMaterialsHeader.png

マテリアルは、作成したいオブジェクトやレベルの外観を実現するために最も重要な側面の 1 つです。このドキュメントは独自のマテリアル作成を始めるにあたり、マテリアルの概要を迅速な方法で紹介します。

アンリアルエンジンの以前のイタレーションによるマテリアル作成方法に既に慣れている場合はクイックスタートガイドの参照をお勧めします。物理ベースのマテリアルシステムを最大限に活用するために必要な主要プロパティを紹介します。

マテリアル式ノードとネットワーク

マテリアルについて最初に知っておく最も重要なことは、マテリアルはコードで構成されているわけではなく、マテリアルエディタ内のビジュアル スクリプト ノード (マテリアル式) のネットワークを通じて構成されている点です。それぞれのノードは、特定のタスクの実行を意図した HLSL code のスニペットを格納します。つまり、マテリアルを構成しながらビジュアルスクリプトを使用して、HLSL コードを作成しています。

WoodFloor.png

これは、硬材のフロアを定義している、非常にシンプルなネットワークの例です。ただし、マテリアル式ネットワークをここまでシンプルに構築する必要はありません。マテリアル内に数十ものマテリアル式ノードが、あるのが一般的です。

マテリアル式ノードに関する全てのドキュメントは マテリアル式のリファレンス から参照出来ます。

色と数値の設定

ご存知かもしれませんが、デジタル画像に関する色は 4 つの主要チャンネルに分類されます。実際には以下の 4 種類のみです。

R - Red

G - Green

B - Blue

A - Alpha

全てのデジタル画像は、ピクセルごとにこのいずれかのチャンネルの値を数値で表します。マテリアルのほとんどの作業は、一連の環境や数式に基づいてこれらの数値を単に操作しています。

アンリアルエンジンは、色のデータを保存するために浮動小数点値を使用します。これは、一部の画像編集アプリケーションで使用する 0 から 255 の値の代わりに、各チャンネルの値は 0.0 から 1.0 の範囲の値であることを意味します。値は常にオーバードライブできることに留意してください。時には特別な動作をもたらします。例えば、マテリアルのエミッシブ入力に発光するカラーを送信する場合、1.0 以上の値は発光輝度が向上します。

UE4 でマテリアルについて考慮する際、多数の式はそれぞれのカラーチャンネルで独自の動作をしていることに留意してください。例えば 追加 ノードは2つの入力値を受け取り、チャンネルごとにこれらの入力値を加算します。2 つの RGB カラー (3 チャンネルのベクター値) を一緒に加算すると、以下のような出力になります。(Red1+Red2, Green1+Green2, Blue1+Blue2).

Red 1 + Red 2 = Red 3

Green 1 + Green 2 = Green 3

Blue 1 + Blue 2 = Blue 3

チャンネルごとの操作を実行するノードは、一般に同数のチャンネルを持つ入力値が必要です。例えば、RGB カラーを別の RGB カラーへ 追加 することができますが、RGBカラーにはアルファチャンネルがないため、RGBA (4 チャンネル) カラーを RGB (3 チャンネル) へ加算することはできません。これはエラーとマテリアルのコンパイルができない要因となります。このルールの例外は、入力値の 1 つが単一チャンネル (スカラー) 値であるケースです。この場合、スカラー値はその他全てのチャンネルへ適用されます。例:

  • RGB 値を (0.35、0.28、0.77) 値 1 のスカラー値に加算した場合、結果は以下のようになります。

    0.35 + 1.0 = 1.35

    0.28 + 1.0 = 1.28

    0.77 + 1.0 = 1.77

テクスチャ

このマテリアルの場合、テクスチャは単にある種のピクセルベースのデータを提供する画像です。このデータはオブジェクトの色、光沢度、透過度やその他のいろいろな側面である場合があります。保守的な考えでは「テクスチャ」はゲームモデルに色を適用する方法でした。テクスチャの作成過程はいまだに重要である一方で、テクスチャを最終結果と考えるのではなく、マテリアルの コンポーネント であると捉えることが重要です。

ひとつのマテリアルで、さまざまな目的のためにサンプリングおよび適用された、いくつかのテクスチャを使用する場合があります。例えば、あるひとつのマテリアルが、基本色テクスチャ、スペキュラ テクスチャ、そして法線マップを使用する場合があります。さらに、これらのテクスチャの一つ以上のアルファ チャンネルに格納されているエミッシブやラフネス用のマップを使用する場合もあります。

これらすべてが同じレイアウトを共有しますが、使用する色はテクスチャの目的に応じたものになります。

一度作成されてアンリアル エディタへインポートされると、テクスチャは Texture Sample ノードなど特別な Material Expression ノードを使用してマテリアルへ取り込まれます。上記の硬材を使用したフロア例でこの様子が分かります。これらのノードはテクスチャアセットを参照します。テクスチャアセットはマテリアルの外側に存在し、コンテンツ ブラウザ で単独に検索できます。一部の 3D アプリケーションとは異なり、マテリアルのテクスチャを格納することは決してありません。

テクスチャとテクスチャの作成に関する詳細は、テクスチャ を参照してください。

プロパティと入力値

マテリアルで出来るほとんどのことが、マテリアル自体に設定したさまざまなプロパティで動かされています。これに加えてマテリアルを定義する Material Expression ノードネットワークの作成と接続方法も関係します。アンリアルエンジンが持つパワーを本当の意味で活用する前に、利用可能なプロパティや入力値に目を通すと極めて有益です。以下で検索できます。

マテリアルのプロパティ Material 入力

サーフェスにマテリアルを適用する

マテリアルを適用する手段は、サーフェスのタイプによって多少異なります。

メッシュ

メッシュ (スタティック、ダイナミック、またはスケルタル) へマテリアルを適用するには様々な処理方法があります。メッシュのプロパティにあるマテリアルのエレメント スロットを使用します。これはレベルでメッシュが選択されると [Details (詳細)] パネルに表示されます。またはメッシュを 右クリック してコンテクストメニューからプロパティを選択します。スタティックメッシュ エディタやペルソナ スケルタルメッシュ エディタなど、さまざまなエディタ内で検索することもできます。

  1. マテリアルを適用するメッシュを選択します。

    BoxSelected.png

  2. [Details (詳細)] パネルで、マテリアルエレメントのドロップダウンリストの矢印をクリックします。プロジェクトで利用可能な全てのマテリアルが表示されます。有効なマテリアルは検索バーで検索することができます。

    MaterialDetails.png MaterialDropdown.png GreenBox.png

  3. あるいは コンテンツ ブラウザ で必要なマテリアルを選択して、矢印ボタンをクリックして適用します。

    UseInContentBrowser.png

特定のメッシュのデフォルトにマテリアルを設定したい場合、マテリアルは必ずそのメッシュのプロパティに設定してください。右クリックしてコンテンツ ブラウザ から Properties を選択、もしくは コンテンツ ブラウザ でメッシュをダブルクリックして、表示されるアセットエディタを使用してマテリアルを設定します。

アセットエディタや コンテンツ ブラウザ からマテリアルを変更すると、アセットに変更の影響が及ぶことに留意してください。シーンに既に配置されたメッシュの詳細を利用してマテリアルを変更した場合、配置されたメッシュのコピーのみに影響が及びます。

ブラシ サーフェス

ブラシ サーフェスへのマテリアルの適用は簡単な作業です。

  1. コンテンツ ブラウザ からマテリアルを選択します。

    MaterialSelected.png

  2. マテリアルを割り当てる BSP サーフェスをクリックします。

    BoxPanelSelected.png

  3. [Details (詳細)] パネルで button_ApplyMaterials.png をクリックします。このボタンを押すと、マテリアルがブラシ サーフェスに適用されます。

    AddingMaterialToBox.png RedOnBox.png

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback