Skip to main content
UE4 Hair & Groomでの
リアルタイムファーレンダリング
Epic Games Japan / Technical Artist DevRel
小林 浩之
自己紹介
小林浩之
Epic Games Japan / Technical Artist
UDNなどでライセンシー向けのサポート
Twitter / はのば@hannover_bloss
ちろナモ様の記事
https://qiita.com/chironamo/items/41d24d59bcab605e6475
Hair Groom導入部分
公式ドキュメント クイックスタート
https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/QuickStart/
もう少し踏み込んだお話
アジェンダ
セットアップ
Groom Asset
ライティング
最適化
アジェンダ
セットアップ
Groom Asset
ライティング
最適化
検証環境
GPU RTX2080ti
CPU AMD Ryzen 9 3950X
RAM 64.0 GB
Unreal Engine 4.26.2
セットアップ
Hair GroomはHoudiniで作成
セットアップ
UVやBaseColorなどのアトリビュートがインポート可能
命名規則に準じて名前を付けておく
セットアップ
命名規則
https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/AlembicForGrooms/
セットアップ
Materialから各種アトリビュートへアクセス可能
ストランド毎に色のバラつきを表現するため、Base Colorをマスクとして使用
セットアップ
模様などのBase Colorはテクスチャマッピング
UVにもMaterialからアクセス可能
セットアップ
インポートに時間がかかるため、Groomアセットは部位ごとに分けて管理
頭部の41万本、370万頂点で5~6分
アジェンダ
セットアップ
Groom Asset
ライティング
最適化
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Guide
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Guide Influence
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
UV
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Root UV
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Root UDIM
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Seed
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Dimension
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Radius Variation
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Base Color
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Roughness
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Vis Color
Groom Asset
Showリスト
Hairの各アトリビュートを可視化
Cards Guide
Groom Asset
LOD
Groom Asset - LOD
Curve、Vertex Decimation
Curve Decimation
Curveの本数を減らす
Groom Asset - LOD
Curve、Vertex Decimation
Vertex Decimation
Vertexの数を減らす
Groom Asset - LOD
Angular Threshold
Vertex Decimationで頂点を削除する時の角度閾値
値が大きいほど削除される
Groom Asset - LOD
Thickness Scale
Curveを減らした分太くして隙間を補う
Groom Asset - LOD
Visible
Screen Size
Groom Asset - LOD
Geometry Type
ジオメトリのタイプを選択する
Strands or Cards or Meshes
Groom Asset - LOD
LODSelection Type
LODの選択をCPUで行うかGPUで行うかを設定
CPU
すべてのGeometry Typeに対応
GPU
Groomのクラスターデータを使用してより細かい精度で行う
カード、メッシュは非対応
Groom Asset - LOD
Minimum LOD
最小LODを指定する
プラットフォームごとに設定可能
Disable Below Min Lod Stripping
Minimum LOD未満のLODを削除
プラットフォームごとに設定可能
Groom Asset
Interporation
Groom Asset - Interporation
Curve、Vertex Decimation
Groom Asset - Interporation
Override Guide
ガイドとして使用されるストランドのサブセットを選択し
インポートされたガイドをオーバーライドする
Groom Asset - Interporation
Hair to Guide Density
ガイドとして使用されるストランドの比率
Groom Asset - Interporation
Interpolation Quality
ストランドへのガイドモーションを補間する際の補間品質
Groom Asset - Interporation
Interpolation Distance
ガイドとストランドをペアリングする際に使用されるメトリックタイプ
Parametric
・カーブのパラメトリック距離によって補間
Root
・ストランドルートとガイドルート間の距離によって補間
Index
・ストランドとガイドのVertex Indexによって補間
Groom Asset - Interporation
RBF Interpolation
Radial Basis Function(RBF) を補間に使用
Groom Asset - Interporation
Hair Interpolation Type
グルームがスケルタルメッシュにバインドされる時に使用する補間のタイプ
Rigid Transform: 補間中はスキンのトライアングルに最も近いルートの移動のみを使用
Offset Transform: 補間中はスキンのトライアングルに最も近いルートの移動のみを使用
Smooth Transform: 補間中はスキンのトライアングルに最も近いルートの移動と
ガイドから計算されたスムーズな回転を使用
Groom Asset
Strands
Groom Asset - Strands
Material
ストランドで使用するマテリアル
Groom Asset - Strands
Hair Width
ストランドの幅(太さ)を変更
インポートされたグルームのデフォルト値
Groom Asset - Strands
Hair Root Scale
ヘアの根本の太さ
Hair Tip Scale
ヘアの先端の太さ
Groom Asset - Strands
Hair Shadow Density
シャドウおよびトランスミッションの強弱がグルーム全体で均一になるよう
ヘアの密度をスケーリングする
Groom Asset - Strands
Hair Raytracing Radius Scale
レイトレースされたシャドウイングが使用される場合に
ストランドの幅をスケーリングする
Use Hair Raytracing Geometry
ヘアのレイトレーシングレンダリングを有効にする
Groom Asset - Strands
Voxelize
ライティング計算のためにボクセル化するかどうか
Groom Asset - Strands
Use Stable Rasterization
ストランドのノイズを抑えるが、やや厚めに表示される
Groom Asset - Strands
Scatter Scene Lighting
シーンのライティングを光源としてストランドで使用する
まつ毛や産毛などの非常に短い髪向け
Groom Asset
Cards
Groom Asset - Cards
Source Type
Procedual
カードメッシュをエンジン内で自動生成する
実験的機能
Imported
インポートしたメッシュを使用
Groom Asset - Cards
プロシージャル生成
Generation Type
Use Guides
ガイドを使用してカードを生成
Cards Count
パラメータで設定した数でカードを生成
Groom Asset - Cards
プロシージャル生成
Cluster Type
クラスターを生成する際の精度
Groom Asset - Cards
プロシージャル生成
Min Segment Length
カードのセグメント同士の最小距離
Angular Threshold
カードのセグメント同士の最大角度
Groom Asset - Cards
プロシージャル生成
Min Cards Length
この閾値より短いカードを削除する
Max Cards Length
この閾値より長いカードを削除する
Groom Asset - Cards
プロシージャル生成
Atlas Max Resolution
生成されるカードアトラスの最大解像度
Pixel Per Centimeters
カードアトラスのピクセル精度
Length Texture Count
生成されるクラスターのバリエーション数
Groom Asset - Cards
Textures
Hair Attributesノードに送られる各種ア
トリビュートテクスチャ
Groom Asset
Meshes
Groom Asset - Meshes
Material
Imported Mesh
Groom Asset - Meshes
Textures
Groom Asset - Meshes
Create Strands Texturesから
各種アトリビュートテクスチャを生成
Groom Asset
Materials
Groom Asset - Materials
Materialsで設定したマテリアルが各項目から選択できる
Strandsの場合、Used With Hair Strandsフラグが必要
Groom Asset
Physics
Groom Asset - Physics
Enable Smulation
グルームのシミュレーションを有効にする
Groom Asset - Physics
Niagara Solver
シミュレーションに使用するナイアガラソルバを選択
● Cosserate Rods
● Angular Springs
● Custom Solver
Custom System
Custom Solverで使用するナイアガラソルバを選択
Groom Asset - Physics
Sub Steps
フレームごとに実行されるサブステップの数
Iteration Count
ソルバのイテレーション数
Groom Asset - Physics
Gravity Vector
重力の加速度ベクター (cm/s2)
Air Drag
空気抗力に使用する 0 から 1 の間の係数
Air Velocity
周囲の空気の速度 (cm/s)
Groom Asset - Physics
Bend Constraint
Bend(曲げ)に関するパラメーター群
Groom Asset - Physics
Stretch Constraint
Stretch(伸縮)に関するパラメーター群
Groom Asset - Physics
Collision Constraint
Collosionに関するパラメーター群
Groom Asset - Physics
Strands Parameters
Strandsに関するパラメーター群
アジェンダ
セットアップ
Groom Asset
ライティング
最適化
ライティング
ShadowやAnti-Aliasing、透過率を計算するためにCustom Render Pathを使用
Pixel内でストランドを複数回サンプル
r.HairStrands.DebugMode 5で可視化
ライティング
3つのレンダリングモード
● MSAA-ed Visibility Buffer
● Per Pixel Linked List
● Raster Compute
ライティング
MSAA-ed Visibility Buffer
デフォルト設定
ライティング
Per Pixel Linked List
r.HairStrands.Visibility.PPLL 1で有効
処理負荷が高く、映像向け
ライティング
Raster Compute
r.HairStrands.Visibility.ComputeRaster 1で有効
比較的負荷が軽い
ライティング
● Shadow
● Deep Shadow
● Voxel Tracing
● Sky Lighting
● Ray Tracing
Shadow
Opaque → Hair
シャドウマップ
Shadow
Hair → Oapque
Deep Shadow
Voxel Tracing
Shadow
Hair → Hair
Deep Shadow
Voxel Tracing
Deep Shadow
Hair専用のシャドウマップを生成する
各ライトの設定からon/off可能
Deep Shadow
Deep Opacity Map
4レイヤーのシャドウマップ 階層ごとにヘアの密度を格納
Front Depth
Layer 0
Layer 1
Layer 2
Deep Shadow
生成されたシャドウマップの可視化
r.HairStrands.DebugMode 4
Deep Shadow
解像度の変更
r.HairStrands.DeepShadow.Resolution
512 2048
Deep Shadow
コンソールコマンドからシャドウマップのPCFフィルタを調整可能
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
Hair→Opaque
r.HairStrands.DeepShadow.ShadowMaskKernelType 0~4
Deep Shadow
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
0 = Linear
1 = 2x2 PCF Kernel
2 = 6x4 PCF Kernel
3 = PCSS
4 = 6x6 PCF Kernel
Linear
Deep Shadow
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
0 = Linear
1 = 2x2 PCF Kernel
2 = 6x4 PCF Kernel
3 = PCSS
4 = 6x6 PCF Kernel
2x2 PCF Kernel
Deep Shadow
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
0 = Linear
1 = 2x2 PCF Kernel
2 = 6x4 PCF Kernel
3 = PCSS
4 = 6x6 PCF Kernel
6x4 PCF Kernel
Deep Shadow
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
0 = Linear
1 = 2x2 PCF Kernel
2 = 6x4 PCF Kernel
3 = PCSS
4 = 6x6 PCF Kernel
PCSS
Deep Shadow
Hair→Hair
r.HairStrands.DeepShadow.KernelType 0~4
0 = Linear
1 = 2x2 PCF Kernel
2 = 6x4 PCF Kernel
3 = PCSS
4 = 6x6 PCF Kernel
6x6 PCF Kernel
Deep Shadow
Hair→Opaque
r.HairStrands.DeepShadow.ShadowMaskKernelType 0~4
0 = 2x2 PCF Kernel
1 = 4x4 PCF Kernel
2 = 8 Gaussian PCF Kernel
3 = 16 Gaussian PCF Kernel
4 = 8 Gaussian with Transmittance
2x2 PCF Kernel
Deep Shadow
Hair→Opaque
r.HairStrands.DeepShadow.ShadowMaskKernelType 0~4
0 = 2x2 PCF Kernel
1 = 4x4 PCF Kernel
2 = 8 Gaussian PCF Kernel
3 = 16 Gaussian PCF Kernel
4 = 8 Gaussian with Transmittance
4x4 PCF Kernel
Deep Shadow
Hair→Opaque
r.HairStrands.DeepShadow.ShadowMaskKernelType 0~4
0 = 2x2 PCF Kernel
1 = 4x4 PCF Kernel
2 = 8 Gaussian PCF Kernel
3 = 16 Gaussian PCF Kernel
4 = 8 Gaussian with Transmittance
8 Gaussian PCF Kernel