Choose your operating system:
Windows
macOS
Linux
マテリアルを至近距離で見るとマテリアルで使われているテクスチャが分解し非常にピクセル化が進み、その結果見栄えが悪くなります。 この問題に対処するには、マテリアルを至近距離で見た場合のテクスチャのピクセル化を隠すのに役立つディテール テクスチャを使用します。
ディテール テクスチャリング
Detail Texturing は、オブジェクトに対する元となるディフューズと法線上で、ディフューズと法線マップの組み合わせをより高度に繰り返してレイヤーを重ねて、テクスチャ内にディテールの多い錯覚を与える関数です。 これにより通常可能なレベルよりも、近距離でのディテールの錯覚はさらに増します。 これは実際のディテール テクスチャの例です。
左側の 1 は、ディテール テクスチャを利用したマテリアルです。 右側の 2 は、ディテール テクスチャを利用していないマテリアルです。 左側の 1 の画像は法線マップよりも詳細に見え、右側の画像に比べてはるかに鮮明に見えます。
ディテール テクスチャ ノードの分類
パレット で Detail Texturing を検索すると、使用可能な Detail Texturing マテリアル関数があることがわかります。 使用したいテクスチャと設定を入力するだけのこの方法が一番早いですが、マテリアルにディテール テクスチャを適用する方法は他にもあります。
プロパティ |
説明 |
---|---|
Scale(S) |
ディテール テクスチャのスケールを設定します。数が大きくなるほどタイリングの数が多くなり、数が小さくなるほどタイリングが少なくなります。 |
Diffuse(V3) |
ディフューズ テクスチャの入力です。 |
DetailDiffuse(T2d) |
ディフューズ ディテール テクスチャの入力です。この入力は Texture Object だけを受け取ることができます。 |
DiffuseIntensity(S) |
ディテール ディフューズ テクスチャの強度を調整します。 |
Normal(V3) |
法線マップ テクスチャの入力です。 |
DetailNormal(T2D) |
法線マップのディテール テクスチャの入力です。この入力は Texture Object だけを受け取ることができます。 |
NormalIntensity(S) |
ディテール法線マップの強度を制御します。 |
テクスチャ サンプルをテクスチャ オブジェクトに変換
Detail Texturing マテリアル関数が正しく機能するためには、ディテール テクスチャとして使用したいテクスチャを通常のテクスチャからテクスチャ オブジェクトに変換する必要があります。 テクスチャをテクスチャ オブジェクトに変換するには、以下の手順に従います。
-
まず、ディテール テクスチャとして使用するテクスチャを探します。
-
テクスチャが見つかったらその上で 右クリック します。これを行うとメニューが表示されます。メニューから [Convert To Texture Object (テクスチャ オブジェクトへ変換)] オプションを選択します。
-
テクスチャ サンプルは以下のようになっているはずです。
マテリアルでディテール テクスチャを使用する方法
マテリアルがディテール テクスチャを使用するようにセットアップする方法は以下の 2 つがあります。 使用する方法は、マテリアルとプロジェクトのニーズによります。 結果は両方とも同じなので、いずれかの方法が優れているというわけではありません。
プロジェクトに スターター コンテンツ を入れれば、以下のセクションで使用するすべてのコンテンツは見つかります。以下で説明するテクニックは、どのテクスチャでも機能しますが、手順に従う場合はプロジェクトに スターター コンテンツ が含まれていることを確認してください。
作業を開始する前に、テストに使用できる非常に単純なマテリアルをセットアップしてみましょう。 これを行うには、 コンテンツ ブラウザ で 右クリック し、ポップアップ メニューの [Create Basic Asset (基本アセットを作成)] セクションから [Material] を選択します。 選択すると新規 マテリアル が作成されます。マテリアルに 「Detail_Material」 と名前を付けます。完了すると コンテンツ ブラウザ は以下のようになるはずです。
Detail Texturing Material 関数と共に使用
-
上記で作成した新規マテリアルを開くには、 コンテンツ ブラウザ でそのマテリアルを マウスの左ボタン で ダブルクリック します。
-
マテリアルを開いた状態で以下のテクスチャを コンテンツ ブラウザ からマテリアルグラフにドラッグして追加します。
-
T_Brick_Clay_Old_D
-
T_Brick_Clay_Old_N
-
T_Ground_Gravel_D
-
T_Ground_Moss_N
完了すると、マテリアルグラフは以下のようになります。
-
-
必要なテクスチャをすべてマテリアル グラフに追加した状態で、 Detail Texturing マテリアル関数を追加します。これを行うには最初に パレット で Detail Texturing を検索します。
-
Detail Texturing マテリアル関数が見つかったら、 マウスの左ボタン でクリックし、そのまま押した状態で パレット からマテリアル グラフにドラッグします。マテリアル グラフ上で、 マウスの左ボタン を放し、 Detail Texturing マテリアル関数をマテリアル グラフに配置します。
-
Detail Texturing マテリアル関数を追加した状態で、マテリアルが機能するように必要な入出力の接続を開始します。この例では、 T_Brick_Clay_Old テクスチャをベース テクスチャとして使用し、 T_Ground_Gravel をディテール テクスチャとして使用します。つまり、 T_Brick_Clay_Old の Diffuse と Normal map は、Diffuse および Normal の入力につなげ、 T_Ground_Gravel の Diffuse と T_Ground_Moss Normal map は、Diffuse および Normal の入力につなげます。完了すると、マテリアル グラフは以下のようになります。
T_Ground_Gravel の Diffuse と T_Ground_Moss の Normal Map の テクスチャ サンプリングは Texture Object に変換する必要があります。変換しないとマテリアルは機能しません。詳しい操作方法については、上記の テクスチャ サンプルのテクスチャ オブジェクトへの変換 のセクションをご覧ください。
-
テクスチャが接続されたので Constant マテリアル式を追加し、ディテール テクスチャのスケールや強度などを微調整できるようにします。Constant マテリアル式を探すには、マテリアルのパレットで Constant を検索し、Constant を パレット からマテリアル グラフにドラッグします。Constant マテリアル式をひとつ追加したら、最初にこの式を選択し、 CTRL + W キーを 2 回押して複製します。最終的に Constant マテリアル式を 3 つにします。
-
適切な数の Constant マテリアル式をマテリアル グラフに追加した状態で、それらを接続し、データを入れます。これは、 Constant マテリアル式の出力を Detail Texturing マテリアル式の入力に接続するだけでできます。次に Constant マテリアル式のそれぞれに 1 の値を入力します。完了すると、マテリアル グラフは以下のようになります。
-
Constant マテリアル式ノードの値を調整することで、ディテール テクスチャの見え方に影響を及ぼすことができます。以下の例は Scale の値を 1 から 5 に、最終的には 10 に設定した場合に何が起こるかを表したものです。
Detail Material 関数なしの場合
何らかの理由で Detail Texturing マテリアル関数を使用できない場合は、以下の手順に従いマテリアル グラフ内でマテリアル式ノードを使用してこの機能をいつでもビルドできます。
-
コンテンツ ブラウザ 内でマテリアル上で右クリックして Detail_Material のコピーを作成します。次にメニューから [Duplicate (複製)] を選択します。
-
作成したらマテリアルに Detail_Material_2 とラベルを付けます。完了すると、 コンテンツ ブラウザ は以下のようになります。
-
作成した新規マテリアルを開くには、そのマテリアルを マウスの左ボタン でダブルクリックします。開いたら、テクスチャ以外のものをすべて削除し、テクスチャ オブジェクトをテクスチャ サンプルに必ず戻すようにするために、まずテクスチャ オブジェクトをすべて選択し、その上で右クリックし、メニューから [Convert To Texture Sampler (テクスチャ サンプリングへ変換)] を選択します。完了すると、マテリアル グラフは以下のようになります。
-
これで何もかもクリーンアップされ、変換されたので、必要なマテリアル式ノードの配置を開始できます。ここでは以下のノードのタイプと数が必要です。 パレット で検索すると以下のマテリアル式ノードが見つかります。
-
Texture Coordinate x 1
-
Clamp x 1
-
Constant x 2
-
Add x 2
-
Multiply x 3
完了すると、マテリアル グラフは以下のようになります。
-
-
必要なマテリアル式ノードがすべて追加されたら、次は全てを接続していきます。最初に接続するセクションは、Base Color 部分です。完了すると、マテリアル グラフは以下のようになります。
-
次に Base Color をセットアップしたときと同じようにして法線マップを接続する必要があります。完了すると、マテリアル グラフは以下のようになります。
-
Base Color と法線マップをすべて接続した状態になり、これでマテリアルをコンパイル、保存、使用する準備が整いました。
ディテール テクスチャのコツとヒント
以下のセクションではマテリアルでディテール テクスチャを使用する様々な方法についてのコツとヒントを説明します。
距離ベースのディテール テクスチャ
テレインなどの大きなサーフェスを扱う場合は、使用しているテクスチャをタイリングしても、特に遠くで見栄えの悪い繰り返しが数多くあることに気づくでしょう。 これを修正するために以前作成したディテール マテリアルにカメラが近くにある場合にあるテクスチャを表示し、カメラが離れると別のテクスチャを表示できるようにビルドします。 これは距離ベースのテクスチャ ブレンディングと呼ばれることが多く、以下の手順でセットアップできます。
-
最初に Detail_Material_2 のコピーを作成し、「Distance_Fade」 と名前を付けます。名前を付けたらそのマテリアルを開き、 パレット で以下のマテリアル式ノードを検索してマテリアル グラフに追加します。
-
World_Position x 1
-
Camera_Position_WS x 1
-
Distance x 1
-
Divide x 1
-
Power x 1
-
Clamp x 1
-
Constant x 2
-
-
必要なマテリアル式ノードをマテリアル グラフにすべて追加したら、次は全てを接続していきます。テクスチャの変化が起こる距離は Divide マテリアル式に接続される最初の Constant で制御されます。この例の画像では現在 512 に設定されています。完了すると以下のようになります。
-
距離ベースのブレンディングが完了したらマテリアルの残りに追加することができます。これを行うには最初に 2 つの LERP マテリアル式をマテリアル グラフに追加する必要があります。LERP マテリアル式のアルファ入力がテクスチャの切替をする距離を制御するからです。あとはマテリアルの残りを接続するだけです。このマテリアルとオリジナルのマテリアルの唯一の違いは、テクスチャをまとめて最後に追加する代わりに LERP が使用されることです。完了すると、マテリアル グラフは以下のようになります。
-
エフェクトの実際の機能の仕方を見るには、マテリアル プレビュー ウィンドウ内にいる状態で マウスの右ボタン を押し続けてマウスを前後に動かすだけです。前のメッシュからかなり離れている場合、一つのテクスチャから別のテクスチャへのマテリアルのトランジションが確認できます。確認できない場合、 Divide マテリアル式に接続されている最初の Constant を調整します。これは、現在 512 に設定されていますが、任意の小さい数字にします。数が小さいほどオブジェクトにより近い場所でこのエフェクトが機能するからです。
まとめ
ディテール テクスチャは非常にパワフルなツールであり、3D プロジェクトを生き生きとしたものにします。 ただし、ほとんどのパワフルなツールを使用する場合には、パワーを確実に抑制する注意が必要です。 ディテール テクスチャは、ピクセル化をある程度目立たなくするだけであるということを覚えておいてください。 プレイヤーのカメラがオブジェクトにズームインできるようにした場合など、ディテール テクスチャの成果が打ち消されます。 ディテール テクスチャを追加すると、2 つ以上の新たなテクスチャがマテリアルを参照する可能性があり、特にモバイル プラットフォーム上では、これがパフォーマンスやメモリの問題になる場合があることに留意してください。