このチュートリアルでは、マテリアルとマテリアル インスタンスについて詳しく学びます。 芸術的な選択を行い、開発速度を高め、プロジェクトのオーバーヘッドをコントロールする上で役立つマテリアル ツールセットとテクニックについて学ぶことができます。 後で、マテリアルをゲーム アセットに適用し、ブループリントを使用して、レベル内でのプレイヤーのアクションに基づいてマテリアルを制御します。
開始する前に
このモジュールでは明るいレベル ライティングが必要です。 前回のチュートリアルに従ってレベル内のライティングを減らした場合は、以下の設定を使用してください。
ディレクショナルライト強度 | 6.0 |
最小 EV100 | False |
最大 EV100 | False |
マテリアルとマテリアル インスタンス
マテリアルは、ゲーム内のアセットのサーフェス プロパティを定義します。 テクスチャと同様に、マテリアルはメッシュを覆う包み紙のようなものであり、そのサーフェスの外観や光源への反応を変化させます。
テクスチャとは異なり、マテリアルなら、ノードベースのワークフローを介して非破壊的なカスタマイズが可能です。 たとえば、マテリアルには、石や金属などの現実世界の物質の属性を模倣するプリセット プロパティがあります。 次の画像に示されている 2 つのマテリアルの違いは、メタリック プロパティとラフネス プロパティだけです。
マテリアルは、テクスチャとロジックを組み合わせることで、レイヤーごとに複雑な物質を生成できます。 これらの組み合わせを通じて、プロジェクトのワールドビルディングに影響を与える芸術的な選択を行うことができます。 これは、金属製のゲーム アセットに傷を追加するような単純なものもあれば、砂の上を水が流れるような複雑なものもあります。
芸術的な選択だけでなく、マテリアルを使用して開発プロセスを合理化することもできます。 たとえば、マテリアルはマテリアル インスタンスと呼ばれる子ファイルタイプを生成します。 マテリアル インスタンスは、親マテリアルからプロパティを継承するコピーです。 インスタンスは、これらの継承を非破壊的にオーバーライドして、独自のプロパティを保持できます。
開発環境では、親マテリアルとマテリアル インスタンスを使用して、次のことが可能です。
即座にビジュアル フィードバックを受け取る:インスタンスに加えられた変更は、親マテリアルのシェーダーを再コンパイルすることなく、全てのビューポートに即座に表示されます。
パフォーマンスの向上:インスタンスは親と同じシェーダー コードを使用するため、コンパイルするシェーダーの総数を減らし、ランタイム時のシェーダーの切り替えを減らすことが可能です。
ワークフローを合理化する:インスタンスは、関連するプロパティをアーティスティック チームにのみ公開することで、複雑さを軽減します。
ブループリントとインタラクトする:マテリアルとその子インスタンスはロジックを使用するため、マテリアル プロパティはブループリントを通じて外部から制御できます。
ヒント:
マテリアルはメッシュに限られません。 これらは、UI、ポストプロセス、ライティング (照明) などに使用できます。
マテリアルはシェーダーではありません。マテリアルは、ノードベースの式をハイレベル シェーダー言語 (HLSL) にサイレントに変換し、アセットの最終的な外観を計算するインターフェースです。
シェーダーの切り替えとは、Unreal Engine が描画中のアセットに関連するシェーダーを選択することを指します。 シェーダーの切り替えが頻繁に行われると、ランタイム時にスタッタリングが発生する可能性があります。
このチュートリアルで使用するツールとインターフェースを紹介します。
マテリアルの仕組み
マテリアル ツールセットについて理解を深めるために、既存のマテリアルを開いてください。 コンテンツブラウザで次のパスに移動します。
[All (全て)] > [Content (コンテンツ)] > [LevelPrototyping] > [Materials (マテリアル)]
「Materials」フォルダー内にある M_FlatCol を見つけます。
このマテリアルの命名規則には「M_」というプレフィックスが使用されています。 これは、マテリアルを他のファイルと区別するための、Unreal Engine の一般的な命名規則です。 プレフィックスは自由に設定できますが、チーム全体で共通の命名規則を使用することで、開発チームは何百ものアセットを処理する際の混乱を防止できます。
M_FlatCol をダブルクリックします。 マテリアル エディタのウィンドウが開きます。 このチュートリアルでは、このエディタで最も重要なタブは、[Preview Window (プレビュー ウィンドウ)]、[Material Graph (マテリアル グラフ)]、詳細パネルです。
| 番号 | タブ名 | 説明 |
|---|---|---|
1 | プレビュー ウィンドウ | 編集中のマテリアルのリアルタイムの例が表示されます。 ライティング、表示モード、プレビュー メッシュを変更するためのオプションがあります。 |
2 | マテリアル グラフ | マテリアルは、このノードベースのグラフでノード (式と呼ばれる) を組み合わせることによって構築されます。 デフォルトでは、マテリアルはすでに、グラフ内に 1 つのノード (ベース マテリアル ノード または マテリアル ルート ノード) を備えています。
|
3 | 詳細パネル | 選択されている全てのマテリアル式のためのプロパティ ウィンドウ ノードが選択されていない場合、マテリアルの基本プロパティが表示されます。 基本プロパティの Material Domain 、Blend Mode、および Shading Model は、グラフ内のマテリアル ルート ノードに表示されるプロパティに影響します。 |
次の手順に従ってマテリアルのベース カラーを変更してみてください。
マテリアル グラフで、Base Color ノードをダブルクリックします。
カラーピッカーで「HEX sRGB
FFBC00FF」と入力し、[OK] をクリックします。[Save (保存)]、[File (ファイル)] > [Save (保存)]、または Ctrl + S をクリックしてマテリアルを保存します。
プロジェクト内のアセットが M_FlatCol を使用している場合は、レベルが変更されていることがわかります。
コンテンツブラウザに戻り、MI_DefaultColorwayを見つけます。 これは、親として M_FlatCol を使用しているマテリアル インスタンスです。
それをダブルクリックして、マテリアル インスタンス エディタで開きます。
マテリアル エディタとは異なり、マテリアル インスタンス エディタはカスタマイズできません。 詳細パネルでは、[Parent (親)] という見出しの下に「M_FlatCol」が表示されていることがわかります。 親マテリアルは子マテリアルにプロパティを渡すため、このインスタンスのベース カラーは黄色になります。ただし、プレビュー ウィンドウを確認してください。 サンプル メッシュはグレーのままです。
これは、M_FlatCol の [Base Color (ベース カラー)] プロパティが公開されており (つまり編集可能である)、現在グレーでオーバーライドされているためです。 インスタンスは、公開されている親プロパティをオーバーライドすることで、それぞれ独自のプロパティを保持できます。
以下の2 つの実験を行ってみましょう。
オーバーライドを削除する。
オーバーライドを適用して、このインスタンスのベース カラーを変更する。
作業を進めるには、次の手順に従ってください。
詳細パネルの [Surface Properties (サーフェス プロパティ)] で [Base Color (ベースカラー)] のチェックを外してください。 これによりオーバーライドが削除されます。 プレビュー ウィンドウでは、サンプル メッシュがグレーから黄色に変わります。
オーバーライドを再適用するには、[Base Color (ベース カラー)] をオンにします。 色見本をクリックして、カラーピッカーを開き、新しい色を選択します。
マテリアル インスタンスを保存します。
このインスタンスを使用するレベル内のアセットは新しいベース カラーで更新されますが、M_FlatCol を使用するアセットは黄色のままになります。
これはマテリアルが階層的であるためです。
親マテリアルは、子インスタンスに変更を反映できます。
インスタンスは、独自の公開プロパティを保持できます。
インスタンスは、自身の子インスタンスに変更を反映できます。
インスタンスでは、親マテリアルに変更を反映できません。
効率的で有用な親マテリアルは、全ての子インスタンスに対して柔軟な基盤として機能し、開発パイプラインにおけるコンパイル、シェーダーの切り替え、および反復的な作業を削減します。 親マテリアルを作成する際には、チームが頻繁にアクセスし、繰り返し適用すすプロパティを考慮する必要があります。
このセクションで変更されたマテリアルをリセットするには、M_Flat_Col の[Base Color (ベース カラー)]を 767676FF に、MI_DefaultColorway の[Base Color (ベース カラー)]を C0C0C0FF に設定します。
マテリアル エディタの UI の詳細については、「マテリアル エディタの UI」を参照してください。
親マテリアルを作成する
このセクションでは、[Base Color (ベース カラー)]、[Metallic (メタリック)]、[Normal (通常)]、[Roughness (ラフネス)] というプロパティを含む親マテリアルを作成してください。 これらのプロパティは、テクスチャ、式、およびその組み合わせを使用してコントロールします。
新しいマテリアルを作成するには、次の手順を実行します。
コンテンツブラウザで、ファイル パス「All > Content > AdventureGame > Artist > Materials」に移動し、[Add (追加)] をクリックし、[Material (マテリアル)] を選択します。
マテリアル名は「
M_Surfaces」です。M_Surfacesをダブルクリックしてマテリアル エディタを開きます。
次に、テクスチャを使用してマテリアル内のプロパティを制御します。
テクスチャを通してプロパティを制御する
テクスチャ マップ (またはテクスチャ) は、マテリアル内でレイヤー化とカスタマイズを行うことで、さまざまなビジュアルを生み出すことができる画像ファイルです。
テクスチャは、各ピクセルに固有の RGB 情報とアルファ情報を格納しているため、複雑な詳細や空間的に変化する詳細があるマテリアルに有効です。 たとえば、傷が付いた金属を模倣するマテリアルを作成する場合、スペキュラ マップではアルファ情報を使用して、光を反射する必要のある領域とそれ以外の領域を特定します。
このセクションでは、TextureSample 式を使用してディフューズ マップと法線マップをマテリアルに適用します。
ディフューズ マップには、基本カラー プロパティとビジュアル プロパティが含まれ、ライティング情報は含まれません。 法線マップは、メッシュにジオメトリを追加することなくサーフェスのテクスチャ (突起、亀裂など) を模倣します。
テクスチャ マップを追加するには、次の手順を実行します。
グラフ内で右クリックし、「TextureSample」を検索してリストから選択します。 キーボード ショートカット「T + 左クリック」を使用することもできます。
2 つの TextureSample ノードを追加し、そのうち片方を他方の下に移動します。
一番上の TextureSample ノードを選択します。 詳細パネルの [Material Expression Texture Base (マテリアル式テクスチャ ベース)] で、空の [Texture (テクスチャ)] ドロップダウンをクリックし、「
DefaultDiffuse」を検索します。 リストからディフューズ マップを選択します。一番上の TextureSample ノードを選択した状態で、RGB 出力をマテリアルのルート ノード (
M_Surfaces) のベース カラー入力に接続します。一番下の TextureSample ノードを選択します。 詳細パネルの [Material Expression Texture Base (マテリアル式テクスチャ ベース)] で、[Texture (テクスチャ)] ドロップダウンをクリックし、「
DefaultNormal」を検索します。 リストから法線マップを選択します。一番下の TextureSample ノードを選択した状態で、RGB 出力をマテリアルのルート ノードの法線入力に接続します。
マテリアルを保存します。
マテリアル グラフは次のようになります。
次に、式を使用してプロパティを制御します。
定数によってプロパティを制御する
このセクションでは、定数式を使用してマテリアルの [Metallic (メタリック)] および [Roughness (ラフネス)] プロパティを制御することで、石のようなマテリアルを作成します。 プロパティの制御に定数を使用すると、均一なグローバルな調整を行いやすくなります。
定数は、単一の浮動小数値によってプロパティを制御します。 たとえば、[Metallic (メタリック)] の浮動小数値の範囲は 0 ~ 1 です。 0 は非メタリック サーフェス (プラスチックなど) を模倣し、1 はメタリック サーフェス (クロムなど) を模倣します。
Unreal Engine では、メタリック サーフェスの反射はベース カラーによって着色され、非メタリック サーフェスの反射は環境光源によって着色されます。
[Roughness (ラフネス)] の浮動小数値の範囲も 0 ~ 1 です。 0 は滑らかなサーフェスを模倣し、1 は粗いサーフェスを模倣します。 ラフネスは、サーフェスからの光の散乱に影響を与えます。滑らかなサーフェスではより密に詰まったスペキュラ反射 (光沢があるように見える) が、粗いサーフェスでは乱反射 (マットに見える) が発生します。
これらのプロパティの制御に定数を使用することで、艶消しのプラスチック、光沢のあるプラスチック、粗い金属、滑らかなクロムなどの素材を模倣できます。
石のマテリアルを作成するには、次の手順を実行します。
マテリアル グラフ内で右クリックし、リストから [Constant (定数)] を選択します。 また、キーボード ショートカット「1 + LMB」も使用できます。 2 つの定数を追加します。
1 つ目の定数ピンからドラッグし、ベース ノードのメタリック入力に接続します。 2 つ目の定数をラフネス入力に接続します。
メタリック定数を選択した状態で、その値が
0であることを確認してください。ラフネス定数を選択した状態で、その値を
1に設定してください。マテリアルを保存します。
マテリアル グラフは次のようになります。
次のセクションでは、マテリアル内でのテクスチャのタイリングについて詳しく説明します。
テクスチャのスケーリングとタイリング
ディフューズおよび法線マップが床タイルのように見えることが分かります。 このセクションでは、マテリアル式を使用してUV をスケーリングし、全方向に無限に繰り返し可能な石の床を作成します。 これはタイリングと呼ばれます。
タイリングはオーバーヘッドを増やすことなく大きなメッシュをカバーするためによく使用されます。テクスチャをスケール ダウンしてタイリングすることで、特定のメッシュに固有の大きな高解像度テクスチャを使用するよりもコストが低くなります。
リソースの割り当ては、ゲーム開発中の決定に影響を及ぼすことがよくあります。 プレイヤーがあまり注意を向けない可能性のあるエリア (床など) のリソースを節約することで、チームは、リアルタイム シネマティックスでクローズアップされるキャラクター、アイテム、またはジオメトリ用の高解像度のテクスチャ、独自のテクスチャ、または手描きのテクスチャに、より多くのリソースを費やすことができます。
ここでは、テクスチャ座標式を使ってディフューズ マップと法線マップの両方のタイリングを制御します。 乗算という新しい式も使用します。 乗算式は 2 つの入力を受け取り、それらを 1 つの出力にまとめます。
タイリング テクスチャを作成するには、次の手順を実行します。
マテリアル エディタのプレビュー ウィンドウで、メッシュをプリミティブ平面に設定すると、マテリアルがより明確に表示されます。
テクスチャをよりよく見えるようにするには、プレビューのライティングを調整する必要があります。 プレビュー ウィンドウで L キーを押したまま、光源を左クリックしてドラッグします。
マテリアル グラフ内で右クリックして、リストから Texture Coordinate ノードを追加します
Texture Coordinate ノードの出力からドラッグしてMultiply ノードを検索して作成します。
Multiply ノードの B 入力からドラッグし、定数を作成します。
定数の浮動小数値を
1に設定します。Multiply ノードの出力をドラッグして、Diffuse ノードと Normal Texture Sample ノードの UV 入力に接続します。
タイリング マテリアルが完成しました。 タイリングを 2 回実験してみましょう。整数でスケール アップし、分数でスケール ダウンします。
マテリアル グラフで、テクスチャ座標を制御する定数を選択します。
値を
2に設定します。
ディフューズ マップと法線マップは、ネイティブ スケール (1.0) では 5x5 のブロック グリッドです。それらを 2 倍にスケール アップすると、10x10 のブロック グリッドになります。 注意深く見ると、テクスチャの不完全な部分が繰り返し現れているのがわかります。
そして、値を 0.5 に設定します。 このテクスチャが正しくタイリングされていないことが分かります。 ディフューズ マップが 6x6 のグリッドであれば、0.5 にスケール ダウンしても切り取られることはありません。 マップを作成する際は、Unreal Engine でテクスチャがどのようにスケーリングされるかに留意することが重要です。
メッシュの UV はテクスチャのタイル化に影響を与える可能性があります。UV を伸縮すると、不要なテクスチャが伸縮する可能性があります。 その詳細については、このチュートリアルで後ほど説明します。このチュートリアル シリーズの次のパートでその解決方法を紹介します。
マテリアル グラフの整理
ここで少し立ち止まり、整理について考えてみましょう。 マテリアル グラフが複雑化した場合は、ノードを整理して開発チーム向けにロジックを明確にすること、つまり開発中にプロセス振り返ることが効果的です。 整理するために、コメント ボックスを使用して、グラフ内にサーフェスの境界とヘッダーを作成できます。
コメント ボックスを作成するには、次の手順を実行します。
Texture Coordinate ノードと Multiply ノードを選択します。 キーボード ホットキーの Q を押すと、それらが水平方向に整列します。
Texture Coordinate、Multiply、Constant を選択し、キーボード ホットキーの C キーを押してコメントを入力します。
コメント ボックスの見出しを「
UV Tiling」に変更します。マテリアルを保存します。
白いコネクター スプラインをクリーンアップするには、それらをダブルクリックしてブレークポイントを追加します。 Q キーを押すと、式やブレークポイントが水平方向に整列します。
マテリアル グラフは次のようになります。
Constant3Vectors でプロパティを制御する
定数について説明したので、Constant3Vector を使用する準備ができました。 ベクター変数と同様に、Constant3Vectors は 1 つではなく 3 つの浮動小数値を保持できます。 これは、XYZ 座標や RGB 情報の調整に便利です。
このセクションでは、Constant3Vector を使用して RGB カラーを設定します。 Multiply ノードを使用して、その色をディフューズ マップと組み合わせ、色相を非破壊的に変更します。
ディフューズ マップの色相を変更するには、次の手順を実行してください。
マテリアル グラフで、Diffuse Texture Sample ノードの RGB 出力からドラッグし、選択メニューから Multiply ノードを作成します。
Multiply ノードの output からドラッグして、マテリアルのルート ノードの Base Color 入力に接続します。
Multiply ノードの B 出力からドラッグして、Constant3Vector ノードを作成します。
Constant3Vector ノードの カラー ボックス をダブルクリックして カラーピッカー を開き、色を選択するか、HEX sRGB
CDDAFFFFを入力して進みます。Constant3Vector ノードと Multiply ノードを選択し、C キーを押して、「
Diffuse Hue」というコメント ボックスを作成します。マテリアルを保存します。
マテリアル グラフは次のようになります。
これで親マテリアルが完成しました。 次のセクションでは、マテリアル階層の操作と、変更のインスタンスへの反映について詳しく説明します。
静的な値およびパラメータ
ここまでは、静的な値のみを使用してきました。 静的な値はコンパイル時間中に設定される値であり、ランタイム時には変更できません。 次のセクションでは、静的な値をパラメータに変換する方法について学習します。 パラメータはブループリントを通じてランタイム時に変更できます。
反映階層を覚えていますか? 他のプロパティと同様に、パラメータは親から子に反映されます。
ただし、他のプロパティとは異なり、パラメータは子マテリアル インスタンスでオーバーライド可能です。 MI_DefaultColorway のベース カラーを変更した際に、すでにパラメータを使用しました。
これは、公開パラメータおよび公開済みパラメータとも呼ばれます。
静的な値をパラメータに変換する
親マテリアルは、全ての子インスタンスに対して柔軟に機能する基盤として機能することを覚えておいてください。 プロパティを公開する場合は、複数のアセット間でマテリアルがどのように使用されるかを考慮することが重要です。 この場合は、M_Surfaces を使用して、3 つのゲーム アセットをサーフェス化します。
セット ドレッシング
床
床の濡れた外観と乾いた外観 (次のチュートリアルで説明します)。
セット ドレッシングまたはセット デコレーション (セット デック) は、映画の用語で、レベル内のプレイヤーが操作できない静的なアセットを指します。
これらの用途を念頭に置いて、次の項目を制御する定数を変換する必要があります。
UV タイリング
ディフューズ マップ
ディフューズ色相
法線マップ
ラフネス
式をパラメータに変換するには、次の手順に従ってください。
M_Surfacesのマテリアル グラフで、[Constant in UV Tiling (UV タイリングにおける定数)] を選択します。ノードを右クリックし、[Convert to Parameter (パラメータに変換)] を選択します。
パラメータの名前は、識別可能で、変更される値に関連する適切なものにしてください。 ここでは、「
UV Tiling」とします[Roughness (ラフネス)] プロパティに接続されている定数を選択し、右クリックして、[Convert to Parameter (パラメータに変換)] を選択します。
新しいパラメータの名前を「
Roughness」にします。ディフューズ色相を制御する Constant3Vector を選択し、ベクター パラメータに変換して、名前を「
Diffuse Hue」に変更します。ディフューズ TextureSample を選択してパラメータに変換し、名前を「
Diffuse」に変更します。法線 TextureSample を選択してパラメータに変換し、名前を「
Normal」に変更します。マテリアルを保存します。
マテリアル グラフは次のようになります。
次に、マテリアル インスタンスを作成して、ゲーム アセットをサーフェス化します。
マテリアル インスタンスを作成する
このセクション (床とセット ドレッシング) でサーフェス化するアセットごとに 1 つのマテリアル インスタンスを作成してみましょう。
マテリアル インスタンスを作成するには、次の手順を実行します。
コンテンツブラウザで
M_Surfaceを右クリックして、[Create Material Instance (マテリアル インスタンスを作成)] を選択します。名前を「
MI_Surfaces_Floor」にします。「
MI_Surfaces_Tile」という名前で 2 つ目のマテリアル インスタンスを作成します。MI_Surfaces_Floorをダブルクリックしてマテリアル インスタンス エディタを開きます。
M_Surfaces で公開したパラメータが、この子インスタンスの Details パネルでグループ化されていることにご注目ください。
次に、これらのインスタンスをレベル内のメッシュに適用し、公開したプロパティを調整します。
マテリアル インスタンス オーバーライド
このセクションでは、Lvl_Adventure の Hallway 2 にあるフロア メッシュに MI_Surfaces_Floor を適用します。
このインスタンスをフロアに適用するには、次の手順を実行します。
[Outliner (アウトライナー)] で、「Hallway2」フォルダーを見つけ、名前に
Floorが含まれるアイテムを全て選択します。詳細パネルの [Materials (マテリアル)] カテゴリの [Element 0 (要素 0)] で、
MI_ProcGridをMI_Surfaces_Floorに置き換えます。
床を詳しく見てみましょう。 フロア メッシュのテクスチャに繰り返しが確認できます。 プロジェクトによっては、明らかな繰り返しが望ましくない場合があります。
テクスチャ ブレンディング、距離ブレンディング、テクスチャ ボミング、デカールなど、タイリングの問題を隠す方法は数多くあります。 このチュートリアルでは、テクスチャを拡大しても問題ない程度の解像度が確保されています。
インスタンス内の UV をスケール アップするには、次の手順を実行します。
MI_Surface_Floorの [Details] パネルにある [Global Scalar Parameter Values (グローバル スカラー パラメータ値)] で、[UV Tiling (UV タイリング)]を選択し、値を「0.2」に設定してください。マテリアル インスタンスを保存します。
スケールアップされた UV を使用すると、床のタイルが目立たなくなり、プレイヤー キャラクターと比較して床タイルのサイズが適切で、プレイヤーの視点からテクスチャは鮮明なままで、レベルの広い領域がサーフェス化されます。 高解像度テクスチャに不要なリソースを費やすことなく、これらを全て実現できました。
マテリアル インスタンスを再利用する
石でできた別のアセットをすばやくサーフェスに追加する必要がある場合を考えてみましょう。 プロパティをオーバーライドすることで、親マテリアルを再利用し、独自のアセットを手軽に作成できます。 この場合は、セット装飾として、石の床材の積み重ねを作成します。
床タイル メッシュを作成するには、次の手順を実行します。
Unreal Editor のツールバーで、[Add (追加)] > [Shapes (形状)] > [Cube (キューブ)] をクリックします。 [Outliner (アウトライナー)] で名前を「
Tile」にします。Tile を選択した状態で、詳細パネルの [Scale (スケール)] を
0.5、0.5、0.05に変更します。Unreal Editor のツールバーで、[Add (追加)] > [Shapes (形状)] > [Cube (キューブ)] をクリックし、名前を「
Slab」にします。Slab を選択した状態で、詳細パネルの [Scale (スケール)] を
1.5、1.0、0.05に変更します。Tile を選択した状態で、Alt キーを押しながらビューポートで複製されたスタティック メッシュをドラッグします。 Slab についても同じ手順を行います。 これらのアセットを好きな位置に配置します。
タイルを床よりも微妙に目立たせるには、次の手順を実行します。
M_Surfaces_Tileをダブルクリックして開きます。 詳細パネルで、[UV Tiling (UV タイリング)] をオンにして、フロア メッシュと一致するように値を0.2に設定します。[Global Vector Parameter Values (グローバル ベクター パラメータ値)] で [Diffuse Hue (ディフューズ色相)] をオンにし、HEX sRGB を
A5AEC9FFに設定します。インスタンスを保存します。
[Outliner (アウトライナー)] で Tile の全てのインスタンスを選択します。 詳細パネルの [Materials (マテリアル)]>[Element 0 (要素 0)] で
MI_Surfaces_Tileを追加します。Slab の全てのインスタンスを選択し、
MI_Surfaces_Tileを適用します。
問題がありますよね。 タイルの解像度は床メッシュと同等ですが、スラブのスケールを調整すると、その UV はメッシュに合わせて (均一に、不均等に) スケールされます。 このため、石のマテリアルは伸縮します。 これは、特にメッシュの側面に沿って顕著に現れます。
プロジェクトによっては、マテリアルの解像度がさまざまなアセット間で一貫してスケーリングされ、伸縮しないようにする必要があります。
開発環境では、メッシュ ジオメトリ (UV マッピング) を調整するか、3 面投影 (メッシュの X、Y、Z 軸に沿って均一にマテリアルを適用する方法) を使用することで、この問題を解決できます。
この例では、M_Surfaces から継承したテクスチャ マップをオーバーライドすることで、セット ドレッシングのまったく新しい外観を作成します。
MI_Surfaces_Tileの詳細パネルの [UV Tiling (UV タイリング)] の隣にある値を1に設定します。[Diffuse (ディフューズ)] を選択して「
Gray」を検索します。[Normal (法線)] を選択し、「
T_Base_Tile_Normal」を検索します。[Diffuse Hue (ディフューズ色相)] の隣に「HEX sRGB
D0CECBFF」と入力します。インスタンスを保存します。
これで、セット ドレッシングとフロアが完成しました。
より実践的な開発環境では、より効率的なアプローチを採用してセット ドレッシングを作成することが多いでしょう。 たとえば、ジオメトリを節約するために、フロア メッシュの一部としてルース フロア タイルを含めることができます。
これで、柔軟な親マテリアルと 2 つの固有のマテリアル インスタンスが作成できました。 また、このコースでは次のことについても学習しました。
リソース割り当ての管理:リソースを慎重に割り当てることで、重要なゲーム アセットにより多くのリソースを費やすことができます。
エディタ内でのアセットの整理:チームは、整理と命名規則によって、数百個のアセットを処理する際の混乱を回避できます。
モジュール式ワークフローの構築:非破壊的なモジュール式ワークフローにより、反復作業や時間のかかる作業を回避できます。これは、開発スケジュールがタイトである場合には不可欠です。
芸術的な選択と技術的制限のバランスの調整:ゲーム開発では、技術的制限を回避するために創造的に検討することや、芸術的なルックアンドフィールを十分維持できる妥協点を見つけることがよくあります。
次の内容
次のチュートリアルでは、3 面投影、スタティック スイッチによる反映階層の分割、ブループリントを使用したレベル内でのプレイヤー アクションに基づいたマテリアルの制御について学びます。