このドキュメントの目的は、Unreal Engine 4 の物理ベースのマテリアル システムに、ユーザーが早く慣れ親しむことができるようにすることです。少なくとも、Unreal Engine 3 かそれ以降のバージョンで マテリアル作成を理解しているユーザーを対象としています。Unreal Engine でのマテリアル作成が全く初めての方は、 マテリアルの基本概念 ページから始めることをお勧めします。
以前の Unreal Engine のイタレーション開発経験があっても混乱しやすいと思うので、 本ページでは、このシステムを使用して一般的なマテリアルを作成するため必須要素を分かりやすく説明していきます。物理ベースのアプローチを伴うマテリアルの側面にのみ 焦点をあてます。利用可能な入力値に関する全体的な概要は、 Material 入力 を参照してください。
物理ベースについて
物理ベースのシェーディングとは、直観的に感じ取るライトの動作とは対照的に、 ライトの実際の動作の近似値を求めることです。より正確で、通常はより自然な外観にすることができます。物理ベースのマテリアルは、 すべてのライティング環境において、同じように機能します。さらに、マテリアルの設定値はより単純で独立した値であるため、 インターフェースは以前に増して直観的になります。これらの実用性は、最新の Pixar [4] および Disney [3] フィルムにも見受けられるように、 非写実的画像にさえも適用することができます。
このような理由から、Unreal Engine 4 は新しく物理ベースのマテリアルとシェーディング モデルを適用しました。UE4 の物理ベース マテリアルやシェーディング モデルに関する技術的側面の詳細は、 SIGGRAPH プレゼンテーション [2] を参照してください。
マテリアル パラメータ
マテリアル システムの「物理ベース」に関連して理解する必要のあるプロパティは、実際には以下の 4 種類のみです。
- Base Color
- Roughness
- Metallic
- Specular
これらの入力値は、すべて 0 から 1 の間の値を受け取るように設定されています。Base Color については、RGB 値が 0 から 1 の間にある色を意味します。
物理ベースの値は、現実世界のマテリアルから計測することも出来ます。例を紹介します。
Base Color (基本色)
Base Color は、マテリアルの全体の色を定義します。Vector3 (RGB) 値を受け取り、各チャンネルは自動的に 0 と 1 の間にクランプされます。
現実世界から取得した場合、偏光角フィルタを使用して写真を撮影した色です。 (偏光は、アライメントされた時に非金属のスペキュラを消去します)。
ノンメタルの BaseColor 計測値 (明暗度のみ):
マテリアル | BaseColor の明暗度 |
---|---|
木炭 | 0.02 |
新しいアスファルト | 0.02 |
摩耗したアスファルト | 0.08 |
むきだしの土壌 | 0.13 |
草 | 0.21 |
砂漠の砂 | 0.36 |
新しいコンクリート | 0.51 |
氷河 | 0.56 |
新雪 | 0.81 |
メタルの BaseColors 計測値:
マテリアル | BaseColor (R, G, B) |
---|---|
鉄 | (0.560, 0.570, 0.580) |
銀 | (0.972, 0.960, 0.915) |
アルミニウム | (0.913, 0.921, 0.925) |
金 | (1.000, 0.766, 0.336) |
銅 | (0.955, 0.637, 0.538) |
クロム | (0.550, 0.556, 0.554) |
ニッケル | (0.660, 0.609, 0.526) |
チタン | (0.542, 0.497, 0.449) |
コバルト | (0.662, 0.655, 0.634) |
プラチナ | (0.672, 0.637, 0.585) |
Roughness (ラフネス)
Roughness 入力値は、その言葉通りマテリアルのラフネス (粗さ) の度合いを制御します。ラフなマテリアルはスムーズなマテリアルと比較して、より多くの方向へ反射光を散乱させます。 この効果は、反射のぼやけ具合やはっきり加減、 もしくは広域またはタイトなスペキュラ ハイライトとして見ることができます。値 0 のラフネス (スムーズ) はミラー反射、値 1 のラフネス (ラフ) は完全な艶消しまたはディフューズ (拡散色) となります。
Mapping Roughness (ラフネスのマッピング)
ラフネスは、サーフェスに最も物理的なバリエーションを加えるためにオブジェクトに頻繁にマッピングするプロパティです。
物理ベースのマテリアルに慣れていないけれども、以前の Unreal Engine のイタレーション開発でマテリアルの作成経験があるユーザーは、 Roughness マップでほとんどのスペキュラリティ (鏡面反射性) のテクスチャリングを処理するということを覚えておいてください。
Metallic (メタリック)
Metallic 入力は、文字通りサーフェスをどのように「メタル状」にするかを制御します。ノンメタルは、値 0 のメタリック値を使用し、 メタルには、値 1 のメタリック値を使用します。純粋な金属、石、プラスチックなどの純粋なサーフェスでは、 この値は 0 または 1 を使用し、その中間値は使用しません。腐食している、埃っぽい、あるいは錆びたメタルなどのハイブリッドなサーフェスを作成する場合には、 0 と 1 の中間値を使用する場合もあります。
初めは、マテリアルを完全にメタルにしてしまうことに抵抗を感じるかもしれませんが、そこは我慢してください。
この例は、Roughness (粗さ) が若干加えられていることがわかります。これは純粋に芸術的な選択肢によるものです。
Specular (スペキュラ)
メタル以外の サーフェス マテリアルを編集する場合、ライトを反射する能力、特に Specular プロパティを調節したくなる場合があります。 マテリアルの Specular を更新するには、0 (反射なし) と 1 (完全に反射) の間のスカラ値を入力します。マテリアルのデフォルトのスペキュラ値は 0.5 です。
ディフューズ マテリアルには、つい値を 0 に設定してしまいがちです。そこは我慢してください!全てのマテリアルにはスペキュラ反射があります。 [5] の例を参照してください。行いたいことは、 ディフューズ マテリアルを粗くすることです。
一般的にスペキュラの変更は、マイクロ オクルージョンや小さなスケール シャドウを追加して行います。ノーマルマップに表現したクラック (割れ目) が例として挙げられます。これらは時々キャビティ (空洞) とも呼ばれます。 小型のスケーリング ジオメトリ、特にハイポリゴンのみに存在し、法線マップにベイク処理された詳細の場合は特に、レンダラーのリアルタイム シャドウにはピックアップされません。このシャドウイングをキャプチャために、キャビティ (空洞) マップを作成します。 このマップは通常、非常に短い追跡距離を使用した AO (アンビエント オクルージョン) マップです。スペキュラ出力値として 0.5 (スペキュラ値のデフォルト) で出力値を乗算する前に、最終的な BaseColor で乗算処理されます。 つまり、BaseColor = CavityOldBaseColor、Specular = Cavity0.5 ということです。
高度な方法では、これを屈折率 (IOR) としても使用することができます。99% のマテリアルは、これが必要かはまだ分かっていません。以下は測定した IOR に基づいたスペキュラ値です。
測定スペキュラ値:
マテリアル | スペキュラ |
---|---|
ガラス | 0.5 |
プラスチック | 0.5 |
石英 | 0.570 |
氷 | 0.224 |
水 | 0.255 |
牛乳 | 0.277 |
皮 | 0.35 |
リファレンス
(#Lagarde) 1.Lagarde, Feeding a physically based shading model (#Karis) 2.Karis, Real Shading in Unreal Engine 4 (#Burley) 3.Burley, Physically-Based Shading at Disney (#Smits) 4.Smits, Reflection Model Design for WALL-E and Up (#Hable) 5. Hable, Everything is Shiny