マテリアル エディタ でのデータ表現と処理を理解することは、Unreal Engine でのマテリアル作成における主要な概念の一つにつながります。マテリアルの物理的な属性を定義する メイン マテリアル ノードの入力は、それぞれ特定のデータ タイプを受け入れるように設計されています。同様に、マテリアルの構築に使用される多くのマテリアル表現式ノードは、特定の種類のデータを入力として受け取らなかった場合は失敗することになります。
このページでは、マテリアル エディタで利用可能な 4 つのデータ タイプの概要について説明し、これらを使用する一般的な例について紹介します。
浮動小数変数
コンピュータ グラフィックスにおいて、浮動小数 は単一の数値 (正または負) を格納するデータタイプです。「浮動小数」とは「浮動小数点」の短縮形で、値は整数である必要はなく、小数点を含めることができます。例えば、「1.0」や「-0.5」、または「42.0」はすべて浮動小数値です。
極端に言えば、マテリアル エディタのすべてのデータ タイプは浮動小数変数のバリエーションです。それらの違いは格納する値の数にあります。Float (浮動小数) は単一の数値を表し、Float2 は異なる 2 つの浮動小数点値を格納します。例えば、(1.0, 0.5) です。
次は、マテリアル エディタで利用可能な 4 つのデータ タイプを説明した表です。
データ タイプ |
マテリアル表現式 |
データ構造 |
一般的な使用例 |
---|---|---|---|
Float |
定数、スカラー パラメータ |
(r) |
メタリック、ラフネス、算術演算 |
Float2 |
定数 2 ベクター (Constant2Vector) |
(r, g) |
UV または XY 座標、スケール |
Float3 |
定数 3 ベクター (Constant3Vector) |
(r, g, b) |
色 (r, g, b) または 3D 座標 (x, y, z) |
Float4 |
定数 4 ベクター (Constant4Vector)、ベクター パラメータ、テクスチャ |
(r, g, b, a) |
アルファ チャンネルを含む色、テクスチャ (r, g, b, a) |
Float
前述のとおり、Float には単一の浮動小数点値が格納されます。値は正または負のいずれでもよく、小数点を含めることができます。Float は 2 つのマテリアル表現式を使って定義できます。
定数マテリアル表現式 (Constant Material Expression)
Constant Material Expression ノードには単一の定数浮動小数値が格納されます。定数であるため、この値はマテリアルのコンパイル後にも変化しません。次の画像は、「1.0」の値を保持する Constant ノードです。
スカラー パラメータ
スカラー パラメータ も浮動小数値を格納します。定数とは異なり、スカラー パラメータは、マテリアルのコンパイル後またはランタイム時に、マテリアル インスタンス内で変更可能な名前の付いた変数にすることもできます。次の画像は「Roughness」 (ラフネス) という名前のスカラー パラメータを示しており、そのデフォルト値は「0.6」になっています。これを使ってマテリアルのラフネス属性を定義できる一方で、各アーティストはこの値をマテリアル インスタンス内でオーバーライドすることができます。
定数の代わりにスカラー パラメータを使用すべき状況と使用方法については、「インスタンス化マテリアル」ドキュメントを参照してください。
例
メイン マテリアル ノード の特定の入力は浮動小数で定義されています。例えば、Metallic (メタリック)、Specular (スペキュラ)、Roughness (ラフネス) の各 入力 は、0 ~ 1 の範囲の浮動小数値を受け入れます。そのため、定数マテリアル表現式またはスカラー パラメータをメイン マテリアル ノードに直接渡し、これらの属性を定義することができます。
定数とスカラー パラメータは、エフェクト強度の制御に使用されることが多くあります。次の画像は、ソリッド カラーによって乗算され、Emissive Color (エミッシブ カラー) 入力に値を渡す「Emissive Power」(エミッシブ強度) という名前のスカラー パラメータを示しています。Emissive Power パラメータの値を変更することで、エミッシブ出力の強度を増減できます。
Float2
Float2 は 2 つの数値を格納します。例えば、(2.0, 3.0) です。
マテリアル エディタでは、Float2 の定義に Constant2Vector (定数 2 ベクター) マテリアル表現式が使用されます。次の画像には、2 つのチャンネルがそれぞれ「2.0」および「3.0」の値に設定されている Constant2Vector が示されています。
Constant2Vector
Constant2Vector は、2 チャンネルのデータを必要とする属性を定義または変更する場合に非常に便利です。[Details (詳細)] パネルでは、これらの 2 つの値が「R」と「G」と表記されており、RGB カラーにおける赤色と緑色のチャンネルをそれぞれ表しています。ただし、これはほんの一例です。Constant2Vector では、座標 (UV、XY) やスケール (幅、高さ) などの属性も定義できます。
次の例では、平面上のテクスチャの位置を変更するために、Texture Coordinates ノードに Constant2Vector が追加されています。最初のスライドでは Constant2Vector の値がそれぞれ「0」なので、テクスチャの位置は変わりません。
[R] の値を「0.5」に変更すると、これがテクスチャの U 座標に追加されるため、テクスチャが水平方向の軸に沿って移動します。これにより、平面の左右のエッジがテクスチャで包み込まれます。[G] の値を「0.5」に変更すると、テクスチャは垂直方向に移動します。テクスチャの中心は平面の 4 つの隅になります。
Float3
float3 は 3 つの数値を格納します。マテリアル エディタでは、Constant3Vector (定数 3 ベクター) ノードによって Float3 が定義されます。
Constant3Vector
Unreal Engine では、赤色、緑色、青色の各チャンネルを表す 3 つの値によってピクセルの色が定義されます。そのため、ソリッド カラーの定義は Float3 の使用例の一つとなっています。
Constant3Vector ノードをダブルクリックするとカラー ピッカーのダイアログが表示され、カラー ホイールやスポイト ツールを使って色を選択できます。カラー ピッカーには、RGB、HSV、または Hex の値を入力するフィールドも備わっており、特殊な色を作成することもできます。カラー ピッカーは、[Details] パネルの「色見本」をクリックすることでも表示できます。
Float3 の 2 つ目のユースケースとしては X、Y、Z 座標の定義があります。例えば、World Position Offset (ワールド位置オフセット) 入力は、ワールド空間での X、Y、Z 軸におけるマテリアルのオフセット量を定義する 3 つの値を受け入れます。
次の 4 つのスライドでは、Constant3Vector の値がそれぞれ「800」に変更され、球体の位置が変化する様子を確認できます。最初に X 軸上で変わり、次に Y 軸上、3 つ目のスライドでは Z 軸上で変化します。
Constant3Vector をパラメータ化する
Constant3Vector を右クリックし、コンテキスト メニューから [Convert to Parameter (パラメータに変換)] を選択することでこれをパラメータ化できます。これにより、そのノードがベクター パラメータに変わります。Vector Parameter ノードは 4 つの値 (R、G、B、A) を格納し、これによって Float4 となります。
ただし、Float3 を必要とする入力では最初の 3 つの値が使用され、4 つ目の値は破棄されます。例えば、Base Color (ベースカラー) 入力では Float3 を受け入れますが、Base Color にベクター パラメータをつなげると、R、G、B の各チャンネルが使用されて、4 つ目の値 (アルファ チャンネル) は破棄されます。Unreal Engine ではどのチャンネルを破棄すべきかを把握しているため、Float3 をパラメータ化する必要がある場合は、当該のノードが技術的には Float4 であっても、ベクター パラメータを安全に使用することができます。
Float4
float4 は 4 つの浮動小数点値を格納します。例えば、(50.0, 0.0, 100.0, 0.5) です。一般的に、Float4 の定義には 2 つのマテリアル表現式が使用されます。
Constant4Vector
Constant4Vector は 4 つの定数値を格納します。Constant4Vector が最もよく使用される例としては、アルファ チャンネルを含む RGBA カラーの表現があります。Constant3Vector と同様に、当該のノードをダブルクリックするか、[Details] パネルの色見本をクリックしてカラー ピッカーを表示します。
ベクター パラメータ
ベクター パラメータ とは、パラメータ化された Float4 を意味します。ベクター パラメータは、パレットまたはカンから直接作成できます。ベクター パラメータ の最もよくあるユースケースとしては、マテリアルで カラー パラメータを作成し、それを各アーティストがマテリアル インスタンス内で簡単にオーバーライドできるようにする場合があります。例えば、ベクター パラメータをテクスチャ上で乗算することで、マテリアルの一部の外観 (ベース カラーやエミッシブなど) の色合いをさらに制御することができます。
パラメータ化されたマテリアルのワークフローにおける従来のユーティリティに加えて、ベクター パラメータを使用することで追加のメリットを得ることができます。このページで紹介した例とは異なり、ベクター パラメータに含まれるそれぞれのデータ チャンネルには、ノードの右側にある 5 つの出力ピンを通じて個別にアクセスすることができます。上の画像で示されているように、これらは次のとおりです。
RGBA - Float4 のすべての値を出力します。上の画像では (0.0, 1.0, 0.5, 0.0).
R — R チャンネルの値のみを出力します。
G — G チャンネルの値のみを出力します。
B — B チャンネルの値のみを出力します。
A — A チャンネルの値のみを出力します。
これは、突き詰めると、マテリアル グラフを通じて渡される情報は「異なるさまざまな方法でパッケージ化されて表現された浮動小数点値である」というマテリアル作成の重要な側面を表しています。ベクター パラメータのチャンネルは、[Details] パネルでは「RGBA」と表記されていますが、実際にマテリアルでそのとおりに使用する必要はありません。
色の表現以外にも、ベクター パラメータを使って、関連する個別の 4 つの値をパラメータ化することができます。ノードのそのような使用例として、Megascans の親マテリアルのケースが挙げられます。この場合は、ベクター パラメータが UV タイリングとマテリアルのオフセットのパラメータ化に使用されます。
上の画像で、RGBA の各チャンネルがそれぞれ [Tiling X]、[Tiling Y]、[Offset X]、[Offset Y] という名前に変わっていることに注目してください。ベクター パラメータのチャンネルの名前は、[Details] パネルの [Parameter Customization (パラメータをカスタマイズ)] > [Channel Names (チャンネル名)] で変更できます。これらの名前は、アーティストがパラメータ値をオーバーライドする際に、マテリアル インスタンス エディタに表示されるものです。
Vector Parameter ノードについてはこちら から、マテリアルのパラメータ化についてはこちら から参照してください。
参考文献
このページで紹介されている 4 つのデータ型は、マテリアル グラフを通過するすべての情報の基礎を形成します。データ型は必ずしも不変ではないことを理解することが重要です。例えば、2つの浮動小数を組み合わせて float2 を形成できます。同様に、大きなデータ タイプから単一の浮動小数を抽出または分離することができます。
マテリアル グラフで算術演算を実行するためのデータ タイプとルールの操作については、「マテリアル データの操作と算術」を参照してください。