プロジェクト開発途中で、自己発光マテリアル、または輝くマテリアルが必要になることがあります。Unreal Engine では、自己発光マテリアルは「エミッシブ マテリアル」と呼ばれます。次のチュートリアルでは、 Emissive Color 入力を使用するマテリアルの作成方法、および作成しているワールドに実際にライトをキャストするエミッシブ マテリアルの作成方法について学習します。
エミッシブ ライティング
Unreal Engine のエミッシブ マテリアルを使用すると、アーティストは非常に低負荷かつ効果的な方法でサーフェスが輝いたり光を放ったりしているような印象を生み出すことができ、Unreal の標準のライト タイプを使用する必要もありません。設定によっては、エミッシブ マテリアルは周囲の環境に光を放つ実際の光源のように機能したり、シーン内に光を放つことなく自己発光したりすることもできます。
エミッシブ マテリアルは、 Main Material ノード の Emissive Color 入力に 1.0 より大きい値を入力することで作成します。これによってマテリアルが HDR 範囲内に到達し、 ブルーム エフェクト が発生します。
Lit および Unlit エミッシブ マテリアル
エミッシブ マテリアルは自己発光のマテリアルであり、 Lit (ライティングあり) と Unlit (ライティングなし) の両方のシェーディング モデル で使用することができます。完全にエミッシブなマテリアルを作成する場合は、Unlit シェーディング モデルを使用すると結果的にシェーダーのレンダリング負荷を低くすることができます。マテリアルの一部の側面でシーンからの光を受け取る必要がある場合は、Default Lit (デフォルトのライティングあり) シェーディング モデルを使用できます。
-
Unlit シェーディング モデルの使用例:エミッシブ マテリアルがレベル内のライティングとインタラクションする必要がない場合は、Unlit シェーディング モデルを使用してください。たとえば、ライト カードや電球の表面などの光源をシミュレートする場合などがあります。
-
Default Lit シェーディング モデルの使用例:エミッシブ マテリアルで Main Material ノードの他のいずれかのシェーダー入力を使用する必要がある場合は、Lit シェーディング モデルを使用してください。たとえば、マテリアルの一部のみがエミッシブになるようにテクスチャ マスクを使用する場合などがあります。たとえば、光に照らされた銃のマテリアルを作成する場合は、Default Lit シェーディング モデルを使用し、Normal Map、Base Color、およびその他の入力が機能するようにします。エミッシブ マテリアルから周囲のオブジェクトに光を放つ場合には、Default Lit シェーディング モデルを使用する必要があります。
完全にエミッシブなマテリアルを作成する
このセクションでは、光源の正確なシミュレートに使用する、完全にエミッシブなマテリアルの作成方法を示します。このマテリアルには、光の色と明るさを制御する 2 つのパラメータがあります。
-
コンテンツ ブラウザで 右クリック して、コンテキスト メニューの [Create Basic Asset (基本アセットを作成)] セクションで [Material (マテリアル)] を選択します。新しいマテリアルに「EmissiveLightSource」と名前を付けます。
-
マテリアル グラフに次のノードを追加します。
- Vector Parameter
- Scalar Parameter
- Multiply
Vector Parameter の名前を「Emissive Color」に変更し、Scalar Parameter の名前を「Emissive Strength」に変更します。完了すると、グラフは次の画像のようになります。
-
次の画像のようにノードを接続し、Multiply 出力を Emissive Color 入力に接続します。各パラメータを選択し、[Details (詳細)] パネルにデフォルト値を設定します。以下の例では、 Emissive Color が red に、 Emissive Strength が 6 に設定されています。
-
ツールバーで [Save (保存)] をクリックし、マテリアルをコンパイルしてアセットを保存します。マテリアル エディタを閉じます。
-
コンテンツ ブラウザで [EmissiveLightSource Material (EmissiveLightSource マテリアル)] を 右クリックし 、 [Create Material Instance (マテリアル インスタンスを作成)] を選択します。
-
EmissiveLightSource_Inst アセットをダブルクリックし、マテリアル インスタンス エディタで開きます。パラメータ名の横のボックスをオンにして、両方のパラメータを有効にします。有効にすると、 Emissive Color と Emissive Strength の値をリアル タイムでオーバーライドできます。
マスクされたエミッシブ マテリアルを作成する
この例では、テクスチャ マスクを使用するマテリアルを作成し、マテリアルがエミッシブである部分を定義する方法を示します。このマテリアルでは一部のみがエミッシブであるため、Default Lit シェーディング モデルを使用する必要があります。
このチュートリアルでは、Unreal Engine の スターター コンテンツ のアセットを使用します。以下で説明する技法はどのテクスチャにも適用できますが、この例を再作成する場合はプロジェクトに スターター コンテンツ が含まれていることを確認してください。プロジェクト作成時にスターター コンテンツを含めていない場合は、「アセットを移行する」を参照して、スターター コンテンツを現在のプロジェクトに移行する方法を確認してください。
-
新しいマテリアルを作成し、マテリアル エディタで開きます。このマテリアルでは、 Default Lit シェーディング モデルを使用してください。
-
以下のマテリアル表現式をグラフに追加します。
- Vector Parameter x 2
- スカラー パラメータ x 2
- Texture Sample - T_Tech_Panel_M
- Texture Sample - T_Tech_Panel_N
- Multiply x 4
- Add x 1
前の例と同様に、パラメータを使用してエミッシブの強度と色を制御します。Vector Parameter の名前を「Emissive Color 1」と「Emissive Color 2」に変更します。Scalar Parameter の名前を「Emissive Power 1」と「Emissive Power 2」に変更します。デフォルト値を任意の色および強度に変更します。
-
T_Tech_Panel_M テクスチャには各チャンネルに異なる 4 つの画像のマスクが含まれています。このマテリアルは Red チャンネルと Blue チャンネルを使用し、マテリアルに 2 つの異なるエミッシブ セクションを作成します。
次の図のようにノードを接続します。テクスチャのマスクに含まれるのが純粋な黒と白の値であるため、このようなロジックが有効です。色のパラメータがテクスチャ マスク内の値と乗算されると、マスク内の黒のピクセルはエミッシブ値 0 を出力します。次のプレビューのように、マスクの白い部分のみがエミッシブです。Material Instance 内の 2 つの各エミッシブ領域で、色と強度を別々に変更できます。
-
ツールバーで [Save (保存)] をクリックし、マテリアルをコンパイルしてアセットを保存します。マテリアル エディタを閉じます。
-
コンテンツ ブラウザで EmissiveMaterialMasked アセットを 右クリックし 、 [Create Material Instance] を選択します。
-
EmissiveMaterialMasked_Inst アセットをダブルクリックし、マテリアル インスタンス エディタで開きます。[Material Instance] で 4 つのパラメータの横のボックスをすべてオンにして、オーバーライドします。有効になると、2 つのエミッシブな領域の外観を個別に制御できるようになり、 Emissive Power パラメータを 0 に設定することでオンとオフの切り替えもできます。
テスト マップを作成する
残りの例では、次に示す単純なテスト マップを使用し、Unreal の環境内でエミッシブ ライトがどのように伝播されるかを示します。
同様のテスト マップを作成するには以下の手順に従います。このシーンのすべてのアセットは Unreal のスターター コンテンツを利用しています。
-
[File (ファイル)] > [New Level (新規レベル)] に移動し、[New Level] ダイアログの [Time of Day (時間帯)] オプションを選択して新しいレベルを作成します。
キーボードのショートカット Crtl + N でも、新規レベルを作成できます。
-
デモ シーンは、以下に示すアセットを使用して作成されています。
- Wall_500x500 - 以下のように部屋の形状に配置した 5 つのインスタンス。
- M_Brick_Clay_New - 5 つすべてのウォール インスタンスに適用されるマテリアル。
- Shape_sphere - テスト ルームの中央に配置されています。
-
部屋が完成したら、キーボードの CTRL + S を押してマップを保存します。
Lumen を使用したエミッシブ マテリアル
Lumen グローバル イルミネーションが有効になっている場合は、エミッシブ マテリアルからの光は自動的にシーン内に伝播され、追加のパフォーマンス コストも発生しません。これはライティングのアプローチとして強力かつ高度にダイナミックですが、エミッシブな光源でも非常に小さいものまたは非常に明るいものを使用する場合には、いずれもノイズ アーティファクトが発生するため、注意する必要があります。
新規作成した Unreal Engine 5 のプロジェクトでは、Lumen グローバル イルミネーションはデフォルトで有効です。以前の UE4 プロジェクトを UE5 に変換する場合は、Lumen を手動で有効にする必要があります。Lumen の有効化についてはこちら を参照してください。
以下の動画では、Lumen が有効になっているシーン内で、エミッシブ マテリアルによって光がどのようにキャストされるのかを示しています。エミッシブな光源のサイズによって、光の外観上の明るさやフォールオフ距離がどのように変化するかに特に注目してください。
静的ライトを使用したエミッシブ マテリアル
静的ライトを使用している場合、エミッシブ マテリアルはレベル内に光をキャストすることができますが、この機能はデフォルトで有効ではありません。シーン内で他のライティングを使用することなく CPU Lightmass ビルドが作成された場合、エミッシブ マテリアルの自己発光部分は表示されますが、マテリアルが周囲のオブジェクトを照らすことはありません。
このマテリアルによるキャストをシーン内で有効にするには、[Details] パネルで設定を有効にする必要があります。エミッシブ マテリアルが適用されるスタティック メッシュを選択します。ここでは、キューブです。ここでは、キューブです。
[Details] パネルで「emissive」を検索し、 [Lightmass Settings (Lightmass 設定)] の下でボックスをオンにして [Use Emissive for Static Lighting (静的ライティングにエミッシブを使用)] を有効にします。
[Emissive Boost (エミッシブ ブースト)] という設定もあります。Lightmass ビルドを作成し、エミッシブ ライトが暗すぎる場合は、 1 よりも大きい値を入力して結果をブーストすることができます。その他の明るさを上げる方法として、[Material Instance] の [Emissive Power (エミッシブ強度)] パラメータを大きくする方法があります。
次のスライダは、[Use Emissive for Static Lighting] オプションがオンの場合と、ブーストを 2 にした場合に静的ライトがどのように変化するかを示します。
エミッシブと GPU Lightmass
GPU Lightmass を使用してライティングをベイクする場合、 [Use Emissive for Static Lighting] 設定は必要ありません。エミッシブ マテリアルからの光が自動的に GPU Lightmass の結果に伝播されます。GPU Lightmass のベイクでエミッシブ ライティングの明るさを上げるまたは下げる場合、[Material] または [Material Instance] の明るさの値を変更します。
エミッシブの影響とブルーム
エミッシブ マテリアルの明るさを大きくするほど、マテリアルのエミッシブ セクションから生成されるポストプロセスのブルーム エフェクトが明るくなります。マテリアルのエミッシブの値を大きくしても、ブルーム エフェクトがそのイメージを圧倒するのは避けたい場合があるでしょう。
ブルーム エフェクトは、エミッシブの強度とは別に [Post Process Volume (ポストプロセス ボリューム)] で制御できます。これにより、エミッシブの明るさを大きくする場合でも小さくする場合でも、ブルーム エフェクトを妥当なレベルに維持する方法が得られます。
エミッシブ値を非常に高く設定して、ワールド内のエミッシブ マテリアルからより多くの静的ライトを得ようとする場合は、この値を調節することで補正しやすくなります。
以下の動画では、[Emissive Power] の値の 1 つを 100 に上げることによってブルーム エフェクトが圧倒的になっています。補正するには、ポストプロセス ボリュームを選択して「bloom」で検索し、視覚的により訴求力がある結果になるように値を小さくします。[Bloom (ブルーム)] 設定を [Convolution (畳み込み)] に変更し、カメラのスターバースト効果を模倣することもできます。
間接ライティングの複数回のバウンス
[Use Emissive for Static Lighting] が有効になっている場合は、間接ライティングで複数のバウンスを使用してスムージングし、ライティングを改善することができます。[World Settings (ワールドセッティング)]* パネルで、 [Lightmass Settings (Lightmass設定)] を展開し、 [Num Sky Lighting Bounces (スカイ ライティングのバウンス回数)]** の値を大きくします。