Unreal Engine のマテリアル システムでは、ノードベースのマテリアル エディタが提供されています。このエディタでは、テクスチャ、数学演算、パラメータ、式の各ノードをつなげてサーフェスの外観を作成します。 マテリアル システムは、マテリアルをリアルタイムで最適化してレンダリングします。
Maya ユーザーの場合、このワークフローはハイパーシェード (Hypershade) でマテリアルを構築する方法によく似ていますが、いくつかの重要な違いがあります。
Unreal Engine のマテリアルは、次のものを使用して作成されています。
ノードベースのマテリアル エディタ。リアルタイムにプレビューでき、ワークフローが合理化されています。
物理ベース レンダリング (PBR)。ベース カラー、メタリック、ラフネス、スペキュラ、法線マップなどの定義済みのプロパティ入力を通じて現実味を高めます。
リアルタイム フィードバック。リアルタイムのライティングと反射により、プレビュー ビューポートでマテリアルへの変更を確認できます。
パラメータに基づくワークフロー。親マテリアルを再コンパイルすることなく、オーバーライドによってマテリアルを調整するマテリアル インスタンスを使用できます。
マテリアルの定義属性
Unreal Engine でのレンダリング方法や、ライティングやサーフェスと反応する方法に関するマテリアルの属性は、そのマテリアルのプロパティ、マテリアル入力、マテリアル グラフ ロジックによって決定されます。
マテリアルのプロパティとマテリアル入力
マテリアル エディタでは、[Details (詳細)] パネルでマテリアルの定義属性を設定します。 作成するマテリアルのタイプで考慮する必要のある主要なプロパティが 3 つあります。 これらのプロパティは、マテリアル グラフでマテリアルの外観をセットアップするために使用するメインのマテリアル ノードの入力を定義します。
[Material Domain (マテリアル ドメイン)] は、プロジェクトでのマテリアルの使用目的を定義します。 たとえば、3D サーフェス、ユーザー インターフェース、ポストプロセス、ライト関数、デカールがあります。
[Blend Mode (ブレンド モード)] は、マテリアルとその背後にある色付きピクセルとのブレンド方法を定義します。 たとえば、不透明、透過、マスク、他のタイプのブレンド オプションを使用できます。
[Shading Model (シェーディング モデル)] はマテリアルとライトが相互作用する方法を定義し、サーフェスの外観とライティングでの挙動を決定します。 たとえば、クロスとヘアのシェーディング モデルは、デフォルト ライティング シェーディング モデルと比較して、異なるマテリアル入力を使用して現実味のあるサーフェスを生み出します。 一部のシェーディング モデルでは、マテリアルがより複雑になり、パフォーマンス上の負荷が増大します。
これらのマテリアルのプロパティを設定すると、マテリアル グラフにあるメインのマテリアル ノードで利用可能な入力を使ってマテリアルを構築できるようになります。 入力のリストは、開発しているマテリアルに設定されているドメイン、ブレンドモード、およびシェーディングモデルにより直接決まります。 Unreal Engine で作成されたほとんどのマテリアルでは、次のものが使用されます。
異なる出力を使用するためにブレンド モードだけを変更した場合の、メイン マテリアル ノードの異なる入力の例を以下に示します。
Material Domain:Surface (サーフェス) Blend Mode:Opaque (不透明型) Shading Model:Default Lit (デフォルトライティング) | Material Domain:Surface (サーフェス) Blend Mode:Translucent (半透明) Shading Model:Default Lit (デフォルトライティング) | Material Domain:Surface (サーフェス) Blend Mode:Masked (マスク) Shading Model:Default Lit (デフォルトライティング) |
Maya のハイパーシェード マテリアルで使用される一般的な入力名と、Unreal Engine でそれらに相当するものを以下に示します。 これは、マテリアル グラフでロジックを定義する場合の、Unreal Engine での各入力のソース入力の型に対する通常のタイプも示しています。
| Maya ハイパーシェードのマテリアル入力 | Unreal Engine のマテリアル入力 | 一般的なソースタイプ | マテリアル入力の説明 |
|---|---|---|---|
Color | Base Color (ベースカラー) | テクスチャまたはカラー | サーフェスのメイン ディフューズ カラーです。 |
Reflectivity | Metallic (メタリック) | スカラーまたはテクスチャ | サーフェスの外観がメタル (1) か非メタル (0) かを定義します。 |
Roughness | Roughness | スカラーまたはテクスチャ | サーフェスの滑らかさを滑らか (0) から粗い (1) まで制御します。 |
Reflectivity | Specular (スペキュラ) | スカラーまたはテクスチャ | 非メタリック サーフェスの反射強度を非反射 (0) から反射 (1) まで制御します。 |
Bump / Normal | Normal (法線) | 法線マップテクスチャ | テクスチャ マップを使用してサーフェスのディテールを適用します。 |
Emission / Emission Color / Incandescence | Emissive Color (エミッシブカラー) | カラーまたはテクスチャ | サーフェスが自己発光するときの強度を制御します。 |
Transparency / Translucence | Opacity (オパシティ) | スカラーまたはテクスチャ | 完全な透明 (0) から不透明 (1) まで、サーフェスの透過度合いを制御します。 |
Ambient Color | Ambient Occlusion (アンビエントオクルージョン) | テクスチャ | 間接シャドウの強度を制御します。 |
これらのマテリアル プロパティとマテリアルでの入力の使用例については、次のトピックを参照してください。
マテリアル グラフ
マテリアル グラフは、テクスチャ、式、数学演算、値の各ノードをつなげてサーフェスの外観を定義するノードベースのエディタです。 サーフェスを定義する必要があるため、マテリアルは単純なものから複雑なものまであります。
使用する一般的なノード型には次のものがあります。
Texture Sample (テクスチャ サンプル)
このノードはカラー マップや法線マップなどのテクスチャ アセットを使用します。
定数
これらは、線形補間ノードの入力値や、メイン マテリアル ノードの Metallic、Roughness、Opacity 入力への直接接続など、スカラー プロパティの制御に役立つ単一の値の数値です。
数学演算ノード
加算、乗算、減算、除算、線形補間 (Lerp)、累乗、クランプなどの数学演算があります。
ユーティリティ ノード
これらのノードは、グラフで他のノードと一緒にロジックを構築するのに役立つノードです。 これらには、Fresnel、Camera Vector、World Position、Texture Coordinates などの式が含まれます。
マテリアル グラフでのロジックの使用と、マテリアル グラフでの一般的な機能の詳細については、以下のトピックを参照してください。
マテリアルおよびテクスチャに関する追記
Unreal Engine におけるマテリアル開発に関連した項目の概要を以下に示します。 これらの概念やアプリケーションの詳細な説明については、それぞれのドキュメント ページを参照してください。
マテリアルとマテリアル インスタンスの比較
Unreal Engine のマテリアル システムは、リアルタイム レンダリングとライティングを実現するために、カスタマイズとパラメータ化を考慮して構築されています。 マテリアルの操作を最適化する方法の 1 つは、派生元のマテリアルに影響を与えることなくパラメータをカスタマイズする手段としてマテリアルのインスタンス化を使用することです。
したがって、マテリアルがオブジェクトのサーフェスの外観やライティングとの相互作用を定義するプライマリ アセットである場合、マテリアル インスタンスは親 (ベース) マテリアルの属性とパラメータを使用して、これらの値をオーバーライドすることでバリエーションを生み出し、カスタマイズ性を高めます。 また、この方法は、すべてのオブジェクトに個別のマテリアルを使用するよりもコスト効率が高くなります。
マテリアルとマテリアル インスタンスの特性は、次のように分類できます。
| マテリアルの特性 | マテリアル インスタンスの特性 |
|---|---|
ノードベースのエディタを使用して作成されます。 | 基本マテリアルからオーバーライドできる公開パラメータを操作するエディタを使用します。 |
カラー、メタリック、ラフネス、オパシティなど、マテリアルに対して利用可能なすべての機能入力が含まれます。 | オーバーライド可能な基本マテリアルから公開されたパラメータにのみアクセスできます。 |
マテリアルに変更を加えた場合、変更をプレビューするにはマテリアルを再コンパイルする必要があります。 | パラメータを変更するとリアルタイムでフィードバックが表示されます。マテリアルの再コンパイルは必要ありません。 |
マテリアル グラフは、ビジュアルに関する要件を実現するために、どのようなレベルの複雑さにも対応できます。 | 公開されているパラメータのみにアクセスできるため、パフォーマンスとワークフローの効率性が向上します。 |
このマテリアルを変更すると、それを使用するすべてのオブジェクトに影響します。 | このマテリアル インスタンスを変更すると、それを使用しているオブジェクトのみに影響を及ぼします。そのため、同様の機能を持つ同じ親マテリアルから始めて、似たような外観の複数のサーフェスを作成するのに最適です。 |
マテリアルとともにマテリアル インスタンスの使用を検討する最適なタイミングは、細部のカスタマイズや、マテリアルの色、テクスチャ、スケーリングなどのパラメータの調整のみが必要な場合です。 新しい基本マテリアルを作成するのは、新しいビジュアルの動作やスタイル (不透明型と透過型など) を定義してマテリアル グラフ内で新しいロジックを設定する必要がある場合です。
一般に、同じようなプロパティと属性を持つマテリアルのマテリアル インスタンスを使用するよりも、マテリアル自体を使用すると初期設定に時間がかかり、パフォーマンスが低下します。
プロジェクトでのマテリアルとマテリアル インスタンスの使用法については、以下のトピックを参照してください。
テクスチャ
Maya と同様に、テクスチャはサーフェスのディテールを定義するために、作成しているマテリアルの入力属性 (ベース カラー、法線、ラフネスなど) に適用する画像マップです。 Unreal Engine では、マテリアルの開発時に物理ベース レンダリングの概念とリアルタイム フィードバックがより重要となります。
テクスチャをインポートするとき、テクスチャ アセット エディタでテクスチャを開いて、情報を確認し、設定を構成して、調整を行うことができます。
Unreal Engine でテクスチャを最適化し、効率的に作業するには、次の手順を実行します。
インポート前に、サードパーティ製ツールを使用してテクスチャを作成し、調整する。
チャンネル パッキング技術を使用して、ラフネス、メタリック、アンビエント オクルージョンなどのマテリアル入力に対する複数のグレースケール テクスチャを単一の RGB テクスチャに結合します。 これにより、複数の異なるテクスチャではなく単一のテクスチャを参照することでパフォーマンスを最適化できます。
エンジンではテクスチャに対してテクスチャの圧縮が自動的に使用されますが、これを活用する方法を理解することにより、視覚的な忠実度やパフォーマンスが向上する可能性があります。
テクスチャのサイズには注意してください。 リアルタイム パフォーマンスでは、テクスチャのサイズを 2 の累乗 (128、512、1024 など) に限定することが理想的です。 2 の累乗ではないテクスチャは、エンジンのテクスチャ ストリーミング システムを使用しないため、視点から離れた場所でビジュアル アーティファクトが発生する可能性があります。
Unreal Engine でテクスチャを使用する方法については、次のトピックを参照してください。
Substrate マテリアル フレームワーク
Unreal Engine の Substrate マテリアル フレームワークは、マテリアル オーサリング手法です。決まった組み合わせのシェーディング モデルやブレンド モードに代わって、より表現力に優れたモジュール式のフレームワークを提供します。 マテリアルのオーサリングは標準のマテリアル システムと同じですが、個々のマテリアルで単一のシェーディング モデルとブレンド モードを使用する必要がなくなりました。 このワークフローでそれらをシームレスにブレンドし、複雑度の高いユニークなマテリアルを作成できます。
プロジェクトでの Substrate の使用およびマテリアル作成ワークフローの詳細については、「Substrate マテリアルの概要」を参照してください。
マテリアルを使用した物理ベース レンダリング
Unreal Engine は、サーフェスと相互作用する光の挙動を正確にシミュレートするシェーディングとレンダリングに、物理ベース レンダリング (PBR) を使用します。 ディレクショナル ライトは、物理的に妥当なライトの相互作用を実現し、直射日光と室内のライティング、フォトリアルのサーフェスとスタイライズド エフェクト (手描きからセル シェーディングまで) に対して、さまざまなライティング条件においてリアルで (さらに重要なのは) 予測可能なビジュアルを生み出します。
Unreal Engine で PBR マテリアルを使用する際に考慮すべき重要な原則は、次のとおりです。
現実的なライティング相互作用。サーフェスがさまざまなライティング セットアップ、自然光 (屋外) または人工光 (屋内) に対して正確に反応し、予想可能な結果をもたらします。
マテリアルの一貫性。シーンやライティングが異なるシナリオでも正しく表示します。
簡素化されたワークフロー。アーティストが任意の値ではなく物理的プロパティでマテリアルを定義します。シーンへの即時のフィードバックにより、リアルタイム環境におけるシェーディングやライティングの調整の推測作業を削減できます。
詳細については、「物理ベースのマテリアル」を参照してください。
次のページ
Maya ユーザー向けの Unreal Engine でのライティングおよびレンダリング
Maya ユーザー向けの Unreal Engine のライティングおよびレンダリング機能の概要です。