サブサーフェス スキャタリングは透過 / 半透過のサーフェスを通過しながら光を散乱するライティング現象を表す用語です。 Unreal Engine 4 (UE4) では サブサーフェス と呼ばれる特殊な シェーディング モデル があります。これは、特に皮膚や蝋 (ろう) などの相互作用を必要とするマテリアルに使用されます。 以下の操作ガイドでは、マテリアルでサブサーフェス スキャタリングを使用する方法について知っておくべき内容を説明します。
サブサーフェス シェーディング モデルを有効にする
マテリアルでサブサーフェスシェーディング モデルを使用できるようにするには以下の手順に従います。
[コンテンツ ブラウザ] 内で 右クリック して新規マテリアルを作成します。次に、[Create Basic Asset (基本アセットを作成)] からマテリアルを選択します。 マテリアルを作成したら必ず名前を付けてください。例えば、マテリアルに 「MAT_Subsurface_00」 と名前を付けます。 上記を完了すると、コンテンツ ブラウザ は以下のようになるはずです。
新規作成したマテリアルの上で マウスの左ボタン で ダブル クリック して開きます。
マテリアルを開いた状態で Shading Model を Default Lit から Subsurface へ変更する必要があります。
これでマテリアルをサブサーフェス マテリアルとして使用する準備が整いました。
サブサーフェス マテリアルの設定
サブサーフェス スキャタリングが有効になっている上記のマテリアルを引き続き使用して、基本的なマテリアルを作成し、レベル内でサブサーフェス スキャタリングが動作しているのを確認できるようにします。
マテリアル式ノードをいくつか配置し、作業できるようにします。 例えば、以下のノードを追加していきます。
Vector Parameter x 2
Scalar Parameter x 2
通常のマテリアル ノードの代わりにパラメータ マテリアル ノードを使用する理由は、エディタ内で簡単に微調整できるようにマテリアルからマテリアル インスタンスの作成を可能にするためです。
ノードに接続する前に、最初にデフォルト値を設定するだけでなく名前を付ける必要があります。以下は、ノードの名前とデフォルト値です。
プロパティ名
値
Base_Color
r:1.0, g:1.0, b:1.0
Roughness
0.35
Subsurface _Amount
0.5
Subsurface_Color
r:1.0, b:0, g:0
マテリアル ノードに名前を付けて正しいデータを入力したら、マテリアル ノードをメイン マテリアル ノードに接続します。 ノードをメイン マテリアル ノードに接続するには、マウスの左ボタン を使用して、ノードの右側にある 丸い円 をクリックします。 マウスの左ボタン を押したままの状態で、右 にドラッグすると接続ワイヤーが表示されます。 メイン マテリアル ノードで使用する入力まで マウスの左ボタン を押したままの状態で、右にドラッグし続けます。 マウスが使用する入力上に来たら、マウスの左ボタン を放して接続します。
これですべてのノードが作成されたので、[Apply (適用)] ボタンを押してマテリアルをコンパイルします。完了すると以下のようになります。
マテリアルをコンパイルしたらマテリアル ウィンドウを閉じることができます。次に コンテンツ ブラウザ 内でマテリアルを選択し、その上で 右クリック してメニューから [Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。
サブサーフェス マテリアルの適用
マテリアル インスタンスが作成されたので、新規マテリアルを実際に試してみます。 これを行うには、最初に作業する新規ブランクレベルを作成する必要があります。メイン メニューに進み [File] オプションで [New Level (新規レベル)] を選択します。 レベルのタイプを選択するように促されたら、[Empty Level] を選択します。
新規レベルが作成されたら、サブサーフェス マテリアルの見え方をテストできるように、いくつかのライトを追加する必要があります。追加する最初のライトは、Point Light (ポイントライト) です。Point Light をシーンに追加するには、まず [Modes] メニューの [Lights] オプションの Point Light を探します。Point Light (ポイントライト) が見つかったら、マウスの左ボタン で選択して、マウスの左ボタン を押したままの状態で Point Light をシーンにドラッグして、マウスの左ボタン を解放して Point Light を追加します。ライトをシーンに追加したら、マウスの左ボタン でクリックしてライトを選択します。次に以下の値を入力します。
プロパティ名
値
Location:
X:230, Y: -67, Z:79
Intensity:
128
次に、Spotlight (スポットライト) を追加していきます。スポットライトは、Modes パネルの [Lights] セクションのポイントライトの下にあります。Point Light と同じように Spot Light を画面に追加できます。Spot Light を追加したら、以下の値を入力します。
プロパティ名
値
Location:
X:-320, Y:100, Z:-270
Rotation:
X:0, Y:50, Z:0
Intensity:
39764
完了すると以下のようになります。
すべてのライトを追加したら、スタティックメッシュを追加してテストすることができます。ここの例では、以下のメッシュを使用します。
StaticMesh'/Game/StarterContent/Props/SM_Chair.SM_Chair'
この SM_Chair メッシュが見つからない場合、プロジェクトにスターター コンテンツ を入れていないからかもしれません。 スターター コンテンツの詳しい情報は、
[スターター コンテンツ](understanding-the-basics/projects-templates/creating-new-project/Packs)ドキュメントのページをご覧ください。メッシュが見つかったら コンテンツ ブラウザ からドラッグしてレベルにドロップします。 メッシュがレベルに入ったら、その位置をワールドで 0,0,0 に設定します。 完了すると、レベル ビューポートは以下のようになります。
スタティックメッシュがレベルに配置されたので、サブサーフェス マテリアルを適用することができます。 これを行うには、最初に コンテンツ ブラウザ でサブサーフェス マテリアルを見つけます。 マテリアルが見つかったら、それを コンテンツ ブラウザ から適用するメッシュにドラッグします。
サブサーフェス マテリアルで作業する
これでサブサーフェス マテリアルが適用されたので、マテリアル インスタンスの設定を微調整します。 次のセクションでは、サブサーフェス マテリアルの見え方をどのように制御できるか、また必要な結果を得るためにマテリアル インスタンスの様々なオプションを微調整する方法について説明します。
オパシティの制御
サブサーフェス マテリアルの現在のセットアップでは、オパシティ入力はオブジェクトに散乱させたいライトの量を制御します。
0 に設定するとすべてのライトが散乱し、1 に設定するとライトは全く散乱しません。
以下の例では椅子のメッシュの背面を示し、左側の画像ではオパシティ値は 0、中央の画像では 0.5、右側の画像では 1.0 にそれぞれ設定されています。
番号が 0 から 1 に進むにつれて、オブジェクトを通過するライトの量が少なくなることがわかります。
オパシティは多くの散乱光を取り除くのに役立ちますが、まだサブサーフェス スキャタリングが生じていることにお気づきになるかもしれません。このエフェクトを完全に取り除くには、サブサーフェス カラーの 値 も調整しなければなりません。
サブサーフェスのカラー値
オパシティ入力を介して、生じるサブサーフェス スキャタリングの量を調整できますが、カラーピッカー の Value スライダーを使用して調整することもできます。
例えば、オパシティを値 1.0 に設定し、サブサーフェス カラー値を白から黒に設定すると以下の例のようにサブサーフェス スキャタリングを効果的にオフにします。
この反対を行うと、すなわち カラーピッカー の [Value] スライダーが白になるようにすると、以下の例のようにサブサーフェス スキャタリングを再度有効にします。
これはリアルタイムで値を調整する例です。赤から黒にカラー値が調整されると、サブサーフェス スキャタリング量の影響が変わることがわかります。
テクスチャをサブサーフェスに影響を与えるマスクとして使用する
どのエリアがサブサーフェス スキャタリングを受けるか否かをさらに制御するために、テクスチャをマスクとして使用することができます。 これを行うには、使用するテクスチャをマスクとしてマテリアルの オパシティ チャンネルに接続するだけです。 以下の例では、マスク テクスチャを使用するだけでなく、スカラー値を使用してマスクの強度を制御し、生じるサブサーフェス スキャタリングの量の制御を強化します。
マスク テクスチャは黒から白への値に基づき機能します。値が黒に近いほとサブサーフェス エフェクトが届くようになり、値が白に近いほどサブサーフェス エフェクトが届かないようにします。
これはマスク テクスチャを使用した上記のマテリアルがレベル内で見える様子です。
椅子の上にブラック スポットがあることがわかります。
こうしたブラック スポットはマスク テクスチャにある純白の値を使用した結果得られたものです。