

レンダリング時に人間の皮膚を正しく表現することは非常に難しく、正しい結果を得るための完璧な解決策は一つもありません。 したがって、リアルな画像を実現するには多くの作業が必要となることから、次の情報を作業の 出発点 として扱ってください。 これは、私たちの目が人間の顔の微妙な細部を検出することに非常に敏感だからです。 正しく実行するのは難しいものの、ツールを習得すれば、他の多くのケースにも適用できます。
セットアップ
マテリアルの作成に取り掛かる前に、まず参照アセットをいくつか集める必要があります。 これは通常、さまざまなライティング状況でのマテリアルの外観を確認できるように、複数の参考となる写真から始めるのが最善です。 可能であれば、スキャンして調整したソース データを用意しておくと、最良の結果が得られるようになります。 エディタ内でコンテンツを表示するときは、より制御された環境を実現するために、エディタの明暗順応 を無効にしてください。これは、[Edit Menu (編集メニュー)] > [Project Settings (プロジェクト設定)] > [Rendering (レンダリング)] > [Default Post Processing Settings (デフォルトのポスト プロセス設定)] > [Auto Exposure (自動露出)] で可能です。
環境のキャリブレーションは、色の正しい取得に役立ちますが、必須ではありません。
次の例では、スキン レンダリング コンテンツの例を使用しています。 まだ行っていない場合は、今すぐマーケットプレイスから機能別サンプルをダウンロードし、スキン レンダリング マップを開いてください。 また、このドキュメント内の画像は明らかに低解像度であり、ソース作業として使用することを意図していないことにも留意してください。
Unreal Engine 内で法線マップが正しく設定されていることを確認することが非常に重要です。一部のエンジンでは、緑チャンネルが反転された法線マップを使用します。次の画像の色を法線と比較することで、法線マップの緑チャンネルが反転されているかどうかを確認できます。

スキン テクスチャとマテリアルの作成を開始する前に知っておく必要のある事項のリストを以下に示します。
- テクスチャを作成するときは、最良の結果が得られるように、非常に高解像度のテクスチャ (2Kx2K 以上など) から始めるのが理想的です。
- イテレーションを高速化するには、マテリアル インスタンスを作成し、スカラー パラメータとベクター パラメータを公開すると調整が高速かつ簡単になります。調整中にマテリアルを再コンパイルする必要がないためです。
- アセットが正しいことを確認するには、複数のライティング条件で検証する必要があることに注意してください。 ポストプロセス ボリュームで [Eye Adaptation (明暗順応)] を有効にするだけでも、最終的な見た目に大きな違いが生じる可能性があります。
- シャドウ アーティファクトを回避したい場合、シャドウ バイアスなどを微調整したり、より焦点を絞ったスポット ライト コーンを使用してライティング解像度を高めたりする必要があることから、追加の労力がかかります。
- 微調整するときは、エディタの FOV を調整してズームインしてください。ジオメトリのクリッピングがなくなり、歪みが少なくなるので便利です。
-
エディタの視野角 (FOV) は、[Perspective (パースペクティブ)] というアイコンの横にあるドロップダウンの [矢印] をクリックし、マウスを使用して FOC 値を変更することで調整できます。
- 作品を表示すると、ストリーミング システムがズームを考慮せず、意図せずテクスチャがぼやけてしまうことに気付くと思います。これは 3D ゲーム用に意図的に行われた設計上の仕様ですが、将来的には変更される可能性があります。これを防ぐには、メッシュ インスタンスのテクスチャの Streaming Distance Multiplier を変更してください。
マテリアル
以下は、コンテンツ例マップから完成したマテリアルの画像です。 このマテリアルは複雑に見えますが、次のセクションでマテリアルの各セクションの機能について詳しく説明します。
画像をクリックすると拡大表示されます。
ベース カラー

最初に理解しておく必要があることの 1 つは、非常に遠い距離からは、サブサーフェス スキャッタリング エフェクトを認識するのは難しいということです。 つまり、遠くから見たときにテクスチャのベース カラーが正しく見えるようにする必要があります。 また、グレースケール テクスチャを使用してベース カラーとスペキュラ (オクルージョンによって発生) を暗くすることで、皮膚の全体的な外観を改善できます。 また、ベクター コントロールとスカラー コントロールを追加して皮膚の色と強度を調整し、さらに微調整することで、目的の外観を実現できます。
荒さ

皮膚の場合、ラフネスの値を等しく「0.4」程度から始めて、そこから微調整するのが最適です。 実際の値は、シミュレートしようとしている皮膚のスケール/距離、年齢、濡れ具合/乾燥具合によって異なることに注意してください。
他のテクスチャとは異なり、ここではミップ マップの外観を明示的に変えたいと考えています。ここでは、ミップ チェーンは次のようになります。

小さいミップではグレー値が明るくなり、マテリアルがより粗いマテリアルへと移行することを意味することに注意してください。 また、このテクスチャは別のテクスチャのチャンネルに配置できることにも注意してください (これにより、テクスチャ ルックアップとテクスチャ メモリを節約できます)。 このテクスチャが法線マップ テクスチャと同じ解像度を持っている状態が理想です。
鏡面反射

スキンのスペキュラ値は「0.35」に設定されています。 「0.35」というのは、現実世界で測定したものを使用範囲に変換したスペキュラ値から導き出された数値です。
法線
画像をクリックすると拡大表示されます。
法線マップがスキンに対して正しく機能するには、法線マップが次の基準を満たしていることを確認する必要があります。
- 顔に使用する法線マップには、しわの詳細のみを含める必要があります。毛穴の詳細はタイリング テクスチャを使用して行う必要があります。この方法の方がより良い結果が得られるためです。
- オブジェクトの法線マップと詳細な法線マップを組み合わせるときは、より良い結果が得られるように、必ずマテリアル関数 BlendAngleCorrectedNormals を使用して組み合わせるようにしてください。 法線マップの混合を調整するためのパラメータを公開することも非常に役立ちます。詳細な法線マップの値を取得して Z コンポーネントにスカラー値を追加すると、正規化することができます。 この方法では、通常の法線マップからフラットで詳細な法線マップに移行できます。
- 皮膚の領域によって陰影のプロパティが異なることから、粗さをオブジェクト マップされた (タイリングされていない) テクスチャと組み合わせるのが最適です。 詳細な法線マップがあると、遠くの粗さが増すため、それを補正する必要があります。また、カメラからのあらゆる距離でシェーディングが適切に表示されることを確認するために、複数のスケール/表示距離でシェーディングを検証する必要があります。
- 最新のリアルタイム レンダリングでは、ピクセル単位のライティングによるシェーディングが実装されています。通常、これにより非常に高品質な結果が得られます。しかしこれは、非常に詳細な法線マップの場合に限ります。ミップ マップを使用すると、ちらつきを回避してパフォーマンスを向上させることができますが、ミップ マップは法線マップではうまく機能しません。低いミップの詳細が存在せず、サーフェスが本来よりもはるかに光沢があるように見えるためです。その効果を和らげるために、ラフネスを適宜調整することができます。これは異方性の詳細をキャプチャしませんが、無指向性の特徴については適切な近似値を得られます。
オパシティ

オパシティ入力は、発生するサブサーフェス スキャタリングの量を制御します。 値が「1」または純粋な白の場合、サブサーフェス スキャタリングは最大出力で実行されます。 値が「0」または純粋な黒の場合、サブサーフェス スキャタリングは実行されません。
毛穴
画像をクリックすると拡大表示されます。
リアルな肌を実現する際は、皮膚に毛穴を追加することが非常に重要です。 ただし、毛穴の詳細は非常に細かくする必要があるため、ベースの法線マップに毛穴を追加するだけでは必要な品質を得るのは非常に困難です。
毛穴を個別のタイリング可能なテクスチャとして追加すると、毛穴がより目立つようになるだけでなく、調整もはるかに簡単になります。
このシェーダーの毛穴タイリングの詳細にバリエーションを持たせるために、TexCoord マテリアル式がスカラー パラメータで乗算され、マテリアル インスタンス内で必要に応じて毛穴にタイトルを付けることができるようになりました。
毛穴マスクと法線テクスチャ マップをクローズアップして見ると次のようになります。
毛穴はサーフェス領域より少し沈んでいることから、斜めの角度から見ると実際には目立ちません。 サーフェスを見る角度に基づいた毛穴の影響のフェード アウトを模倣できます。 この計算はフレネルに似ており、SkinMaster マテリアルではこのように実装されています。

皮膚の毛穴とフレネル効果のマテリアル グラフ コンポーネントは、以下に示すロジックを使用して、より広いグラフにブレンドされます。
画像をクリックすると拡大表示されます。
サブサーフェス プロファイルを使用する
皮膚を本当に皮膚らしく見せるのは、サブサーフェス プロファイルです。 マテリアルでサブサーフェス プロファイルを使用するには、使用するサブサーフェス プロファイルをマテリアルまたはマテリアル インスタンスに指定するだけです。
マテリアルでこれを変更するには、マテリアル エディタの [Details (詳細)] パネルで使用したいサブサーフェス プロファイルを指定するだけです。

マテリアル インスタンス内で使用されるサブサーフェス プロファイルを変更するには、まず [Override Subsurface Profile (サブサーフェス プロファイルをオーバーライド)] をチェックし、次にマテリアル インスタンスの [Subsurface Profile (サブサーフェス プロファイル)] セクションで使用したいサブサーフェス プロファイルを指定します。
画像をクリックすると拡大表示されます。
役立つリンク
以下のリンクは、ゲーム用の非常にリアルなキャラクターを作成する方法に関する豊富な情報が掲載されている外部サイトへのリンクです。
まとめ
スキンを正しく設定してレンダリングするには、長くて複雑なプロセスが必要であり、適切な結果が得られるまでに時間がかかります。 このガイドは、スキンを正しい方向性で設定するやり方を示すためだけのものであることに留意してください。 ここで紹介したものとは少し異なる設定を使用することで、期待する結果が得られる場合は問題ありません。 繰り返しますが、上記の情報は、スキンを設定するときに厳密に従わなければならないものではありません。あくまでガイドラインのようなものと考えてください。