リアルに見える人間の皮膚をレンダリングする機能は、最近のビデオ ゲーム エンジンでは必須です。このニーズに応えるために現在、Unreal Engine 4 (UE4) では、サブサーフェス プロファイル と呼ばれる皮膚やワックスのようなサーフェス用のシェーディング方法を提供しています。 サブサーフェス プロファイルのシェーディング モデルは、Subsurface シェーディング モデルと類似のプロパティがあります。主な違いはどのようにレンダリングを行うかにあります。 サブサーフェス プロファイルでは、これは人間の皮膚に見られる繊細なサブサーフェス エフェクトをよりよく表示しやすくする、スクリーン スペースに基づいたレンダリング手法を採用しています。これにより、背面散乱が二次的なエフェクトとして耳などに稀に表れることがあります。 以下のドキュメントでは、サブサーフェス プロファイルがどのようなものであるか、各自の作業でどのように使用できるかについて説明します。
サブサーフェス プロファイルを使用するためにマテリアルを有効にする
サブサーフェス プロファイルを使用するためにマテリアルを有効にするには以下の手順に従います。
-
[コンテンツ ブラウザ] 内で 右クリック して新規マテリアルを作成します。次に、[Create Basic Asset (基本アセットを作成)] からマテリアルを選択します。 マテリアルを作成したら必ず名前を付けてください。この例では、マテリアルに 「MAT_Subsurface_Profile_00」 と名前を付けます。 上記を完了すると、コンテンツ ブラウザ は以下のようになります。
-
[コンテンツ ブラウザ] 内で新規作成したマテリアルを マウスの左ボタン で ダブル クリック して開きます。
- マテリアルを開いた状態でマテリアルの Shading Model を Default Lit から Subsurface Profile へ変更する必要があります。
-
ここでは、[Details (詳細)] パネルの [Subsurface Profile] セクションに [Subsurface Profile] を入力することで [Subsurface Profile] を割り当てることができます。
- これでマテリアルをサブサーフェス プロファイルで使用する準備が整いました。
サブサーフェス プロファイルを作成する
サブサーフェス プロファイルを作成するには、以下の手順に従います。
-
まず コンテンツ ブラウザ 内で 右クリック します。[Materials & Textures] オプション、そして [Subsurface Profile] オプションを選択します。
-
サブサーフェス プロファイルを選択し、作成したら名前を付けます。 この例では、サブサーフェス プロファイルに SSP_00 と名前を付けます。 完了すると以下のように表示されます。
サブサーフェス プロファイルを使用するマテリアルの作成
マテリアルとサブサーフェス プロファイルが作成されたので、データを入力してみましょう。 次の手順では、サブサーフェス プロファイルを利用できるマテリアルとマテリアル インスタンスを作成します。
-
まず、上記で作成したサブサーフェス マテリアルが開いていることを確認します。マテリアルが開いていたら次の手順に進みます。 マテリアルを開いていない場合は、コンテンツ ブラウザ を開き、そこで マウスの左ボタン を ダブルクリック して開きます。 完了すると以下のように画面に表示されます。
- マテリアルが開いたら、いくつかのマテリアル式ノードを配置します。このチュートリアルでは、以下のノードを使用します。
- Vector Parameter x 1
- Scalar Parameter x 2
- マテリアル式ノードをグラフに追加したので、名前を付けていくつかのデフォルト値を入力する必要があります。この例では、ノードに以下の名前を付け、デフォルト値を入力します。
プロパティ名 | 値 |
---|---|
Base_Color | R:1.0 G:1.0 B:1.0 |
Roughness | 0.35 |
Subsurface_Amount | 0.5 |
シェーダー グラフへの入力が完了すると、以下のように表示されます。

-
マテリアル式ノードをセットアップしたら、そのすべてをメイン マテリアル ノードに接続します。 ノードをメイン マテリアル ノードに接続するには、マウスの左ボタン を使用して、ノードの右側にある 丸い円 をクリックします。 マウスの左ボタン を押したままの状態で、右 にドラッグすると接続ワイヤーが表示されます。メイン マテリアル ノードで使用する入力まで マウスの左ボタン を押したままの状態で、右 にドラッグし続けます。 マウスが使用する入力上に来たら、マウスの左ボタン をリリースして接続します。
-
これで何もかもが接続されたので、サブサーフェス プロファイルをマテリアルに追加することができます。 これを行うには、まず[Details (詳細)] パネルの[Material (マテリアル)] セクションで Subsurface Profile 入力を探します。 次に [None] と表示されるエリアで マウスの左ボタン をクリックします。 その結果、前の手順で作成したサブサーフェス プロファイルが表示されます。その上でクリックしてこのプロファイルを選択します。
サブサーフェス プロファイルを選択しないと、デフォルトのサブサーフェス プロファイルが使用されます。使用されるデフォルトは、白色人種の皮膚に非常に近いものです。
-
サブサーフェス プロファイルを適用し、マテリアル式がメイン マテリアル ノードにリンクされた状態になったら、シェーダをコンパイルし、マテリアルからマテリアル インスタンスを作る準備をします。 完了すると、マテリアルは以下のようになります。
マテリアル インスタンスでサブサーフェス プロファイルを使用する
-
マテリアルを作成し、コンパイルしたらより迅速にパラメータを微調整するためにマテリアル インスタンスを作成します。 マテリアルからマテリアル インスタンスを作るには、まず コンテンツ ブラウザ でマテリアルを探します。次にその上で 右クリック し、[Create Material Instance (マテリアル インスタンスを作成)] オプションを選択します。 上記を完了すると、コンテンツ ブラウザ は以下のようになるはずです。
-
マテリアル インスタンスを作成したら、コンテンツブラウザ で マウスの左ボタン で ダブルクリック して開きます。開くと、以下のようになります。
-
マテリアル インスタンスでサブサーフェス プロファイルを変更するには、[Override Subsurface Profile (サブサーフェス プロファイルをオーバーライド)] が有効であることを確認し、使用するサブサーフェス プロファイルを入れます。 これは、マウスの左ボタン で サブサーフェス プロファイル 入力上をクリックして行います。入力上でクリックすると選択可能なサブサーフェス プロファイルが表示されます。
マスター マテリアルでサブサーフェス プロファイルを既に入れていたら、マテリアル インスタンスでオーバーライドする必要はありません。既に使用されているものとは別のサブサーフェス プロファイルを使用したい場合に限りオーバーライドします。
サブサーフェス プロファイル マテリアルの適用
- マテリアル インスタンスが作成されたので、新規マテリアルを実際に試してみます。
これを行うには、最初に作業する新規ブランクレベルを作成する必要があります。メイン メニューに進み [File] オプションで [New Level (新規レベル)] を選択します。
レベルのタイプを選択するように促されたら、[Empty Level] を選択します。
-
新規レベルが作成されたら、サブサーフェス マテリアルの見え方をテストできるように、いくつかのライトを追加する必要があります。追加する最初のライトは、Point Light (ポイントライト) です。ポイントライトをシーンに追加するには、まず [Modes] メニューの [Lights] オプションの Point Light を探します。Point Light (ポイントライト) が見つかったら、マウスの左ボタン で選択して、マウスの左ボタン を押したままの状態で Point Light をシーンにドラッグして、マウスの左ボタン を解放して Point Light を追加します。ライトをシーンに追加したら、マウスの左ボタン でクリックしてライトを選択します。次に以下の値を入力します。
プロパティ名 値 Location: X:230, Y: -67, Z:79 Intensity: 128 次に、Spotlight (スポットライト) を追加していきます。スポットライトは、Modes パネルの [Lights] セクションのポイントライトの下にあります。ポイントライトと同じようにスポットライトを画面に追加できます。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 メッシュが見つからない場合、プロジェクトにスターター コンテンツ を入れていないからかもしれません。 スターター コンテンツを既存のプロジェクトに追加するには、コンテンツ ブラウザの [Add] ボタンをクリックしてから Add Feature or Content Pack(機能またはコンテンツパックを追加) を選択してから、コンテンツ タブに切り替えて、 スターター コンテンツ を選びます。
メッシュが見つかったら コンテンツ ブラウザ からドラッグしてレベルにドロップします。 メッシュがレベルに入ったら、その位置をワールドで 0,0,0 に設定します。 完了すると、レベル ビューポートは以下のようになります。
- スタティックメッシュがレベルに配置されたので、サブサーフェス マテリアルを適用することができます。
これを行うには、最初に コンテンツ ブラウザ でサブサーフェス マテリアルを見つけます。
マテリアルが見つかったら、それを コンテンツ ブラウザ から適用するメッシュにドラッグします。
サブサーフェス プロファイルを調整する
-
椅子にマテリアル インスタンスを適用したら、サブサーフェス プロファイルの設定を調整します。 これを行うには最初に コンテンツ ブラウザ 内でサブサーフェス プロファイル上を マウスの左ボタン で ダブルクリック してサブサーフェス プロファイルを開きます。 その結果、以下のような画面が表示されます。
サブサーフェス プロファイル の各プロパティを調整できます。これは、マウスの左ボタン で編集するプロパティ上をクリックしてカラーピッカーを表示します。
-
Scatter Radius: スキャタリングを行うワールド空間単位における距離です。
-
Subsurface Color: サブサーフェス カラーの色は、サブサーフェス エフェクトのマスクまたはウェイトとして使用できます。黒はサブサーフェス スキャタリングがないことを意味します。 白はすべてのライティングがマテリアルに入り、周囲に散乱することを意味します。非グレイスケール値は、 どの色の寄与がサーフェスに入ってきて、より複雑な外観のシェーディングになるかをさらに制御します。
-
Falloff Color: フォールオフ カラーは、ライトがマテリアルに入った後のマテリアルのスキャタリング カラーを定義します。 スキャタリングが見えるエリアでシェーディングがより複雑に変化するようにしたければ、ここでは鮮明な色を使用しないようにします。
-
-
以下に示すように、サブサーフェス プロファイルのパラメータをリアルタイムで調整できることを覚えておいてください。
ヒントとコツ
サブサーフェス プロファイルがレンダリングされる仕組みによって、最大限の効果を得るにはいくつかのヒントとコツがあります。
Scatter Radius
サブサーフェス プロファイルの Scatter Radius (スキャタリング半径) を非常に大きな数に設定すると、以下の画像のようにレンダリング エラーが生じます。
左側の画像では、スキャタリング半径は 50 に設定されています。 このサーフェスで複数の画像がレンダリングされているのがわかります。 右側の画像を見てみましょう。この画像では、スキャタリング半径は 5.0 に設定されています。 画像がよりソフトに自然に見えるのがわかります。こちらが達成しようとしているエフェクトのタイプです。
マテリアル インスタンスとサブサーフェス プロファイルを結びつける
マテリアル インスタンスとサブサーフェス プロファイルを結びつけるのは、多くの理由から 結果を最大限に制御するうえで優れた方法です。
- マテリアル インスタンスでは、リアルタイムで値を微調整可能であり、はるかに迅速に結果を見ることができます。
- Opacity 入力を使用してサブサーフェスのサーフェスへの寄与を抑制することができます。しかし、この値を 1 に保ったままサブサーフェス プロファイル内のパラメータを調整することをお勧めします。サブサーフェス プロファイルの調整時に求める結果が得られない場合に限りこの値を調整してください。
- 各カラーピッカーの Value スライダーはサブサーフェス エフェクトの影響を制御します。この値が白により近づくように設定されるほど、エフェクトが一段と目立つようになります。この値が黒により近づくように設定されるほど、エフェクトがより目立たなくなります。