デジタル ヒューマン

高品質なキャラクター シェーダー、演者のデータ スキャン、進化したジオメトリ ワークフローによる真に迫る キャラクターの作成

Choose your operating system:

Windows

macOS

Linux

DigitalHumans.png

Siren、アンディ・サーキス、オシリス・ブラック©の画像とキャラクターは 3Lateral の作成によるものです。

以前、エピック制作のゲーム Paragon で用いられているようなキャラクターへのアプローチを フォトリアルなキャラクター のサンプルを使ってお見せしました。それ以来、私たちは、より真実味のあるキャラクターをデザインする方法を研究し、その改善を果たしました。具体的には、高品質なキャラクターシェーダー技術に取り組むとともに、演者のデータスキャンを利用し、ジオメトリのためのワークフローを改善し、究極的には Unreal Engine 4 (UE4) のレンダリング能力を引き上げることによって達成されました。

私たちは、キャラクターの研究の一環として、数体のデジタル ヒューマン (および非ヒューマン) を開発しました。それによって、非常にリアルで真に迫るキャラクターを制作するためのワークフローとレンダリング性能の改善を推進しようとしたのです。以下に、私たちのワークフロー プロセスと新たに実装された機能の大まかな概要を紹介します。

また、これらの機能やテクニックはハイエンド機のみに明示的に限定されるものではないことに留意してください。リアルタイム ゲームやプロジェクトにも 適用可能であり、高品質および高フレームレートが実現できます。

[Epic Games Launcher] より [Learn] タブの下の [Digital Humans] プロジェクトをダウンロードして、これらの改良点を確認できます。このプロジェクトには、Paragon オリジナルの『フォトリアルなキャラクター』の胸像と、SIGGRAPH 2017 で初登場した Mike Seymour のデジタル ヒューマンが収められています。

デジタル ヒューマンによるパフォーマンス

キャラクターのレンダリング機能の向上

デジタル ヒューマン キャラクターの開発にともなって、エピックは以下の機能を開発または改善しました。

  • 新しいスペキュラ モデルの使用

  • Backscatter を使用した Light Transmission

  • サブサーフェス プロファイルのためにコンタクト シャドウイングを改善

  • Screen Space Indirect Bounceの近似のための、ポストプロセス マテリアルによる短距離の動的照射

  • 虹彩のために別個に用意された法線マップを用いて目のディテールを追加

以下の各セクションでは、 皮膚、髪、目のために新たに開発されたこれらの機能や改善点について詳細に説明します。

皮膚のシェーディング

キャラクターの皮膚には UE4 の サブサーフェス プロファイルのシェーディング モデル が使用されています。

SkinShading_ProfileView.jpg

これらのプロジェクトでは皮膚マテリアルの 基礎部分を組むために マテリアル 関数 が使用されていることに注意してください。このようなアプローチを取る理由は、マテリアルの再利用可能なオーサリングが可能になることと、 マスクを利用することによって、マテリアルの変化にともなってマテリアルとともに、アニメーションをブレンドすることができるようになるためです。マテリアル関数により、1 つの関数が変更されるとその関数を使用するすべてのマテリアルにその変更が反映されるので、アーティストは開発アプローチを標準化することができます。

Mike Seymour で使われているマテリアル関数のいくつかは、 /Content/Characters/Mike/Functions で参照できます。

皮膚のシェーディングテクニック

真に迫るリアリズムを高品質に保つため、デジタル ヒューマンでは被写体、今回の例では Mike Seymour の顔面のスキャンによって作成した 4K 解像度のテクスチャが常に使用されています。デジタル スキャンで取得後、エピックのアーティストがテクスチャをクリーンアップ、調整、作成しました。

キャラクターのために作成された皮膚では、望みの外見を作るためにマスクとともに様々なテクスチャを利用できます。ここで紹介するテクスチャである、ディフューズ (アルベド)、ラフネス、スペキュラリティ、スキャッター、法線マップは、デジタル ヒューマンの外見を作るために使用されるコアとなるテクスチャです。

テクスチャ

名称

説明

Head_Diffuse.png

Diffuse

ディフューズ マップはマテリアルにベース カラーを供給します。4K のテクスチャ解像度では、皮膚の直下に毛細血管があるのがわかります。しわが黒くなると、法線マップによって与えられるテクスチャが強調されます。(T_head_diffuse_neutral)

Head_Roughness.png

Roughness

ラフネス マテリアルはアーティストによってペイントされません。代わりに、法線をラフネスに変換する UE4 の処理を使います。(Toksvig_MikeMesoNormal)
この処理に関する詳しい情報、および、デジタル ヒューマンのアニメーションにとっての利点に関しては下記の ラフネス マップ を参照してください。

Head_Specular.png

Specular

スペキュラ マップは、皮膚のサーフェスで見えるスペキュラ ハイライトの量を増減させます。スペキュラリティのデフォルト値が 0.5 であることに注意してください。このマップは、皮膚が少しきつめにストレッチされうる場所でスペキュラリティを増して、毛穴の中央や、しわの中など反射させたくない場所では抑えます。(Mike_T_specular_neutral)

Head_Scatter.png

Scatter

Scatter マップは、皮膚の表面を通過してどの程度光が散乱するかを制御します。頬など暗くなっている場所の散乱はごくわずかですが、鼻、目、耳などの明るめの場所では認識される散乱量は増えます。これには、一番散乱量が欲しい耳、目、鼻、唇の周辺の領域のためにシンプルなマスクが使われていることが分かるはずです。他の領域は、実際の肌のように、暗めですが散乱するのに充分な明るさがあります。 散乱の色は、肌マテリアルにアサインされている Subsurface Profile サブサーフェス プロファイル シェーディング モデル アセットによって管理されます。(T_head_sss_ao_mask)

Head_Normal.png

Normal

法線マップはピクセルの法線を乱すことによってサーフェスを立体的なテクスチャにする機能です。 デジタル ヒューマンでは、複数の法線マップが使われています。それらがマテリアルの構成の中でブレンドされ、組み合わされることによって、皮膚の中サイズと微細なディテールが捕捉されています。
法線マップの使い方、および、顔面のさまざまなアニメーションのポーズに対応するさまざまな法線マップをブレンドする方法については、下のセクションの 法線マップ をご覧ください。(head_normal_map_001)

デュアル ローブ スペキュラ

デュアル ローブ スペキュラリティ(Dual Lobe Specular) は、最終結果で結合される 2 つの別個のスペキュラ ローブにラフネス値を供給します。これらのローブが結合されると、皮膚においてサブピクセル マイクロ周波数がもたらされ、自然な見栄えが実現されます。

DoubleBeckman_1-1.png

DoubleBeckman_2-1.png

DoubleBeckman_Combined-1.png

ソフトなローブ

目のつまったローブ

結合されたローブ

この表示では、Black Base Color が接続されている単一のライトが使われることによって、ブレンドされたローブが見やすくなっています。

デュアル スペキュラ の下の サブサーフェス プロファイル アセットで各スペキュラ ローブのラフネスおよび、混合の度合いを調整できます。

DualLobe_SSS_Settings.png

Back Scatter を使用する Light Transmission

光がサーフェスを通過する Transmission がサポートされるようになりました。バックライトによるものなので後方散乱 (back scatter) と呼ばれます。しかし、光は見えている側に向かって散乱するので実際には「前方散乱」です。ここでは指数関数的フォールオフをともなったシャドウマップから深度をサンプリングする単一の Scatter のアプローチを取ります。Henyey-Greenstein 位相関数がサーフェスからの屈折率 (IOR) とともに使用されてさらに少し Scatter に変化が加わります。

Light Transmission 無効

Light Transmission 有効

Subsurface Scattering プロファイルを設定してマテリアルにアサインすると、 Advanced ロールアウトのプロパティに入っている Light セクションの下で Transmission を有効にすることによって、Light で Transmission を有効化してバックライト効果を出すようにできます。

Transmission_EnableOnLight.png

マテリアルでマスクを利用することによって、Scatter 使用時に許容される Transmission の量を制御することができます。やり方は、オパシティやラフネスの領域にマスクを使う場合と同じようにブロックします。さらに、サブサーフェス スキャタリング プロファイルで、以下のプロパティを使って Transmission を制御することが可能です。

Transmission_SSS_Settings.png

Boundary Color Bleed

歯や眼球のためにスキャタリングを用いる唇や目の周りの領域で、 Boundary Bleed Color と呼ばれる新しいプロパティを使用します。これにより 2 つのサブサーフェス マテリアルをどのようにブレンドするかを定義します。

Without Boundary Bleed Color

With Boundary Bleed Color

Subsurface Scattering は、他のサブサーフェス マテリアルのともなった領域 (上記の例のように、唇から発する光がある領域が歯の周囲の領域にブレンドするような領域) でハロタイプのアーティファクトをよく引き起こしていたスクリーン空間エフェクトです。

BoundaryBleedColor_SSS_Settings-1.png

短距離の動的な放射照度

デジタル ヒューマン キャラクターのためにもう1 つ改善したのは鼻や眼窩の周りの端々で生じる黒ずみ (黒色と灰色) を減らしたことです。より自然に見せるために、Screen Space Indirect Bounce 近似技法を使用しました。ポストプロセス マテリアルが短距離の動的なグローバル イルミネーションに使用され、頬から鼻、眼角への間接的反射光をキャプチャすることでライティングと本物らしさが向上しました。

! Screen Space Irradiance なし

Screen Space Irradiance あり

Screen Space Irradiance はポストプロセス マテリアルとして設定されるので、それによって作用を受けるものすべてに使用可能です (下記の例を参照)。このマテリアルは、 Digital Humans プロジェクトでご覧になれます ( Content\Shared\UtilityMaterials の中に ScreenSpaceRealIrr というマテリアルがあります)。

SPI_Example.png

Screen Space Irradiance ポストプロセス マテリアルによって、発光体から Short Distance Dynamic Global Illumination がキャストされている

ヘアシェーディング

ヘアシェーディングは、UE4 の ヘア シェーディング モデルによって処理されます。このシェーダーは Eugene d'Eon 氏、Steve Marschner 氏、および Johannes Hanika 氏 による研究結果に基づく物理ベースのシェーディング モデルです。現在は、 Weta Digital によって使用されています。アニソトロピック スペキュラリティ、表面を通る光の屈折、複数の髪の毛を通る光の散乱を近似するシェーダーです。

UE4 のヘア シェーダーを使用するには、マテリアルの Shading Model プロパティを Hair に設定します。

HairSM.png

髪とスペキュラリティ

現実世界では、髪は複数のスペキュラ (鏡面) ハイライトを持つ傾向にあります。光の色を表すハイライトや髪の色と光の色が混合したハイライトがあります。本ドキュメントでは、これらをプライマリ スペキュラ ハイライトとセカンダリ スペキュラ ハイライトと呼びます。Hair シェーダーは、現実のこのようなエフェクトを近似させることによって、非常にリアルな結果をもたらします。

Hair_Specularity.png

  1. 茶色のヘアは、セカンダリ スペキュラ ハイライトです。

  2. 淡い色の髪はプライマリ スペキュラ ハイライトです。

UE4 のヘア シェーダーで使われる近似アルゴリズムは、現実世界と同じようなやりかたでこうしたエフェクトを作成します。光が髪の表面にあたっても、単純に反射しません。髪はトランスルーセントであるため、一部の光は髪の中を通過し、その中で反射して、出ていくことが可能です。以下の図のように、ヘア シェーダーは、これを光が髪と作用しながら通過する可能性のある 3 つの経路を使って近似します。

1 本の髪の毛による概念図。Hair シェーダーが、光と髪の毛との相互作用を近似しています。光が通る主な 3 つの経路も示されています。プロセスの各パートの説明については以下のテーブルを参照してください。

番号

説明

0

毛包の成長方向 (毛根から先端)。

1

光が髪の表面で跳ね返る反射のみの経路。これにより、プライマリ スペキュラ ハイライトが生成されます。

2

光が毛包に入りもう一方の側から戻る透過-透過の経路。髪の中で光が散乱する様子を表しています。

3

光が毛包に入り、さらに表面内側の境界から跳ね返り、それから出ていく、透過-反射-透過の経路。これによりセカンダリ スペキュラ ハイライトが生成されます。

図のように髪の毛は完全なシリンダー状、チューブ状ではありません。実際の髪は、円錐状のものが重なった状態に似ています。つまり、髪の表面で跳ね返る光は、髪が完璧に滑らかな場合とは異なる散乱をします。さらに髪の一本一本は一般的に別の方向を向いているので、 スペキュラのハイライトは、同じように配置されずに、髪が向いている方向に応じてさまざまに配置されます。これは、 アニソトロピック (異方性) スペキュラリティ と呼ばれることが多く、UE4 のヘア シェーダーでもサポートされています。

目のシェーディング

EyeShading_MikeExample.png

目は、しばしば「心の窓」と言われます。キャラクターを実際の人間として知覚できるかどうかは、その目ほど鍵になるものはありません。UE4 の目のシェーダーは、目の表面をリアルにレンダリングするように設計されています。そのため、目そのものの生物学的な各部位をアーティスティックに制御 できる仕組みが用意されています。

UE4 の目のシェーダーでは高度な技術が使われており、シェーダーのコード、マテリアル、ジオメトリの形状、およびジオメトリの UV レイアウトとの間で 非常に強い依存関係 ができるように開発されてきました。シェーダー開発に幅広い経験がない場合は、このシェーダーを使って最初から目を作ることはお勧めしません。リアルな人間の目を作るには、このサンプルから目のジオメトリを抽出して、目のマテリアルを そのまま 使い、目的に合わせて必要なテクスチャに置き換えることを強くお勧めします。

Photoreal Character プロジェクト内に PhotorealEyeGeo という名前のスタティックメッシュがあります。これをプロジェクトから FBX 経由でご自分の DCC アプリケーションにエクスポートして各自のプロジェクトで使用することができます。

Eye_ShaderModel.png

目の生物学

目の機能を十分に理解するには、簡単に目の仕組みを理解すると良いでしょう。ここで示す各部位は、「目の構成」に出てきます。すべての部位は、サンプル キャラクターの目に適用されているマテリアル インスタンス (MI_EyeRefractive_Bust) でエクスポーズされているパラメータを使って変更することができます。

以下は概要です。

EyeDiagram.png

番号

名前

説明

1

Sclera

強膜。「白目」としても知られています。目のこの部分は一般的にとても湿っていて、若干立体的なテクスチャになっています。

2

Limbus

縁。虹彩と強膜の間にある暗い色の輪です。目によって目立つ度合いが異なり、真横から見ると見えなくなる傾向があります。

3

Iris

虹彩。目の中央周辺にある色の輪です。「緑」の目を持つ人がいますが、これは虹彩が主に緑色だからです。実際の目では、虹彩は筋肉状の繊維の輪であり、拡張、収縮して、瞳孔に入ってくる光の量を調整します。現実の世界では、虹彩は実際にはディスク状あるいは円錐形状であり、目の他の部分から出っ張ってはいません。

4

Pupil

瞳孔。目中央部の暗い部分です。光がここを通ることによって、桿体視細胞と錐体視細胞が光を受容できるようになります。

5

Cornea

角膜。透明で、液体で満たされたドーム状のもので、虹彩の表面上方にあります。

目の中の屈折 - これまでと現在

眼球は液体で満たされているため、その中を通る光は屈折します。複数の角度から目を見ると、現実世界でもこれがわかります。角膜から見ると虹彩と瞳孔は反射によって歪みます。ゲームや映像でこれに対処する従来のアプローチは、2 つの目のサーフェスを別個に作るというものでした。ひとつは、強膜、虹彩、瞳孔になり、その上のもうひとつのサーフェスは角膜と全体的な目の水分になります。これにより、屈折が可能になります。下の方にあるサーフェスが水分がある層のシェルを通して見られるからです。こうしたアプローチは、エピックの A Boy and His Kite の少年の目の技術デモで使用されました。以下の図は、そのような 2 つのサーフェスを表しています。

KiteBoyEyes.png

目のシェーディング モデルを使うと、1 つのサーフェスでさらにリアルなエフェクトを実現できます。。角膜表面を通る光の屈折は、現在完全にシェーダー内で処理されています。これにより、下の層のジオメトリの必要性が軽減されます。これを試すには、M_EyeRefractive マテリアル インスタンスを開いて、 Refraction On/Off プロパティを調整します。

Eye Shader のパラメータ

目のシェーダーは非常に複雑であるため、そのまま使うことを推奨しています。そのため、マテリアルに組み込まれているアーティスティックなパラメータの解説が用意されています。以下は、MI_EyeRefractiveMike_R Material 内から調整可能な目のシェーダーのパラメータです。可能な限り、パラメータ値の推奨される範囲も示しました。

EyeShaderProperties.png

名前

説明

静的スイッチパラメータの値

Use Eye Bulge

物理的にモデル化された角膜の膨らみを眼球のジオメトリで使うかどうかに基づき、シェーダーの屈折プロパティを調整します。

ベクターパラメータの値

Eye Corner Darkness Color

目の色の暗さのためのカラー値を設定します。 Shadow Hardness Shadow Radius のスカラー変数を使って制御されます。

スカラー パラメータの値

Depth Scale

角膜の下の虹彩の屈折の深度を制御します。

Flatten Normal

この値は目の法線マップを、特に強膜に焦点をあてて、どの程度平らにするかを制御します。

Index of Refraction (IOR)

角膜の下の体液の屈折率。どれくらい屈折させるかを制御します。

Iris Concavity Power

Iris Concavity Scale と併用し、光が角膜を通過するときに虹彩の表面上で計算されるライトのコースティックの形状と量を制御します。これは一般的にライティングされている実際のシーンでのみ可視になり、マテリアル インスタンス エディタ内で視覚化するのは難しい場合があります。

Iris Concavity Scale

Iris Concavity Power と併用し、光が角膜を通過するときに虹彩の表面上で計算されるライトのコースティックの形状と量を制御します。これは一般的にライティングされている実際のシーンでのみ可視になり、マテリアル インスタンス エディタ内で視覚化するのは難しい場合があります。

Iris UV Radius

眼球上の虹彩の全体的なサイズを制御します。

Iris Brightness

虹彩の明るさを制御します。

IrisDispScaleUV

虹彩の法線マップ使用時の虹彩のディスプレイスメント (変位)をスケーリングします。

Iris Roughness

角膜 (虹彩のすぐ上の表面) がどれくらい輝くかを操作します。

Limbus Dark Scale

縁 (Limbus) の暗い輪のサイズを制御します。

Limbus Power

縁 (Limbus) 領域の全体的な暗さを制御します。過度な値は角膜領域全体を暗くしてしまいます。

Limbus UV Width Color

縁 (Limbus) のサンプル サイズ、すなわち、縁を表すために目の表面をどれくらい割り当てるかを制御します。これは非常にデリケートな設定項目であるため、注意を払って調整してください。

Limbus UV Width Shading

縁のシェーディングにどれくらいの量の光が影響を及ぼすかを制御します。これは非常に微妙な設定であるため、最新の注意を払って調整してください。

Normal UV Scale

目の表面全体で使われる法線マップ テクスチャのスケールを制御します。

Pupil Scale

瞳孔の大きさを制御します。目を見開く時に使う設定です。

Refraction On/Off

屈折するバージョンのシェーダーと屈折しないバージョンのシェーダーをブレンドします。

Scale By Center

虹彩 / 瞳孔全体の中央からのスケールを調整します。

Sclera Brightness

強膜すなわち白目部分の明るさを制御します。

Sclera Roughness

強膜のマテリアルのラフネス値を制御します。

Shadow Hardness

強膜の内側と外側の色をブレンドした時の鮮明さを制御します。Shadow Radius と併用すると、強膜表面全体でシェーディングを操作するのに役立ちます。眼球表面全体でまぶたがキャストするサブサーフェス スキャタリングによるシャドウのエフェクトを近似できるためです。

Shadow Radius

強膜の内側と外側の色をブレンドした時のサイズを制御します。 Shadow Hardness と併用します。

Specularity Iris

角膜全体 (虹彩と瞳孔) のスペキュラリティ レベルを制御します。

Specularity Sclera

強膜全体のスペキュラリティ レベルを制御します。

テクスチャ パラメータの値

Iris Color

以下の 目のテクスチャ を参照してください。

Iris Normal Map

以下の 目のテクスチャ を参照してください。

Sclera Color

以下の 目のテクスチャ を参照してください。

目の虹彩の法線

Iris Normal を通じてさらなるディテールと目への光の方向を追加する Dual Normal をサポートするようになりました。

虹彩の法線が無効

虹彩の法線が有効

この画像では、マテリアル間で生じる照明と光の漏れを軽減するために、 Boundary Bleed Color による改善もなされています

この虹彩の法線は DefaultEngine.ini に以下のコンソール変数を追加することで有効にできます。

r.IrisNormal=1

虹彩の法線は、マテリアル内の Clear Coat Bottom Normal ノードに供給されます。

クリックしてフルサイズ表示。

目のテクスチャ

目のために作成するテクスチャの多くは、虹彩のマップを除いて、上記で作成した UV レイアウトに基づきます。主な編集可能なテクスチャには以下のものがあります。

テクスチャ

名称

説明

ScleraMap.png

Sclera Map

強膜マップは、白目の色を制御します。さらに、目の端にある静脈と組織の色も制御します。例えば、キャラクターの目を充血させたい場合に修正するテクスチャです。

(Sclera_Tweak_R)

MidPlaneDisplacementMap.png

Mid Plane Displacement Map

Mid Plane Displacement Map (中間平面ディスプレイスメント マップ) は目の中央を横断する平面をロックするために使い、虹彩の深度をオフセットする基準として使用します。

(T_EyeMidPlaneDisplacement)

IrisNormalMap.png

Normal Map

法線マップは、すべてのシェーダーの法線マップと同じように機能し、テクスチャに立体的な変化を与えます。サンプル キャラクターの目のセットアップでは、目の湿った表面に沿ってごく小さなでこぼこを作っています。

(iris08_leftEye_nml)

TangentMap.png

Tangent Map

タンジェント マップは、サーフェスがタンジェント空間に流れこむ方向を制御するために使用します。サンプル キャラクターの目のセットアップでは、角膜が強膜と接触する方向の変化を強調するために使用されています。

(T_Eye_N)

IrisMap.png

Iris Map

虹彩のテクスチャは UV レイアウトと一致しないという点においてユニークなものです。代わりにこのテクスチャは解像度全体を満たします。UV とアルファ マスクは、全体的な虹彩のサイズ、および瞳孔のサイズを制御します。独自の虹彩マップを作成する場合は、瞳孔のサイズが、与えられたテクスチャの比率にほどよく近くなるようにしてください。

(eye_iris_clr)

Tangent Map が Normal Map の入力に直接接続されないことに注意してください。代わりに、マスター マテリアルで確認できるように、別個に作成する必要がある Tangent Output ノードに接続されます。

TangentOutput.png

目のソフト アンビエント シャドウイング

目を自然で本物らしくするソフト アンビエント シャドウイングには 2 つ方法があります。現実世界では、目がまぶたや涙管 (涙丘) などの他の組織に接触する部分には、非常にソフトな陰影ができます。このようにソフトであることの理由は、目そのものが半透明であり、光がその中で散乱することにあります。この現象をシミュレートしやすくするためには、2 つの方法があります。一つは、まぶたの下に一層の薄いジオメトリを使用することです。もう一つは、半透明のマテリアルのコンタクト シャドウを有効にするという方法です。キャラクターと開発中のものの外観によっては、一方の手法が他方より良く機能する場合があります。

両手法とも Boundary Bleed Color を使用して目の周辺領域をソフトにします。口においてサブサーフェス スキャタリング スクリーン空間の境界からハロタイプのアーティファクトを減らすやり方に似ています。

目のアンビエント オクルージョン

目のリアルなシャドウイングをシミュレートしやすくする 1 つの方法は目を覆う薄いジオメトリのシートを敷くことです。近似されたオクルージョンを与えて目全体のリアル度を上げます。

このシートに適用されるマテリアルは、MI_Eye_Occlusion_Mike という名前で、サンプル キャラクター モデルの Material Element 17 スロットに入っています。

なお、マイクの胸像にはこの手法は使用していません。代わりに、このキャラクターには半透明のマテリアルのためにコンタクト シャドウがより効果的だと判断して、これを開発、使用しました。マテリアル インスタンスの Shadow Amount 変数に値を入力するとコンタクト シャドウが有効になります。

AOSheetMaya.png

アンビエント シャドウイングに使用された目のジオメトリ

キャラクターの目のために、自作コンテンツをオーサリングする場合、上記ジオメトリを自分で作成しなければならない可能性が非常に高くなります。まぶたが開いた領域にフィットさせ、その UV が、ご利用の 3D モデリング アプリケーションで 0 から 1 の UV 空間をきちんと満たすようにする必要があります。

半透明のマテリアルのためのコンタクト シャドウ

半透明のマテリアルでは Contact Shadows を有効化できます。このマテリアルは、光のためのコンタクト シャドウと同様の機能を使用しますが、光のコンタクト シャドウのパラメータにはリンクしていません。これはスクリーン空間のエフェクトであり、ジオメトリに追加またはジオメトリに代わって使用することによって、眼窩に嵌っている目に本物らしさ与えることができます。

Translucent Contact Shadows: 無効

Translucent Contact Shadows: 有効

マテリアルの Details パネルで、メインのマテリアル ノードの Translucency タブからマテリアルの Contact Shadows を有効にすることができます。

EnableContactShadows-2.png

マテリアル のテクニック

以下は、私たちがデジタル ヒューマンの外観作成の取り組みを通じて学んだ重要なポイントです。

法線マップ

リアルで本物らしい肌のキャラクターの外観を作成するために、2種類の法線マップ、Meso (または中サイズ) 法線とマイクロ法線を使いました。

Meso 法線

Meso 法線は目、唇、額周りにできる主な皺のような、肌の中サイズのディテールを表現します。複数の Meso 法線が使用されて、異なるアニメーション ポーズとともにアニメートされます。

Normals_Mike.png

ポーズはいくつかの異なる法線マップに分割されます (下記を参照)。それらは、アニメーションによって制御されることによって、対象者が動作する時 (すなわち、アニメーションを実行する時) 、正しい法線がトリガーされ、異なるポーズ間でブレンドされます。これにより、このプロセスにおいてリアルで本物らしいものを作りやすくなります。

MesoAnimatedNormalWithPoses.jpg

MesoNormlAnimatedwithPoses_Character.gif

アンディ・サーキスの顔のキャプチャのための演技によって制御されるポーズとマスク化された法線マップ

マイクロ法線

毛穴や小さな傷のような皮膚の微細なディテールを表現します。このようなディテールは次のどちらかによって抽出されます。すなわち、対象者のスキャンデータからか、もしくは、スペキュラ マップから抽出されます。

MicroNormals.jpg

ラフネス マップ

ラフネスマップは、Normal to Roughness (法線からラフネス) と呼ばれるテクニックを用いて法線マップから生成されます。テクスチャ エディタ内で、任意のテクスチャをコンポジット テクスチャのスロットに適用してテクスチャ モードを設定するとラフネスの基本ができます。

NormalToRoughness_2.png

NormalToRoughness_CompositeTextureSlot.png

この例では、法線を Toksvig_mesoNormal という名の Meso 法線テクスチャに適用することによって、ラフネスを手動でペイントするのではなく、緑のチャンネルからラフネス テクスチャを生成しています。このメソッドを使用してなおかつ法線をアニメートさせていることにより、アニメートされるMicro 法線と Meso 法線のためのすべてのラフネス マップの基礎を取得できます。アニメートした法線は、肌が様々なアニメートしたポーズで拡大収縮する際に、ラフネス量を変化させるのに役立ち、リアリティーを向上させます。

フレネル エッジ ラフネス (Fresnel Edge Roughness)

ラフネス マップのエッジを柔らかくするために、エッジでフレネルを使用して顔の産毛を近似します。

下の例では、エッジ ラフネスを制御する方法を示しています。マテリアル インスタンスを通じてコントロールできるスカラー パラメータを使っています。

FresnelEdgeRoughnessMaterial.jpg

エッジ ラフネス: 0.25 (デフォルト)

エッジ ラフネス: 0

ラフネスのためのリージョン マスク

カメラでキャプチャできない肌のラフネスのバリエーションのために、これら微細なバリエーションのためにペイントしたリージョン (領域) マスクを作成しました。この作業には、ラフネスをリファレンスにマッチさせるために、キャプチャ情報を研究し、「創作上の特権」を行使することも含まれています。

IOR 定数に基づく肌のスペキュラ

肌のスペキュラリティには肌の屈折率 (IOR) に基づく定数値を使用します。使用する理由はペイントしたスペキュラが物理的に正確ではないからです。

キャビティ マップ

皮膚のディスプレイスメントを一つずつレイトレースすることは不可能であるため、スペキュラを除外することによって、対象者のディスプレイスメント マップからこのキャビティ マップを生成し、結果を分割しています。Fresnel のエッジ領域でこの効果が弱まるため、スペキュラ オクルージョンとして機能することになります。

スペキュラ:0.4 (デフォルト)

スペキュラ:0

頭皮と髪のオクルージョン

デジタル ヒューマン キャラクターではカードの代わりにスプラインを使用して髪を表現するので、キャビティ マップの使用に加えて、髪をスペキュラ マップにベイクする必要があります。髪のスプラインの作成は大量のジオメトリのため大変高コストとなるので、UE4の髪にはそれほど厚みがありません。そのため、光が漏れ出てしまいます。オクルージョンマスクを使用することである程度 (場合によっては、すべて)の光の漏れを防止することが可能です。

ScalpAndHairOcclusion_Mike.png

すべてのオクルージョン ポイントをレイトレースすることは (コスト上の理由で) できないので、オクルージョンはスペキュラ マップにベイクされます。比較例 (下の画像を参照) からは、オクルージョンの量がわずかしか変わらないことが分かります。モデリングと髪の構成によって、光の漏れの量が異なる結果となります。

Scalp Occlusion Mask あり

Scalp Occlusion Mask なし

作成したデジタル ヒューマンの大部分で、ポリゴン ストリップを使用することによって、ペイントした髪とプロシージャルな髪を扱えるようにします。UV がこの手法を使って特定の方法で並べられているので、アーティストは Maya のようなアプリケーションを使用して頭皮に必要に応じて髪をペイントできます。髪 1 本ごとの長さを変えたり、長さとともにラフネスと色を変えて、髪ごとのノイズ バリエーションも追加します。

髪は完全な円柱ではないため、長さとともに接線を変化させて髪にある程度「不規則性」を加えなければなりません。

Hair_Scraggle.png

UE4による「不規則な」髪の最終形

産毛

皮膚の短い産毛をシミュレートするため、毛羽立ちは非常に微細なものにします。

産毛なし

産毛あり

このエフェクトを作るために、エミッシブ マテリアルによる半透明のシェーダー モデルを使用しました。ヘア シェーディングモデルは使用しませんでした。ヘア シェーディング モデルのスペキュラはマッチさせるのが難しいからです。たいてい、全体的に明るすぎるか暗すぎるようになるのです。半透明のエミッシブ シェーダーを使用することで、ベースカラーから初めて、先端を暗くしたり明るくしたり、サーフェスの法線をサンプリングして微細なフレネル エッジを加えることでバリエーションを追加しました。

ピクセル深度オフセットを使用する

Pixel Depth Offset (PDO ピクセル深度オフセット) は、ヘア シェーディング モデル固有のプロパティではありませんが、髪には PDO を使用して髪の生え際のエッジをとげとげしくならないようにブレンドします。ピクセル深度オフセットを使うと、カメラから見てピクセルがへこんでいるように見え、生え際のサーフェスにそって深度の感覚を人工的に作り出します。髪は単純なジオメトリのシートでできているため、PDO を使用することで、全体として髪の形状に三角形的な深度の感覚が加わります。さらに、髪のジオメトリの面が頭皮に接触する交点部分を分解します (以下を参照)。

ピクセル深度オフセット:無効

ピクセル深度オフセット:有効

データ取得とキャラクターモデリングのアプローチ

キャラクターの見栄えを正しいものにするためには、もう一つ重要な問題があります。それは、対象者をどのようにキャプチャするかという問題です。Epic は 3Lateral と提携することによって、高品質なキャプチャを実現しました。これらのキャプチャ テクニックと処理は現代の映画で使用されているパフォーマンス キャプチャと同様のものです。

Epic は下記の組み合わせを使用して成果を上げています。

  • 詳細な顔のスキャン

  • 歯型

  • マルチ カメラ構成によるパフォーマンス キャプチャ

  • 演者の様態を正確にキャプチャするセンサー

スキャン データ は、得られるものの中では、 3D の対象者のグラウンド トゥルースに最も近いものです。モデリング側で実行される調整またはクリーンアップ パスは、いかに「あるべきか」の解釈になり、以降のアニメーションとマテリアルの比較に影響を与えます。このスキャン データを調べる場合のアーティストの仕事の 1 つは、スキャン データの整合性を維持することです。これには、システムが正確に詳細をキャプチャできなかった口腔内、まぶたの上や耳などの領域の補完や訂正をも含まれます。しばしば解剖学の理解と優れたアートのセンスが必要となりますが、多くの場合、ここでは対象者の正確な表現を再作成するリファレンス キャプチャが重要です。

AndyRetopologized-1.png

(左から右へ) 生のスキャンデータ、スキャンの詳細を投影した新たなトポロジー、中央のトポロジーにディスプレイスメントを追加したもの

この例では、オリジナル スキャン データを取得して、再トポロジー化し、クリーンアップして、対象者 (この場合は、アンディ・サーキス) を正確に反映させています。

顔のキャプチャ

演者のパフォーマンス (演技) をキャプチャするプロセスを通して、50 の異なる FACS (Facial Animation Coding System) のポーズをキャプチャしました。それぞれのポーズは顔の異なる筋肉のグループに分けるのに役立ちます。この情報により、さまざまなテクスチャのために、ディフューズ、法線、スペキュラ、アンビエント オクルージョン、透光性などのデータを物理的に正確に作成することが可能になります。

マイクロジオメトリ

毛穴や小さな傷など顔の微細なディテールは、演者が演技する各ポーズからキャプチャされます。これらのディテールは、アニメートされたポーズをブレンドする時の基礎となります。これらの マイクロ法線 マップを使用すると、演技中に顔とシワの形状がどのように変化するかが分かる正確なディテールが得られます。

ディスプレイスメント マップ

ディスプレイスメント マップは、法線が複数の光の方向からキャプチャされるスキャン処理中に、第 3 の法線情報から作成されます。このマップを作成したら、ZBrush や Mudbox などのスカルプティング アプリケーションで利用できるようになります。スキャンが正確であるため、キャプチャから微細なディテール (すなわちグラウンド トゥルース) が得られます。しかし、それら第 3 のディテールの強度は任意であり、対象者のリファレンス ショットからの視点にマッチする必要があります。

さまざまなテクスチャ マップ

デジタル ヒューマン キャラクターで利用するために作成されたテクスチャ マップは、アーティストが作成したものとオリジナルのスキャン データから生成したものの組み合わせからできています。以下では、いくつかの異なるタイプのテクスチャについて、それらがどのようにキャプチャされたかお伝えします。

  • アルベド (ディフューズ)

    • 頭皮に髪を投影させた状態で、スキャン時にキャプチャされました。アーティストが必要に応じてクリーンアップしました。 Texture_Albedo_HeadHairSkin.png

  • 法線

    • 法線マップは、2 つのマップから構成されています。一つは、高ポリゴンモデリングからベイクされたベースとなるマップであり、もう一つは、皮膚のディテールである微小な構造をキャプチャするマイクロ法線のマップです。
      Comparison_MesoMicroNormals-1.png

    • 細かくなり過ぎた領域から微小なディテールを取り除くマスクも作成されています。そのような領域には、目がつまり過ぎた鼻の先端周辺や目の涙管やまぶたの内側周辺などが挙げられます。

これら特定のマップに加え、キャラクターの外観を制御するためにペイントした局所的なマスクも使用しました。髪には、頭皮とキャビティのアンビエント オクルージョン マップを使用するとともに、サブサーフェス スキャタリングの制御を改良するために、厚みのためのマスクを使用して 光の伝達 量を制御しました。

口と目の構成

目と口は、『フォトリアルなキャラクター』と同様のアプローチを取って構成されました。ただし、目と口の周囲には追加のジオメトリを使うことによってマテリアルのブレンドをうまく制御しています (あるいは、より適切なコンタクトシャドウを作っています) 。

以下はデジタル ヒューマン キャラクターに使用したジオメトリの構成例です。

EyeTeethMeshGeoSetup.png

  1. 涙器メスニカス (涙管)

  2. 涙丘ブレンドメッシュ

  3. まぶたのオクルージョンとブラー メッシュ

  4. 眼球

  5. 歯茎

  6. 歯/歯茎ブラー メッシュ

  7. 唾の泡

この構成とジオメトリのサポートが組み合わされて、キャラクターにリアリティーが出てきます。

目のオーサリングテクニック

デジタル ヒューマン キャラクターの開発中に、モデリングとマテリアルの様々な技術を使用してキャラクターの目の再現性を改善しました。上で触れましたように、目の構成の多くは、マテリアルの構成およびキャプチャしたリファレンス マテリアルと相互依存の関係にあります。少なくとも最初は私たちの目の構成を使用することを強くおすすめします。以下はリアルな外観の出力を得るために私たちが行ったことの概要です。

自身で目を組み立てる際は、このプロジェクトで提供されている実際の目のジオメトリとマテリアルから始めることを強くおすすめします。ここでの情報の大部分はこの特定の目のジオメトリとマテリアルに基づいています。 PhotorealEyeGeo メッシュは、プロジェクトから FBX としてエクスポートし、お使いのモデリング アプリケーションにインポートすることによって、ご自分のキャラクターとプロジェクトで使用することができます。

形状と UV レイアウト

現実世界の人間の目のように、目のメッシュは完全に球状になるようにモデル化されていません。角膜を表すために前面がはっきりとしたドーム状になっており、ほとんど卵のような形になっています。

EyeGeometry.png

この画像は、横から見た目のジオメトリを示しています。前面の角膜の部分がせり上がっています。

EyeUVs.png

UV レイアウトは 0-1 空間の中心にあり、プロジェクションは直接目の角膜を見る形になります。

目の追加ノート

以下は目のジオメトリについての捕捉と使用したマテリアルのテクニックです。

眼球のジオメトリ

角膜のために作った目のジオメトリの膨らみに加えて、対象者の目から取得した詳細スキャンデータに基づく目の鼻側付近の膨らみも取り入れています。

涙丘のブレンド ジオメトリ

このジオメトリは頭のジオメトリから眼球のジオメトリへの遷移をソフトにするために使用されます。

涙丘のブレンド ジオメトリ:無効

涙丘のブレンド ジオメトリ:有効

涙液のジオメトリ

目の底部と下まぶたに集まる水分を表現します。

涙液ジオメトリ:無効

涙液ジオメトリ:有効

オクルージョンとブラー ジオメトリ

このジオメトリは頭への目の嵌まりを良くするために使用します。

オクルージョンとブラー ジオメトリ:無効

オクルージョンとブラー ジオメトリ:有効

口のオーサリングテクニック

口の周りの領域には、目で使用したものと同様の技術を使用しました。歯茎と歯には、歯と歯茎の周りにブラー メッシュを使用して、よりリアルにブレンドしました。本物らしさを加えるためにいくつかのキャラクターに唾の泡を加えました。

Mike Seymour の頭部では、これらの部分は静的メッシュのため容易に表示されません。また、後のデジタル ヒューマンに備わっている歯茎のブラー メッシュや唾の泡のようなジオメトリが含まれていません。これらの部分をご自分で作成するためには、ブラー メッシュを使って目と頭をブレンドした方法が参考になります。

髪のオーサリング テクニック

デジタルヒューマンの髪をオーサリングする際は、リアルで本物らしいデジタルヒューマンを作成するためにカードとスプラインを両方使用するなどテクニックを組み合わせて使用しています。私たちは、キャラクターの髪を作成する場合は、Maya の XGen を使用してインタラクティブにキャラクターの髪をグルームしました (Mike Seymour の場合)。あるいは、Siren に行ったように、Guide Curves を使用して髪を整えます。その後で、Arnold for Maya を使用して髪に必要なテクスチャを作成し、それを UE4 のマテリアルに利用しました。

Siren の例では (下記の画像のように)、髪のカードとカードの上に重ねた髪のスプラインの両方を使用して髪を制作しました。これにより髪が長いためにかさむジオメトリの量を減らすことができました。さらには、厚みによってスプラインにともなう光漏れを減らすテクニックと、リアルタイムに髪をレンダリングすることに起因するコストを削減するテクニックを使う場合に、都合の良い方を選択できるようになりました。

Hair_Siren_ComboSplinesAndCards.png

Siren の髪のレイヤー。 (左から右へ) 髪のカード、髪のスプライン、追加の短髪のスプライン

髪のスプライン

髪のスプラインを薄いポリゴン ストリップ (またはビルボード) に変換しました。XGen で作業していると、ビルボードがカメラに向かうようになりました。そのため、XGen からエクスポートする前に、カメラに向く設定を無効にすることによって、UE4 でうまく機能するようにしました。

Hair_Siren.jpg

髪のカードの上に重ねたスプラインの髪

髪はポリゴン ストリップに変換されているので、3 つの UV セットを使用しました。1 つは髪の根元、先端と色を制御し、2 つめは局所的マスキングのためのものであり、3 つめはベイクした髪のアンビエント オクルージョンを保持します。

Hair_Model_UVStrips.png

  • UV 1

    • この UV は タイリング オプションが無効の時に、XGen により自動生成されます。各 UV シェルは すべての髪の毛のために重複しており、髪の色とともに根本と先端の幅をグローバルにコントロールするために使用します。

  • UV 2

    • この UV セットによって手描きのマスクのようなものの局所的な制御が可能になります。または色のバリエーションにノイズを加えたい場合には、ここで行うことができます。

    • UV マップは頭皮を模倣するトリックを使って生成されます。

      • グルーム済みの XGen のプリミティブはデフォルトの UV 設定を使用してジオメトリに変換されました。

      • XGen のグルームを再選択して髪をベリーショート (スタブルと同じ) に短くする XGen の修飾子を追加しました。そして XGen は頂点の色や長さに基づいてトポロジーの順序を変更しないので、後にブレンド シェイプを作成できます。短くなった髪はもう一度デフォルトの設定を使用してポリゴン ストリップに変換されます。

      • 次に 短くなった髪に基づいて 2 つめの UV を作成し、頭皮のジオメトリを送り、UV をワールド空間に送ります。

      • 最後に、重なり合う髪の UV と頭皮タイプのレイアウトによりブレンドを作成します。これによって、2 つの UV セットをもつ 1 つの髪のメッシュができます。UV セットは、1 つがグローバルであり、もう 1 つは見栄えを細かく整えるためのものです。

  • UV 3

    • この UV は、1 つのテクスチャにポリゴン ストリップをすべて平らに並べて、ベイクした髪のアンビエント オクルー ジョンに使用されます。ここでの唯一の注意点は、AO を適切に表示するには、影響を受けるピクセルをキャプチャするためにマップをかなり大きくしなければならなかったということです。

髪のカード

キャラクターの正しい外観を得るため、髪のカードの作成では、XGen を使用し、異なるテクスチャを Arnold を使用して作成しました。

Hair_CardsOnSlant.png

テクスチャ シートに作成された髪のサンプル。

頭蓋骨の傾斜を模倣し、人形のような見た目の髪にならないようにするために、髪のサーフェスに傾斜した平面を使用してテクスチャの毛根を分割して長さが同じにならないようにしました。特に中央の例で異なる毛根が確認できます (上画像参照)。

ディフューズ テクスチャは Arnold を使用して作成しました。大部分は単調なものですが、毛髪のバリエーションをわずかに追加しました。追加したバリエーションは、スペキュラ オクルージョンのために使用されるアンビエント オクルージョンのテクスチャと、髪と頭皮をブレンドするために使用される毛根と毛先のグラデーションです。髪のスペキュラリティはすべて UE4独自の髪のシェーディング モデルを使用してマテリアルの中で処理しました。

望みの結果を得るためには、手作業でカードを配置するほうが快適でした。プロシージャルな手法やインスタンス化は、整えるのにかえって時間がかかることが多かったです。

追加情報

Epic がどのようにデジタル ヒューマン キャラクターを制作したのか、もっと知りたい方は、下記のSIGGRAPH と GDC などでの講演をチェックしてみてください

協力パートナー

logo-alt.png

3Lateral は、Epig Games のチームと緊密に連携をとり、デジタル ヒューマンのデモとオープンワールドのデモ『A Boy and His Kite』のために、詳細なスキャン データ、アニメートされたマップ、リギングなどをご提供いただきました。

Andy Serkis と Osiris Black© では、3D スキャン、キャラクター、コンセプト、クリーチャー、顔、フィルム、ゲーム、モーションをご提供いただきました。 Siren では、3D スキャン、顔、モーションキャプチャーをご提供いただきました。   * The Kid では、コンセプトとモーションをご提供いただきました。

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