UE4 Hair & Groomでのリアルタイムファーレンダリング【UE4 Character Art Dive Online】

130.3K Views

July 26, 21

スライド概要

講演動画はこちら:
https://youtu.be/GEl8AfgI35g

講演者:
小林 浩之(Epic Games Japan)
https://twitter.com/hannover_bloss

本スライドは2021年7月25日に行われたオンライン勉強会「UE4 Character Art Dive Online」の講演資料となります。

イベントについてはこちら:
https://www.unrealengine.com/ja/blog/epicgamesjapan-onlinelearning-13

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

UE4 Hair & Groomでの リアルタイムファーレンダリング Epic Games Japan / Technical Artist DevRel 小林 浩之

2.

自己紹介 小林浩之 Epic Games Japan / Technical Artist UDNなどでライセンシー向けのサポート Twitter / はのば@hannover_bloss

4.

Hair Groom導入部分 ちろナモ様の記事 https://qiita.com/chironamo/items/41d24d59bcab605e6475 公式ドキュメント クイックスタート https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/QuickStart/

5.

もう少し踏み込んだお話

6.

アジェンダ セットアップ Groom Asset ライティング 最適化

7.

アジェンダ セットアップ Groom Asset ライティング 最適化

8.

検証環境 GPU RTX2080ti CPU AMD Ryzen 9 3950X RAM 64.0 GB Unreal Engine 4.26.2

9.

セットアップ Hair GroomはHoudiniで作成

10.

セットアップ UVやBaseColorなどのアトリビュートがインポート可能 命名規則に準じて名前を付けておく

11.

セットアップ 命名規則 https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/AlembicForGrooms/

12.

セットアップ Materialから各種アトリビュートへアクセス可能 ストランド毎に色のバラつきを表現するため、Base Colorをマスクとして使用

13.

セットアップ 模様などのBase Colorはテクスチャマッピング UVにもMaterialからアクセス可能

14.

セットアップ インポートに時間がかかるため、Groomアセットは部位ごとに分けて管理 頭部の41万本、370万頂点で5~6分

15.

アジェンダ セットアップ Groom Asset ライティング 最適化

16.

Groom Asset Showリスト Hairの各アトリビュートを可視化

17.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Guide

18.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Guide Influence

19.

Groom Asset Showリスト Hairの各アトリビュートを可視化 UV

20.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Root UV

21.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Root UDIM

22.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Seed

23.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Dimension

24.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Radius Variation

25.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Base Color

26.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Roughness

27.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Vis Color

28.

Groom Asset Showリスト Hairの各アトリビュートを可視化 Cards Guide

29.

Groom Asset LOD

30.

Groom Asset - LOD Curve、Vertex Decimation Curve Decimation Curveの本数を減らす

31.

Groom Asset - LOD Curve、Vertex Decimation Vertex Decimation Vertexの数を減らす

32.

Groom Asset - LOD Angular Threshold Vertex Decimationで頂点を削除する時の角度閾値 値が大きいほど削除される

33.

Groom Asset - LOD Thickness Scale Curveを減らした分太くして隙間を補う

34.

Groom Asset - LOD Visible Screen Size

35.

Groom Asset - LOD Geometry Type ジオメトリのタイプを選択する Strands or Cards or Meshes

36.

Groom Asset - LOD LODSelection Type LODの選択をCPUで行うかGPUで行うかを設定 CPU すべてのGeometry Typeに対応 GPU Groomのクラスターデータを使用してより細かい精度で行う カード、メッシュは非対応

37.

Groom Asset - LOD Minimum LOD 最小LODを指定する プラットフォームごとに設定可能 Disable Below Min Lod Stripping Minimum LOD未満のLODを削除 プラットフォームごとに設定可能

38.

Groom Asset Interporation

39.

Groom Asset - Interporation Curve、Vertex Decimation

40.

Groom Asset - Interporation Override Guide ガイドとして使用されるストランドのサブセットを選択し インポートされたガイドをオーバーライドする

41.

Groom Asset - Interporation Hair to Guide Density ガイドとして使用されるストランドの比率

42.

Groom Asset - Interporation Interpolation Quality ストランドへのガイドモーションを補間する際の補間品質

43.

Groom Asset - Interporation Interpolation Distance ガイドとストランドをペアリングする際に使用されるメトリックタイプ Parametric ・カーブのパラメトリック距離によって補間 Root ・ストランドルートとガイドルート間の距離によって補間 Index ・ストランドとガイドのVertex Indexによって補間

44.

Groom Asset - Interporation RBF Interpolation Radial Basis Function(RBF) を補間に使用

45.

Groom Asset - Interporation Hair Interpolation Type グルームがスケルタルメッシュにバインドされる時に使用する補間のタイプ Rigid Transform: 補間中はスキンのトライアングルに最も近いルートの移動のみを使用 Offset Transform: 補間中はスキンのトライアングルに最も近いルートの移動のみを使用 Smooth Transform: 補間中はスキンのトライアングルに最も近いルートの移動と ガイドから計算されたスムーズな回転を使用

46.

Groom Asset Strands

47.

Groom Asset - Strands Material ストランドで使用するマテリアル

48.

Groom Asset - Strands Hair Width ストランドの幅(太さ)を変更 インポートされたグルームのデフォルト値

49.

Groom Asset - Strands Hair Root Scale ヘアの根本の太さ Hair Tip Scale ヘアの先端の太さ

50.

Groom Asset - Strands Hair Shadow Density シャドウおよびトランスミッションの強弱がグルーム全体で均一になるよう ヘアの密度をスケーリングする

51.

Groom Asset - Strands Hair Raytracing Radius Scale レイトレースされたシャドウイングが使用される場合に ストランドの幅をスケーリングする Use Hair Raytracing Geometry ヘアのレイトレーシングレンダリングを有効にする

52.

Groom Asset - Strands Voxelize ライティング計算のためにボクセル化するかどうか

53.

Groom Asset - Strands Use Stable Rasterization ストランドのノイズを抑えるが、やや厚めに表示される

54.

Groom Asset - Strands Scatter Scene Lighting シーンのライティングを光源としてストランドで使用する まつ毛や産毛などの非常に短い髪向け

55.

Groom Asset Cards

56.

Groom Asset - Cards Source Type Procedual カードメッシュをエンジン内で自動生成する 実験的機能 Imported インポートしたメッシュを使用

57.

Groom Asset - Cards プロシージャル生成 Generation Type Use Guides ガイドを使用してカードを生成 Cards Count パラメータで設定した数でカードを生成

58.

Groom Asset - Cards プロシージャル生成 Cluster Type クラスターを生成する際の精度

59.

Groom Asset - Cards プロシージャル生成 Min Segment Length カードのセグメント同士の最小距離 Angular Threshold カードのセグメント同士の最大角度

60.

Groom Asset - Cards プロシージャル生成 Min Cards Length この閾値より短いカードを削除する Max Cards Length この閾値より長いカードを削除する

61.

Groom Asset - Cards プロシージャル生成 Atlas Max Resolution 生成されるカードアトラスの最大解像度 Pixel Per Centimeters カードアトラスのピクセル精度 Length Texture Count 生成されるクラスターのバリエーション数

62.

Groom Asset - Cards Textures Hair Attributesノードに送られる各種ア トリビュートテクスチャ

63.

Groom Asset Meshes

64.

Groom Asset - Meshes Material Imported Mesh

65.

Groom Asset - Meshes Textures

66.

Groom Asset - Meshes Create Strands Texturesから 各種アトリビュートテクスチャを生成

67.

Groom Asset Materials

68.

Groom Asset - Materials Materialsで設定したマテリアルが各項目から選択できる Strandsの場合、Used With Hair Strandsフラグが必要

69.

Groom Asset Physics

70.

Groom Asset - Physics Enable Smulation グルームのシミュレーションを有効にする

71.

Groom Asset - Physics Niagara Solver シミュレーションに使用するナイアガラソルバを選択 ● Cosserate Rods ● Angular Springs ● Custom Solver Custom System Custom Solverで使用するナイアガラソルバを選択

72.

Groom Asset - Physics Sub Steps フレームごとに実行されるサブステップの数 Iteration Count ソルバのイテレーション数

73.

Groom Asset - Physics Gravity Vector 重力の加速度ベクター (cm/s2) Air Drag 空気抗力に使用する 0 から 1 の間の係数 Air Velocity 周囲の空気の速度 (cm/s)

74.

Groom Asset - Physics Bend Constraint Bend(曲げ)に関するパラメーター群

75.

Groom Asset - Physics Stretch Constraint Stretch(伸縮)に関するパラメーター群

76.

Groom Asset - Physics Collision Constraint Collosionに関するパラメーター群

77.

Groom Asset - Physics Strands Parameters Strandsに関するパラメーター群

78.

アジェンダ セットアップ Groom Asset ライティング 最適化

79.

ライティング ShadowやAnti-Aliasing、透過率を計算するためにCustom Render Pathを使用 Pixel内でストランドを複数回サンプル r.HairStrands.DebugMode 5で可視化

80.

ライティング 3つのレンダリングモード ● MSAA-ed Visibility Buffer ● Per Pixel Linked List ● Raster Compute

81.

ライティング MSAA-ed Visibility Buffer デフォルト設定

82.

ライティング Per Pixel Linked List r.HairStrands.Visibility.PPLL 1で有効 処理負荷が高く、映像向け

83.

ライティング Raster Compute r.HairStrands.Visibility.ComputeRaster 1で有効 比較的負荷が軽い

84.

ライティング ● ● ● ● ● Shadow Deep Shadow Voxel Tracing Sky Lighting Ray Tracing

85.

Shadow Opaque → Hair シャドウマップ

86.

Shadow Hair → Oapque Deep Shadow Voxel Tracing

87.

Shadow Hair → Hair Deep Shadow Voxel Tracing

88.

Deep Shadow Hair専用のシャドウマップを生成する 各ライトの設定からon/off可能

89.

Deep Shadow Deep Opacity Map 4レイヤーのシャドウマップ 階層ごとにヘアの密度を格納 Front Depth Layer 0 Layer 1 Layer 2

90.

Deep Shadow 生成されたシャドウマップの可視化 r.HairStrands.DebugMode 4

91.

Deep Shadow 解像度の変更 r.HairStrands.DeepShadow.Resolution 512 2048

92.

Deep Shadow コンソールコマンドからシャドウマップのPCFフィルタを調整可能 Hair→Hair r.HairStrands.DeepShadow.KernelType 0~4 Hair→Opaque r.HairStrands.DeepShadow.ShadowMaskKernelType 0~4

93.

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

94.

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

95.

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

96.

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

97.

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

98.

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

99.

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

100.

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

101.

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 16 Gaussian PCF Kernel

102.

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 with Transmittance

103.

Voxel Tracing Voxel化したヘアのDensity Volumeを使用 Sky Lightや複数ライトの計算

104.

Voxel Tracing ボクセルサイズの変更 r.HairStrands.Voxelization.Virtual.VoxelWorldSize 0.15 0.3

105.

Voxel Tracing ボクセルの可視化 r.HairStrands.DebugMode 8 r.ShaderPrintEnable 1

106.

Voxel Tracing シャドウはDeep Shadowがオフの場合Voxel Tracingが行われる Deep Shadow Voxel Tracing

107.

Voxel Tracing ノイズ抑制 r.HairStrands.Voxelization.Raymarching.SteppingScale 1.15 1.0

108.

Sky Lighting 複数のIntegration Typeが選べる r.HairStrands.SkyLighting.IntegrationType (0~2) 0 = 1と2の中間程度 若干高負荷 1 = 正確な計算 高負荷 2 = Occlusionが不正確 低負荷

109.

Sky Lighting 複数のIntegration Typeが選べる r.HairStrands.SkyLighting.IntegrationType (0~2) IntegrationType 2

110.

Sky Lighting 複数のIntegration Typeが選べる r.HairStrands.SkyLighting.IntegrationType (0~2) IntegrationType 1

111.

Sky Lighting 複数のIntegration Typeが選べる r.HairStrands.SkyLighting.IntegrationType (0~2) IntegrationType 0

112.

Ray Tracing アセットまたはアクタからUse hair Raytracing Geometryにチェック ライト側はDeep Shadowをオフ

113.

Ray Tracing ソフトシャドウ表現が可能

114.

Ray Tracing レイトレ映る?映らない?

115.

Ray Tracing レイトレ映る?映らない? ヘア、シャドウ共に映らない

116.

アジェンダ セットアップ Groom Asset ライティング 最適化

117.

最適化 コンソールコマンドstat gpuでフレーム内のさまざまなコストを調べることができる

118.

最適化 HairStrandsVisibility:ヘアのプライマリビジビリティのレンダリング ヘアで覆われている部分と、オーバードローの量に依存

119.

最適化 Hair Sky Lighting: Sky Lightのレンダリング

120.

最適化 HairStrandsDeepShadowLayers: Deep Shadowレイヤーのレンダリング ヘアクラスターごととライトごとに行われる

121.

最適化 HairStrandsInterpolation: ヘアストランドの補間

122.

最適化 HairStrandsDeepshadowFrontDepth: ヘアのフロントデプスのレンダリング ヘアクラスターごととライトごとに行われる

123.

最適化 HairStrandsVoxelization: ヘアークラスターのボクセル化

124.

最適化 DeepShadowTransmittanceMask: ヘアの内部で透過する光のレンダリング

125.

最適化 Lights: ヘアのレンダリングが影響する

126.

最適化 GPU Visualizer

127.

最適化 GPU Visualizer Interporlation Deep Shadow Visibility

128.

最適化 コンソールコマンド r.HairStrands.Visibility.MSAA.SamplePerPixel r.HairStrands.Voxelization.Raymarching.SteppingScale r.HairStrands.DeepShadow.Resolution r.HairStrands.SkyLighting.SampleCount

129.

まとめ クオリティ、パフォーマンスのトレードオフを柔軟に選択できる 全体的に負荷が大きくなりがちなため、運用には注意が必要 LODでのカード、メッシュ切り替え、コンソールコマンドによるパラメータ調整を 使いこなせばリアルタイムコンテンツでの運用もある程度は可能 映像や静止画用途ではPPLLなど高価な設定を使うことでハイクオリティな表現も可能

130.

参考 ミーアキャットデモ https://www.unrealengine.com/marketplace/ja/product/meerkat-demo?lang=ja

131.

参考 Hair at a Strand Level | Grooming your creations in Unreal Engine https://www.youtube.com/watch?v=__BScFPJy3E

132.

参考 グルーム アセット エディタのユーザー ガイド https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/GroomAssetEditor/ ヘア レンダリング https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/Overview/ Hair Properties Reference https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/Reference/ Alembic for Grooms の仕様 https://docs.unrealengine.com/4.26/ja/WorkingWithContent/Hair/AlembicForGrooms/

133.

ご視聴ありがとうございました