SlideShare a Scribd company logo
Unreal Fest Osaka | 2016
Kiteの少年と学ぶ
UE4.11の新シェーダ
内容
● Eyeマテリアル
○ 各部名称
○ Content Examplesのマテリアル
○ 改造方法
● Hairマテリアル
○ Content Examplesのマテリアル
○ 少年のマテリアルを調整
○ よりリアルにするための改造
○ ライトの問題について
Eyeマテリアル
• Content Examplesにマテリアル例がある
M_EyeRefractive
特にこだわりがなければこれを使うほうが楽
• 実際に使用されているマテリアルインスタンス
M_Sparrow_EyeRefractive_Inst
Sparrowって何?
Paragonの彼女
Eyeマテリアル:各部名称
• コメント等に英単語があるので簡単に解説
• Iris:虹彩
黒目の周りの模様
• Pupil:瞳孔
いわゆる黒目
• Sclera:強膜
いわゆる白目
• Limbus:角膜輪部/角膜縁
虹彩と白目の境目の部分
出典:
Wikipedia
Eyeマテリアル:Content Examples
• M_EyeRefractive
シェーディングモデルは当然Eye
複雑
関数1つ、Custom1つ
関数内にはCustom2つ
全部は説明できない
Eyeマテリアル:Content Examples
• ML_EyeRefraction
核心部の関数
機能は2つ
前眼房の屈折からUVを求める
虹彩マスクを求める
Eyeマテリアル:ML_EyeRefraction
• Iris UV Mask
全体UV上の虹彩のマスクを求める
テクスチャは白目と虹彩を分けている
合成時にこれを使用する
メッシュのUVは白目用
• IrisUVRadius
虹彩部分が最終UV座標に対してどの程
度のUVサイズになるか
• UV
メッシュのUV
• LimbusUVWidth
角膜輪部の幅をUV座標で指定
x:テクスチャブレンド幅
y:シェーディングブレンド幅
Eyeマテリアル:ML_EyeRefraction
• Refraction Direction
前眼房に侵入した光の屈折ベクトルを求める
• InternalIoR
前眼房のIoR
ほぼ水と同じ
外部のIoRは空気のものを使用
Customコード内部にマジックナンバー
• NormalW
ワールド空間の法線ベクトル
• CameraW
ワールド空間の視線ベクトル
Eyeマテリアル:ML_EyeRefraction
• 深度オフセット
前眼房の膨らみに対応する深度オフセットを入れている
平面で見ると虹彩部分が凹んでいるのがわかる
Eyeマテリアル:ML_EyeRefraction
• 出力Transparencyの計算は間違ってる?
上のSubtractが元のもの、下のDivideが修正したもの
Bへの入力は同じもの
Eyeマテリアルは半透明ではないので、現在は使用していない
多分今後も使用しない
Eyeマテリアル:M_EyeRefractive
• 黒目のサイズを変更しているCustomノード
黒目は虹彩テクスチャに描かれている
このサイズをスケール値で設定する
基本は縮小だが、拡縮どちらでも虹彩がゆが
むので注意
通常の虹彩ならほぼ気にならない
Eyeマテリアル:M_EyeRefraction
• UseEyeBuldge
BuldgeはBulgeのtypoと思われる
メッシュに前眼房の膨らみがあるならどちら
でもよさげ
結果にほぼ変化がない
メッシュが完全な球形ならTrue推奨
True False
Eyeマテリアル:少年に適用した結果
• 上がオリジナル、下がM_EyeRefraction
オリジナルは実は2つのマテリアルで構成
虹彩、白目の不透明マテリアル
屈折を表現する半透明マテリアル
半透明メッシュは膨らみあり
M_EyeRefractionは1つだけ
半透明メッシュに適用
不透明側は非表示
オリジナルはまつげが消える
加算合成が絡んでる?
右目(奥)の屈折
下の方が屈折の結果は正しく見える
眼力が違う
オリジナル
M_EyeRefaction
Eyeマテリアル:改造方法
• 各種パラメータの調整
瞳孔のサイズ、虹彩のサイズがメイン
生気のない目はラフネスを上げると良い
• 虹彩のテクスチャ
眼の色に合わせたテクスチャを用意する
ちょっと特殊な虹彩もあり
画像のようなものもできる
写○眼とかもうまくやれば作れるかも
Hairマテリアル
• Content Examplesにマテリアル例がある
M_Character_Hair
そのまま使うのは難しい
ただし参考にできる部分は多い
• TemporalAAの利用を推奨
特にヘアプレーンを使用する場合
板を複数枚重ねるタイプ
OpacityMaskで抜いた部分が特に汚くなる
Hairマテリアル:Content Examples
• パッと見は複雑だが、見た目ほど複雑ではない
そのままは使えないので重要な部分をピックアップ
• Scatter, Roughness, Backlitは定数
下手に変化させるより定数の方が扱いやすい
Backlitは廃止予定
• Tangent
髪の流れを設定する
重要
• Pixel Depth Offset (PDO)
実はとても重要
• Edge Mask
ポリゴンを水平に見た際のOpacityMask処理
• 各種ノイズ
OpacityMaskとPDOのノイズはTemporalAAを使うこ
とを意図している
Hairマテリアル:少年の髪を調整
• Tangent
Hairマテリアル:少年の髪を調整
• Tangent
髪の流れを指定するTangentMapを別途作成
髪の流れがタンジェント空間に対して一定ではなかったから
FlowMapと作り方は同じ
今回はSubstance Painterを使用
http://monsho.blog63.fc2.com/blog-entry-198.html
Tangentをそのまま使うか法線マップとの外積からBinormalを求め、再び外積をとってTangentに戻
す
TangentのZ値をノイジーにするならそのまま使っても問題なかった
TangentのZ値をノイジーに
Content Examplesと同様、-0.3~0.3の範囲内
LerpのAlphaには法線のZ値かラフネスマップの結果を使用
法線のZ値を加工した方が個人的には良かった
Hairマテリアル:少年の髪を調整
• Scatter
Hairマテリアル:少年の髪を調整
• Scatter
MinとMaxの間をラフネスマップの結果でLerpするようにした
ソリッドメッシュの場合は定数より良かった
定数ではちょっと綺麗すぎる
Fresnelを利用してエッジ部分のScatterが強くなるようにしてみた
効果は限定的でイマイチ
なくてもいいかも
Hairマテリアル:少年の髪を調整
• Roughness
Scatterと同様にMinとMaxを指定してLerp
Scatterと違ってそれほど効果はないので定数でも良かったかも
• Base Color
定数、もしくはオリジナルのカラーマップ
定数で十分な印象
調整もしやすい
• Pixel Depth Offset
地肌が見えてしまったりとあまり良い結果を得られない
ソリッドメッシュに対してはオススメできない
Hairマテリアル:少年の髪を調整
• 結果
オリジナル 調整後
Hairマテリアル:少年の髪を調整
• 結果
オリジナルはSubsurface Profileで作成されている
すこしNPR調
陰影が深い
調整後は艶がかなり出ている
ちょっと出すぎていて綺麗すぎる
しかし、あまりノイジーにし過ぎるとそれはそれでリアリティがなくなる
カメラから遠い場合はラフネスを下げた方が見栄えがいい
テクスチャ等、ちゃんと調整した方がいい
ソリッドメッシュ単体だと調整が難しい
Hairマテリアル:よりリアルにするために
• Sparrowさんに学ぶ
髪のメッシュは2段階
ベースとなる形状はDefaultLit
その上に薄くかぶせるようにベースと似た形状のHairマテリアル、OpacityMaskあり
HairマテリアルはContent Examplesにものに似ている
• 少年モデルにも適用してみた
髪メッシュをコピーして2重化
マテリアルは別に設定
薄くかぶせるようにするのはワールドポジションオフセットを使って法線方向に膨らませて対応
かぶせる方(ヘアラインメッシュ)はContent Examplesのものをほぼそのまま移植
TangentのみTangentMapを使用している
その他テクスチャの差替
Hairマテリアル:よりリアルにするために
• 結果
メッシュ2重
化
Hairマテリアルのみ
Hairマテリアル:よりリアルにするために
• 結果
2重化すると髪のボリューム感、束感が出る
しかし綺麗かと言われるとイマイチな感じ
硬い感じがする
Hairマテリアルのみは綺麗すぎるが、どちらがいいかと言われると…
OpacityMapを別途作成したが、これをもうちょっと綺麗にするといいかも
• Content Examplesのマテリアルとの違い
OpacityMaskにDitherを利用していない
ベースメッシュとPDOを使用している場合は不要
結果は少し変わってくるが、比較しないとわからない程度
TangentMapの使用
使用しているテクスチャの種類
OpacityMapはラフネスマップを調整して作成
Unique_Hair_Valueの代わりはラフネスマップ
Hairマテリアル:よりリアルにするために
• Pixel Depth Offsetの有無による違い
PDOを使用するとOpacityMaskのDitherは不要
深度テストの関係でベースモデルに遮られて非表示となるため
使用しないとヘアラインが平坦になる
PDO:OFFPDO:ON
Hairマテリアル:よりリアルにするために
• ベースメッシュをDefaultLitではなくHairマテリアルにしてみたらどうか?
髪束感が残りつつ綺麗になってる
ただし処理速度に注意
Hairのみ DefaultLit + Hair Hair + Hair
Hairマテリアル:ライトの問題について
• Hairシェーダでは法線が存在しない
髪のような細い糸状の物体では裏面があまり意味を成さない
しかし、髪が束になれば光の当たらない面も考慮する必要がある
法線が存在しないため、光の当たらない面がライト計算だけでは規定できない
• ではどうやって陰影を求める?
シャドウを利用する
光源がシャドウキャストをしない場合は光が透けてしまうので注意!
Hairマテリアル:ライトの問題について
• シャドウキャストしておけば問題ない?
シャドウマップの精度が問題になる
シャドウとして割り当てられるピクセル数が少ないと正しい遮蔽情報が得られない
ライトビルド前のStationaryLight、ライトビルドとは無関係なMovableLightは影響を受けやすい
StationaryLightはライトビルド後にオブジェクトごとのシャドウマップが作られるのでかなりマシ
MovableLightで綺麗に描画したい場合はオブジェクトごとに “Dynamic Inset Shadow”を有効にする
ただし重い
Stationary(ビルド前
)
Stationary(ビルド後
)
Movable
結論
• Content Examplesは偉大
製品に載っているアセットも含まれてたりする
新しいExampleが追加されてたらチェックしよう!
• シェーディングモデルが追加されても適切なマテリアルが作成できなければ意味がない
マテリアル側で対応しなければいけない部分も多い
Eyeマテリアルの屈折
HairマテリアルのPDO
など
Content Examplesだけだと不十分な場合もある
Hairメッシュの2重化
検証してみないとわからない
検証結果を公開すると喜ぶ人も多い
集合知でUE4を攻略していこう!

More Related Content

PDF
猫でも分かるUE4のポストプロセスを使った演出・絵作り
PDF
60fpsアクションを実現する秘訣を伝授 基礎編
PDF
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
PPTX
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
PDF
UE4におけるアニメーション制作事例
PDF
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
PPTX
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
猫でも分かるUE4のポストプロセスを使った演出・絵作り
60fpsアクションを実現する秘訣を伝授 基礎編
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4におけるアニメーション制作事例
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD

What's hot (20)

PDF
UE4を使った映像制作 (UE4 Character Art Dive Online)
PPTX
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
PDF
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
PPTX
猫でも分かる UE4のAnimation Blueprintの運用について
PDF
UE4 LODs for Optimization -Beginner-
PPTX
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
PPTX
[CEDEC2018] UE4アニメーションシステム総おさらい
PDF
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
PDF
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
PDF
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
PDF
UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~
PDF
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
PDF
猫でも分かる UE4の新しいサンプル「Action RPG」について
PDF
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
PDF
UE4でTranslucencyやUnlitに影を落としたい!
PDF
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
PDF
Unreal Engine 4を使って地球を衛る方法
PDF
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
PDF
デジタル水遊び (UE4 VFX Art Dive)
PDF
UE4 Volumetric Fogで 空間を演出する!
UE4を使った映像制作 (UE4 Character Art Dive Online)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
猫でも分かる UE4のAnimation Blueprintの運用について
UE4 LODs for Optimization -Beginner-
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
[CEDEC2018] UE4アニメーションシステム総おさらい
UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)
NPRキャラクターレンダリング総結集!今こそ更なる高みを目指して | UNREAL FEST EXTREME 2020 WINTER
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
UE4のマテリアルを もっと楽しもう!~マテリアルでぐっと広がるリアルタイムCG表現の幅~
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
猫でも分かる UE4の新しいサンプル「Action RPG」について
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
UE4でTranslucencyやUnlitに影を落としたい!
初心者向け UE4 映像制作での シーケンサー と Movie Render Queue の使い方
Unreal Engine 4を使って地球を衛る方法
CEDEC2017 アーティストのためのリアルタイムシェーダー学習法
デジタル水遊び (UE4 VFX Art Dive)
UE4 Volumetric Fogで 空間を演出する!
Ad

More from Satoshi Kodaira (6)

PPTX
UE4.25のレイトレーシングで出来ること/出来ないこと
PPTX
UE4のレイトレで出来ること/出来ないこと
PPTX
Substance勉強会 第3回 資料
PPTX
Substanceテクスチャワークフロー XXX編
PPTX
Substanceのちょっといい話
PPTX
なぜなにリアルタイムレンダリング
UE4.25のレイトレーシングで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
Substance勉強会 第3回 資料
Substanceテクスチャワークフロー XXX編
Substanceのちょっといい話
なぜなにリアルタイムレンダリング
Ad

Kiteの少年と学ぶUE4.11の新シェーダ