現実世界のあらゆるオブジェクトは、程度はそれぞれ異なるものの、すべて輝きを帯びています。鏡やクロム、ガラスなどの輝き (または反射性) は高く、塗装木材や、滑らかではあるものの研磨されていない石/コンクリートなどでは輝きが低くなります。
Unreal Engine では、メタリック、スペキュラ、ラフネス の マテリアル入力 を使うことで、オブジェクトの輝きをシミュレートできます。このチュートリアルでは、マテリアルに輝きを取り入れる一般的な方法をいくつか紹介します。
輝き
現実世界で光がサーフェスに当たると、その一部は吸収 (吸光) または拡散されますが、残りは直接反射します。このような光の拡散は「乱反射」と呼ばれます。木の幹などのオブジェクトは反射性が高いようには見えませんが、これはほとんどの光が拡散 (ディフューズ) されているためです。直接反射する光は「スペキュラ反射 (鏡面反射)」と呼ばれます。クロムの蛇口や水たまりに映ったものを見ている場合は、そのスペキュラ反射を見ていることになります。
Unreal Engine では、輝きを技術的ではなく美学的な観点から捉えています。このチュートリアルでは、輝きを可干渉な、鏡のような反射を生成するサーフェスの能力として扱います。このような反射のプロパティは、メタリック、スペキュラ、ラフネスの各入力によって定義されます。
ラフネスと輝き
ラフネス は、マテリアルの輝きを定義する上で重要な役割を担います。ラフネスの入力値は「0 ~ 1」の範囲です。

- ラフネス値が低いと、マテリアルはより鏡のような見かけになります。ラフネス値が 0 の場合、マテリアルは完全に鏡のように動作します。
- ラフネス値が高いと、サーフェスの輝きは少なくなります。ラフネス値が 1 の場合、マテリアルは光を完全に拡散させるものになります。
次の画像は、マテリアルの輝きに対するラフネスの影響を示したものです。この例では、球体が空白の環境に置かれているため、このモデルに見られるハイライトは光源の直接的な反射です。

左端の球体のラフネス値は 0 です。光源がシャープで明確なハイライトとして反射されています。ラフネス値が 0 から 1 へと増加するにつれてハイライトが徐々にぼやけて、球体の輝きが少なくなります。
メタリックと輝き
メタリック オブジェクトの見かけの輝きもラフネス値によって定義されます。ラフネス値が低いと輝きのあるメタリック マテリアルになり、ラフネス値が高いと輝きが少なく見えるマテリアルになります。メタル マテリアルと非メタル マテリアルとの大きな違いは、スペキュラ反射の色の計算方法にあります。
- メタリック値が 0 の場合、スペキュラ ハイライトは環境と光源の色を反射します。
- メタリック値が 1 の場合、スペキュラ ハイライトはマテリアルのベース カラーによって色付けされます。


メタリック値が 0 から 1 に変わるにつれて、反射の色がベース カラーによって影響を受ける様子に注目してください。
次の例では、メタリック マテリアルに対するラフネス値の影響を示しています。このマテリアルのメタリック値は画像全体を通じて 1 に定まっています。また、ソリッドな青色も ベース カラー 入力に渡されており、メタリック マテリアル上における反射の色へのベース カラーの影響も示されています。

メタリック マテリアルにおけるラフネス値の 0 から 1 への変化。
左端の球体のラフネス値は 0 で、完全に鏡のようになっています。ラフネス値が 0 から 1 に 変化するにつれて、球体の輝きが少なくなります。マテリアルのベース カラーが反射の色に影響を及ぼしている様子に注目してください。
スペキュラと輝き
99% のケースでは、スペキュラ 入力を調整する必要はありません。ほとんどのマテリアルでは、デフォルトである 0.5 の値が適切であり、正確な結果となります。
スペキュラ 入力も、マテリアルの輝きにある程度の影響を及ぼします。スペキュラ値を 1 に近く設定すると、マテリアルの反射またはスペキュラ ハイライトがより明るく、力強くなります。スペキュラ値を 0 に近くまで下げるとスペキュラ反射が弱くなり、最終的にはほぼ不可視になります。
次は、スペキュラ値が 0 から 1 に変わるにつれて、反射とスペキュラ ハイライトの強度に及ぼす影響の変化を示した例です。

ラフネスは、スペキュラ値にかかわらずマテリアルの輝きに影響を及ぼします。スペキュラ値が 1 に設定されている場合でも、ラフネス値が 1 であるとスペキュラ ハイライトはぼやけて不可視になります。メタリックが有効である場合は、スペキュラ値を調整してもマテリアルには何の影響もありません。
デフォルトである 0.5 のスペキュラ値は、現実世界のほぼすべてのオブジェクトの鏡面性 (スペキュラ) の測定値を正確に再現するものです。そのため、デベロッパーが作成するほとんどのマテリアルでは、スペキュラ値を調整する必要はないと言えます。それでもアート的な観点からスペキュラ値を増減することに問題はありませんが、0.5 の値から大きく離れると、マテリアルの物理的な現実味が薄れる可能性があります。
マテリアルで輝きを使用する
輝きのあるマテリアルを作成するには以下の手順に従います。
このチュートリアルでは、Unreal Engine の スターター コンテンツ のテクスチャを使用します。プロジェクトにスターター コンテンツを含めていない場合は、 プロジェクト間でのコンテンツの移行方法について、「Migrating content (コンテンツを移行する)」 ページを参照してください。こうすることで、現在のプロジェクトにスターター コンテンツを追加できます。
-
コンテンツ ブラウザ で 右クリック し、コンテキスト メニューの [Create Basic Asset (基本アセットを作成)] から [Material (マテリアル)] を選択します。
-
このマテリアルに「ShinyMaterial」と名前を付けて、そのサムネイルを ダブルクリック して マテリアル エディタ で開きます。
-
マテリアルが開いたら、そのマテリアル グラフに次のテクスチャとマテリアル表現式ノードを加えます。これらのテクスチャは、コンテンツ ブラウザの 「StarterContent」 > 「Textures」 フォルダにあります。
- Texture Sample: T_Metal_Gold_D x 1
- Texture Sample: T_Metal_Gold_N x 1
- Scalar Parameter x 3
- Multiply x 1
- それぞれのスカラー パラメータには一意の名前とデフォルト値が必要です。次の画像で示されているように、[Details (詳細)] パネルでそれぞれのスカラー パラメータを選択し、名前を変更して デフォルト値 を設定します。
-
メタリック: デフォルト値 0
- スペキュラ: デフォルト値 0.5
- ラフネス: デフォルト値 0.5
-
-
すべてのマテリアル表現式ノードを メイン マテリアル ノード 上の対応する入力にそれぞれ接続します。完了すると、マテリアル グラフは以下のようになるはずです。
-
ツールバーの [Apply (適用)] ボタンと [Save (保存)] ボタンをクリックしてマテリアルをコンパイルし、完了したらマテリアル エディタを閉じます。
-
コンテンツ ブラウザで ShinyMaterial アセットを見つけてそれを 右クリック し、コンテキスト メニューから [Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。
-
コンテンツ ブラウザ内でこのマテリアル インスタンスを ダブルクリック し、マテリアル インスタンス エディタ で開きます。インスタンス エディタ内で、各パラメータ名の隣にあるチェックボックスをオンにして、3 つの グローバル スカラー パラメータの値 をすべて有効にします。
すべての スカラー パラメータ値 を有効にしたら、それぞれの値を変更して、その結果をプレビュー ビューポートですぐに確認できます。例えば、[Metallic (メタリック)] を「1」 に設定し、[Roughness (ラフネス)] を「0.2」 に設定すると、法線マップによる不完全なサーフェス部分を含む、黄金のように非常に輝いたマテリアルに仕上がります。

[Roughness] の値を 「0.7」 に上げると、マテリアルの反射がよりぼやけてサーフェスの光沢がやや失われますが、反射は完全にはなくなりません。

[Metallic (メタリック)] を「0」 に設定し、[Roughness] を「0.15」 に設定すると、サーフェスのメタル感が失われて、摩耗したプラスチックまたは塗装のような見かけになります。

まとめ
マテリアルの ラフネス 値を設定する際は、程度は異なるものの、ほとんどのオブジェクトは輝きを帯びていることに留意してください。普段は反射をあまり意識しないサーフェスであっても、十分に強力な光源からの光に当たると、ある程度のスペキュラ ハイライトが生じます。
ほとんどのケースでは、ラフネス値を 0 か 1 の極端な値に設定すべきではありません。代わりに、それらの間にある中間値を使用してください。ラフネス値にバリエーションとノイズを加えるために、テクスチャ マスクがよく使用されます。これにより、輝きやぼやけが均一ではない、両方の組み合わせによる興味深い効果が適用されたサーフェスが生成されます。ここから、テクスチャ マスキング について参照してください。
反射マテリアルのパフォーマンス コストについても考慮が必要です。また、多数のメタリック サーフェスを近接して使用する場合も注意してください。複数のメタリック オブジェクトが互いに反射しあう場合、つまり別のオブジェクトの反射を反射する場合は、マテリアルのパフォーマンス コストが高くなる可能性があります。