マテリアル エディタ - テクスチャ マスクの操作ガイド

マテリアルでテクスチャ マスクを使用するための操作ガイド

Choose your operating system:

Windows

macOS

Linux

3D アセットを作成する場合、同じマテリアル内で異なるサーフェス タイプを定義する機能が必要になるかもしれません。 これを行う簡単で負荷が低い方法は、テクスチャ マスクを使用するものです。テクスチャ マスクはどのサーフェスがマテリアルのどのセクションによって影響を受けるかを定義します。 以下の操作ガイドではアンリアル エンジン 4 のマテリアル内でテクスチャ マスクを使用する方法について説明します。

テクスチャ マスク

テクスチャ マスクはグレースケールのテクスチャ、またはテクスチャの単一チャンネル (R, G, B, または A) であり、マテリアル内のエフェクト領域を制限するものです。 多くの場合、マスクは他のテクスチャの単一チャンネル内に入っています。例えば、Diffuse または Normal map の Alpha Channel などです。 これは未使用のチャンネルを利用し、マテリアルでサンプリングされているテクスチャ数を最小限に維持する良い方法です。 技術的には、どのテクスチャのどのチャンネルでもテクスチャ マスクと考えられ、使用することが可能です。

以下は、スターター コンテンツの SM_Chair スタティックメッシュに対するテクスチャ マスクがどのように見えるかの例です。

TM_Chair_Mask_Texture.png

テクスチャ マスクを作成する

テクスチャ マスクは 2D 画像操作プログラムで作成することができます。 これを行うにはマスクしたいエリアを白色でペイントし、他の部分をすべて黒のままにします。 以下の画像で実際にどのように機能するかがわかります。

TM_Mask_Break_Down.png

右側のグリーンで囲った部分は、マスク テクスチャがどのように見えるかを表しています。 ごくわずかなエリアが白色でペイントされ、他のエリアはすべて黒でペイントされているのがわかります。 これは、白色部分のエリアだけにエフェクトを適用したいからです。 左側の画像では、椅子のメッシュに適用した場合に、このマスク テクスチャによってどのエリアがマスクされるかがわかります。

テクスチャ マスクを作成する場合、常に黒または白を使用するようにします。カラー情報は絶対に使用しないでください。UE4 内でマスクを使用する場合、他のタイプの色を使用すると、不自然なアーティファクトが生じます。

テクスチャ マスクをエクスポートする

マスク テクスチャのペイント作業が終わったら、単一画像としてエクスポートするか、または複数のマスクをまとめて単一画像の R、G、B および A チャンネルにパックしてエクスポートすることができます。 これは一般的に RGB マスクのパッキングと呼ばれ、優れたパフォーマンスとメモリ節約を実現できるためマスク テクスチャを作成する場合に好ましい方法です。

テクスチャのアルファ チャンネルに何かをパックする場合は、ご使用の 2D 画像操作ソフトウェアでアルファのエクスポートを必ず有効にしてください。 アルファが有効でないと、テクスチャのエクスポート時にアルファ チャンネルがエクスポートされないリスクがあります。

テクスチャ マスクを使用する

マスク テクスチャは UE4 のマテリアル エディタ内で多様な方法で利用することができます。 これはエミッシブ光源の定義から、ラフネス テクスチャとしての使用まで利用可能です。 以下のセクションでは、UE4 でテクスチャ マスクを使用する非常に一般的ないくつかの方法について説明します。

エミッシブ マスク

マスク テクスチャで非常に一般的なのはマテリアルのエミッシブ部分を制御するための使用です。これは通常、まずエミッシブ マスク テクスチャを作成して行います。 エミッシブ マスク テクスチャは、白を使用してマテリアルのどのセクションをエミッシブにするかを定義し、そのマスク テクスチャをマテリアル エディタ内の色で乗算処理します。 これは通常、エミッシブ エフェクトの外観と強度の制御を強化するために行います。 以下の例では、エミッシブ テクスチャ マスクが実際にどのように機能するかがわかります。

TM_Emissive_Mask_Materail.png

上の例ではマスク テクスチャを使用して、マテリアルのどのセクションがエミッシブになるかを定義しています。 エミッシブで使用する色は、マスク テクスチャを Vector 3 で乗算処理したものです。 エミッシブの輝度はスカラー値によって制御されています。 こうした方法でエミッシブ マスクを使用する主な利点は、エミッシブのルック&フィール (外観と質感) に関連するものを変更する必要があれば、 テクスチャを更新し、再インポートする代わりにマテリアル内のパラメータを変更するだけでできることです。

マテリアルのマスキング

マスク テクスチャでもうひとつ一般的なのは、様々な種類のテクスチャ情報を各 R、G、B およびアルファ チャンネルに格納することです。 この技術を表す最適な例として、スターター コンテンツに入っている SM_Chair スタティックメッシュをご覧ください。

SM_Chair とそれに関わるすべてのコンテンツは、 コンテンツ ブラウザ から スターター コンテンツ を選択し、検索ボックスに「chair」と入力すると見つかります。 これでこの椅子に関するすべてのコンテンツが表示されます。椅子が見つからない場合、プロジェクトにスターター コンテンツを入れていないからかもしれません。 これを修正するには新規プロジェクトを作成するか、 Migrating Assets ツールを使用して椅子のコンテンツを別のプロジェクトから ここに移動します。

椅子のマテリアル、M_Chair を開くとテクスチャ マッピングが機能している最適な例を見ることができます。

TM_Chair_Material.png

このマテリアルでは、マスク テクスチャ、 T_Chair_M を使用して椅子の外観のあらゆる側面を制御しています。 どのセクションからメタルか非メタルであるかから、こうしたセクションがどのような色になるかまで、マスク テクスチャはこれらすべてを定義するのに役立ちます。 以下の画像では、マスク テクスチャの各チャンネルが SM_Chair に対してどのように機能しているかの内容がわかります。 左側は、テクスチャとしてマスクがどのように見えるかを表しています。 右側の小さな画像は、各チャンネルとこうしたチャンネルが椅子のスタティックメッシュ上のどのエリアに影響を及ぼすかを表しています。

TM_Mask_Example.png

以下は、この椅子のマスク テクスチャの各チャンネル内に格納される情報のタイプの内容です。

  • 赤チャンネル :アンビエント オクルージョン情報です。マテリアルでは、これは基本色にサーフェスのバリエーションを加えるために使用されます。 TM_Red_Channel.png

  • 緑チャンネル :メタリック マスクです。マテリアルでは、どの部分がメタルになるかを定義するために使用されます。メタルがどのような色になるかを定義するためにも使用されます。 TM_Green_Channel.png

  • 青チャンネル :非メタリック マスクマテリアルでは、どの部分がメタルにならないかを定義するために使用されます。このマスクは非メタル部分の色を定義するためにも使用されます。 TM_Blue_Channel.png

  • アルファ チャンネル :オブジェクト全体のマスクです。これは現在、マテリアルでは使用されません。

すべてをまとめると椅子は UE4 のレベル内で以下のように見えます。

TM_SM_Chair.png

マスキングのヒントとコツ

テクスチャ マスキングは特に UE4 内の他のツールと組み合わせた場合に非常に強力なツールになります。以下のセクションでは、実際の作業でテクスチャ マスキングの威力を十分に発揮するための ヒントとコツについて説明します。

テクスチャ マスキングとマテリアルのインスタンス化

テクスチャ マスキングとマテリアルのインスタンス化を合わせて使用することは、アセットにほぼ無限の多様性を加える素晴らしい方法です。 例えば、テクスチャ マスクを使用してどのエリアが色などの特定のプロパティを持つかを定義し、続いて別のマテリアル インスタンスを使用してこうした各プロパティを変更することでほぼ限りなく多様な選択肢があります。

TM_TM_&_MI.png

例えば、SM_Chair マテリアルからマテリアル インスタンスを作り、色とその他の値を調整すると、上の画像のようにほぼ無限の様々な外観の椅子にすることができます。

マスキングとチャンネルのアーティファクト

DirectX は思いがけない動作をするため、テクスチャの緑チャンネルが最適な圧縮になることが多くあります。ご利用のマスクで圧縮のアーティファクトが問題になっていれば、その情報を緑チャンネルに入れてみて改善されるかを見てみましょう。問題が解決しなければ、アルファ チャンネルを使用して情報を格納してみましょう。

テクスチャのアルファ チャンネルを使用してマスク テクスチャを格納しようとする場合は注意してください。テクスチャにアルファ チャンネルを追加すると、そのテクスチャのメモリ使用量が大幅に増えます。 これをやりすぎると、様々なマスク テクスチャをテクスチャの RGB チャンネルにパックして得た節約分をすべて失いかねません。

sRGB とマスク テクスチャ

複数のマスク テクスチャを単一のテクスチャにパッキングする場合は、sRGB を 無効 にする必要があります。マスクはガンマ補正すべきではないからです。

TM_Disable_sRGB.png

しかし、これを行うと 2D Texture Samplers ノード タイプを必ず調整する必要があります。 2D Texture Samplers は、入力しているテクスチャで sRGB が有効になっていることを想定しているからです。 この Sampler Type を変更しないとマテリアルはコンパイルに失敗し、以下のメッセージが統計情報ログに表示されます。

TM_sRGB_Sampler_Node_Error.png

このエラーを修正するには、Sampler Type をデフォルトの Color から Linear Color に変更するだけです。これで警告は表示されなくなります。 しかし、念のため、マテリアルを再コンパイルし、変更が適用されていることを確認します。完了すると警告が消えてマテリアルを使用する準備が整います。

まとめ

テクスチャ マスキングは非常にパワフルな概念です。一度習得すると、わずかなソース コンテンツからほぼ無限のバリエーションを生み出すことができます。 1 つのマスク テクスチャで利用可能なチャンネルは 4 つだけであることを覚えておいてください。したがって、慎重に使用してください。 マスク テクスチャで sRGB を必ず無効にしてください。無効にすることでマスクの鮮明度が非常に高まるからです。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル