O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
UE4アセットリダクション手法紹介
Epic Games Japan / Support Manager
Nori Shinoyama
アセット最適化のためのUE4機能紹介
アセット最適化のためのUE4機能紹介
処理負荷/メモリ/ロード時間/パッケージサイズ…
アセットは大量に作成され、様々な領域に影響を及ぼします。
UE4はエディタ内に様々なアセットリダクション機能がありますが、
無闇にアセットをリダクションする...
アセット最適化のためのUE4機能紹介
今回UE4のアセットリダクション機能の各種が、
何を削減し何に対して効果があるのかを簡単にまとめてみました。
1. Polygon Reduction / LOD
2. Actor Merge / HLOD...
備考
• Audioアセットに関しては今回含まれておりません
– 篠山の勉強不足です。後日Audioは別枠としてまとめます。
• 検証バージョンはUE4.18~4.19となります。
LOD & Polygon Reduction
UE4はエディタ内部で自動的にLODとそれに合わせた
Polygon Reductionをする機能があります。
Static Mesh
LOD & Polygon Reduction
Skeletal Mesh
LOD & Polygon Reduction
備考:
Static Mesh のPolygon Reductionは二種類から選べる
• Editorの Mesh Simplificationで設定可能
– UE4内製 or Simplygon
Polygon Reduction & LOD
GPU負荷の削減
(Early Z-pass, Shadow pass, BasePassで効果的)
有益
Render Thread(Draw)
ポリゴン数が減ってもドローコール数が減るわけでは...
どのオブジェクトを、どれぐらいの遠さに、
どれぐらいのポリゴン数で置いたら良いのだろうか??
Polygon Reduction & LOD
どのように効果を測定するか?
頂点計算負荷の高いオブジェクトの選出
BasePassの負荷を見ながら探す手法
• UE4のみで確認する手順
1. r.screenpercentageを下げて、出力...
備考:
r.RHISetGPUCaptureOptions コマンド
• これをONにすることで、BasePass内部の各DrawCall毎の処理負荷
を出力してくれます
– ※RHIThreadがOffになり、DrawThread負荷が急激に...
動的にLODを変化させるコマンド
大雑把な調査には非常に便利
• SkeletalMesh
– r.skeletalmeshlodbias: LODのOffsetを調整
– r.skeletalmeshlodscale: LODの距離をスケーリ...
4.20から…
最小LODを指定し、それよりも詳細なLODモデルをCook時に省くこ
とが可能になるそうです。
これにより、例えば、
– PC/Console
• LOD0の一番クオリティの高いモデルから全て持つ
– Mobile
• LOD2...
HLOD / Actor Merge
HLOD / Actor Merge
レベル上の複数のメッシュを一つのメッシュにまとめる機能
Merge Actors
複数のStaticMeshを一つのStaticMeshに変換する
Merge Actors
複数のメッシュを選んで
Outliner上で右クリック
Developer Toolsから設定
エディタを開くことが可能
HLOD
複数メッシュをまとめたLODモデルを作成し、
遠景の場合はそのまとめたメッシュを使ってレンダリングする
HLOD
レベル単位で
HLODのOn/Offを設定
HLODのクラスタリングや
生成メッシュを設定するエディタ
備考:
HLOD / Merge Actorsの Polygon Reduction 機能
HLOD/Merge Actorsどちらにも
Polygon Reduction機能があります
4.19から、Simplygonを使わない独
自のPol...
Merge Actors
DrawCall削減によるRenderThreadの負荷軽減有益
カリング効率低減によるGPU負荷の増加の可能性
視野外のポリゴン描画が多くなる可能性
副作用
Polygon Reductionを行わないとGPU負荷は...
HLOD
カリング効率低減によるGPU負荷の増加の可能性
視野外のポリゴン描画が多くなる可能性
DrawCall削減によるRenderThreadの負荷軽減有益
副作用
Polygon Reductionを行わないとGPU負荷は減りません
設定...
HLODデータはレベルに紐付いて作成されます
ロード時間とメモリーの増加は必ず確認を
Memreportなどでメモリ消費量をチェック
Merge Actor と HLODの注意点2つ
• 注意点1: Material MergeしないとDrawCallは減りません
• 注意点2: シーン内の同一オブジェクトのマージは別オブジェクトに
注意点1.
MaterialをMergeしないとDrawCallは減りません
注意点1.
MaterialをMergeしないとDrawCallは減りません
3つのマテリアルのオブジェクトをマージしても。。。
注意点1.
MaterialをMergeしないとDrawCallは減りません
レンダリングはマテリアル単位で行われるので、
ドローコール数は減りません
注意点1.
MaterialをMergeしないとDrawCallは減りません
マテリアルをまとめることドローコールが一つになります
注意点2.
シーン内の同一オブジェクトのマージは別オブジェクトに
注意点2.
シーン内の同一オブジェクトのマージは別オブジェクトに
同一のアセットをシーンに置いていたとして…
注意点2.
シーン内の同一オブジェクトのマージは別オブジェクトに
同じLODモデルが別Static Meshとして作成されてしまいます
このような場合は独自でメッシュを差し替える方が良いかもしれません
LOD Bone Reduction
LOD Bone Reduction
Skeletal Meshの動くBoneをLOD毎に設定する機能
LOD Bone Reductionのコンセプト
こんな遠くのキャラクター
LODは効いてポリゴン数少
なくても。。。
ボーンは全部計算される
指のボーン計算しなくても
バレないのでは??
消したいSkeletonを選択して右クリックで、
どのLODで省くかを設定可能
LOD Bone Reduction
CPU上のBone計算(Evaluation)の負荷削減
複雑なAnimGraphを使用している場合特に効果的です。
基本的には、Main ThreadではなくWorker Threadの処理削減です
有益...
Animation Compression
Animation Compression
各Animation Sequenceの圧縮形式を設定可能
Animation Compression
メモリ、ロード時間の削減
メモリ上で圧縮を展開したりしません。
圧縮データから直にアニメーションデータを読み込みます
有益
アニメーションクオリティの低下
適切な圧縮方式を選ぶことが必要
副作用
“CompressAnimations” Commandletで
全アニメーションを一括で圧縮可能
• コマンド例
– UE4Editor-cmd.exe [ProjectPath] –run=CompressAnimations
• Proj...
Animation Compression
圧縮されたデータ量のチェック1
Content Browerで圧縮率とサイズがわかります
Animation Compression
圧縮されたデータ量のチェック2
Cook後の
Animation Assetsのサイズ
Memreportで見る
AnimSequenceのメモリ量
圧縮率: 小
圧縮率: 大
例はThirdPersonで6個しかAnimSequenceがありませんが。。
割合で言うと50%以上の差がある場合も。
圧縮設定でメモリ消費量が大きく変わる可能性があります。
細かくチェックしましょう
圧縮率: 小
圧縮率: 大
Animation Compression
各項目の設定方法
• 設定内容について細かく説明しているブログがあります
– https://nfrechette.github.io/2017/01/11/anim_compression_unre...
Texture Resize
Texture Resize
パッケージサイズ, メモリに優しい
GPU描画も高速に
(キャッシュに乗りやすいためレンダリング速度向上の可能性あり)
有益
テクスチャクオリティの低下
許容できるか、様々なシーンで確認が必要
副作用
Texture Resize
各テクスチャの設定
• UE4 Editorにインポートしたものと、
ゲームで読み込まれるサイズの確認
• Cook時に既に適用されるので、実機用のテクスチャはリサイズさ
れた状態。
– パッケージサイズやロード時...
Texture Resize
各テクスチャの設定
• Gameで読み込むLODを変更する”LOD Bias”
しかし、これは各プラットフォームで共通
Texture Resize
Cook後のTextureのサイズの確認
LODBias = 0 LODBias = 2
UE4 マネキンのテクスチャのサイズの確認
Texture Resize
Platform毎での一括設定
• 各プラットフォームのDeviceProfile.ini のLODBiasを各
TextureLODGroupsで設定することにより、
そのグループを設定されたテクスチャ全ての最小...
アセット最適化のためのUE4機能紹介
1. Polygon Reduction / LOD
2. Actor Merge / HLOD
3. LOD Bone Reduction
4. Animation Compression
5. Text...
End…
Próximos SlideShares
Carregando em…5
×

UE4アセットリダクション手法紹介

9.921 visualizações

Publicada em

処理負荷/メモリ/ロード時間/パッケージサイズ…アセットは大量に作成され、様々な領域に影響を及ぼします。そのため、UE4はエディタ内に様々なアセットリダクション機能があります。しかし、無闇にアセットをリダクションすると、負荷は改善しないのにクオリティを下げてしまうこともあります。

今回UE4のアセットリダクション機能の各種が、
何を削減し何に対して効果があるのかを簡単にまとめてみました。(Audioは間に合わずでごめんなさい!調べてちゃんとまとめたいと思います。)

Publicada em: Engenharia
  • Visit this site: tinyurl.com/sexinarea and find sex in your area for one night)) You can find me on this site too)
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

UE4アセットリダクション手法紹介

  1. 1. UE4アセットリダクション手法紹介 Epic Games Japan / Support Manager Nori Shinoyama
  2. 2. アセット最適化のためのUE4機能紹介
  3. 3. アセット最適化のためのUE4機能紹介 処理負荷/メモリ/ロード時間/パッケージサイズ… アセットは大量に作成され、様々な領域に影響を及ぼします。 UE4はエディタ内に様々なアセットリダクション機能がありますが、 無闇にアセットをリダクションすると、 負荷は改善しないのにクオリティを下げてしまうこともあります。
  4. 4. アセット最適化のためのUE4機能紹介 今回UE4のアセットリダクション機能の各種が、 何を削減し何に対して効果があるのかを簡単にまとめてみました。 1. Polygon Reduction / LOD 2. Actor Merge / HLOD 3. LOD Bone Reduction 4. Animation Compression 5. Texture Resize
  5. 5. 備考 • Audioアセットに関しては今回含まれておりません – 篠山の勉強不足です。後日Audioは別枠としてまとめます。 • 検証バージョンはUE4.18~4.19となります。
  6. 6. LOD & Polygon Reduction
  7. 7. UE4はエディタ内部で自動的にLODとそれに合わせた Polygon Reductionをする機能があります。
  8. 8. Static Mesh LOD & Polygon Reduction
  9. 9. Skeletal Mesh LOD & Polygon Reduction
  10. 10. 備考: Static Mesh のPolygon Reductionは二種類から選べる • Editorの Mesh Simplificationで設定可能 – UE4内製 or Simplygon
  11. 11. Polygon Reduction & LOD GPU負荷の削減 (Early Z-pass, Shadow pass, BasePassで効果的) 有益 Render Thread(Draw) ポリゴン数が減ってもドローコール数が減るわけではない 影響薄 ロード時間とメモリ LODモデルを沢山持つことは、その分のデータ増加の懸念 副作用
  12. 12. どのオブジェクトを、どれぐらいの遠さに、 どれぐらいのポリゴン数で置いたら良いのだろうか??
  13. 13. Polygon Reduction & LOD どのように効果を測定するか? 頂点計算負荷の高いオブジェクトの選出 BasePassの負荷を見ながら探す手法 • UE4のみで確認する手順 1. r.screenpercentageを下げて、出力解像度を下げる。 2. r.RHISetGPUGaptureOptions 1にして ProfileGPUコマンドで計測 DrawCall単位の描画負荷を頂点負荷として確認 • 各種プラットフォームGPUプロファイラで頂点負荷を確認
  14. 14. 備考: r.RHISetGPUCaptureOptions コマンド • これをONにすることで、BasePass内部の各DrawCall毎の処理負荷 を出力してくれます – ※RHIThreadがOffになり、DrawThread負荷が急激に増えます – CPU負荷計測時や常時ONはやめましょう
  15. 15. 動的にLODを変化させるコマンド 大雑把な調査には非常に便利 • SkeletalMesh – r.skeletalmeshlodbias: LODのOffsetを調整 – r.skeletalmeshlodscale: LODの距離をスケーリング • Static – r.StaticMeshLODDistanceScale: LODの距離をスケーリング – r.forceLOD: 任意のLODに一律で設定 これらを使い、どの距離で、 どのぐらいのオブジェクトが必要かを大まかに検証できます
  16. 16. 4.20から… 最小LODを指定し、それよりも詳細なLODモデルをCook時に省くこ とが可能になるそうです。 これにより、例えば、 – PC/Console • LOD0の一番クオリティの高いモデルから全て持つ – Mobile • LOD2からそれ以下のモデルだけを持つ という設定が可能になり、それぞれのプラットフォームに最適なア セットサイズを、一つのアセットで達成することが可能になります。
  17. 17. HLOD / Actor Merge
  18. 18. HLOD / Actor Merge レベル上の複数のメッシュを一つのメッシュにまとめる機能
  19. 19. Merge Actors 複数のStaticMeshを一つのStaticMeshに変換する
  20. 20. Merge Actors 複数のメッシュを選んで Outliner上で右クリック Developer Toolsから設定 エディタを開くことが可能
  21. 21. HLOD 複数メッシュをまとめたLODモデルを作成し、 遠景の場合はそのまとめたメッシュを使ってレンダリングする
  22. 22. HLOD レベル単位で HLODのOn/Offを設定 HLODのクラスタリングや 生成メッシュを設定するエディタ
  23. 23. 備考: HLOD / Merge Actorsの Polygon Reduction 機能 HLOD/Merge Actorsどちらにも Polygon Reduction機能があります 4.19から、Simplygonを使わない独 自のPolygon Reduction機能も使用 できるようになっています。
  24. 24. Merge Actors DrawCall削減によるRenderThreadの負荷軽減有益 カリング効率低減によるGPU負荷の増加の可能性 視野外のポリゴン描画が多くなる可能性 副作用 Polygon Reductionを行わないとGPU負荷は減りません 設定を忘れずに 影響薄
  25. 25. HLOD カリング効率低減によるGPU負荷の増加の可能性 視野外のポリゴン描画が多くなる可能性 DrawCall削減によるRenderThreadの負荷軽減有益 副作用 Polygon Reductionを行わないとGPU負荷は減りません 設定を忘れずに 影響薄 ロード時間とメモリの増加 HLODモデルを沢山持つことは、その分データが増える
  26. 26. HLODデータはレベルに紐付いて作成されます ロード時間とメモリーの増加は必ず確認を Memreportなどでメモリ消費量をチェック
  27. 27. Merge Actor と HLODの注意点2つ • 注意点1: Material MergeしないとDrawCallは減りません • 注意点2: シーン内の同一オブジェクトのマージは別オブジェクトに
  28. 28. 注意点1. MaterialをMergeしないとDrawCallは減りません
  29. 29. 注意点1. MaterialをMergeしないとDrawCallは減りません 3つのマテリアルのオブジェクトをマージしても。。。
  30. 30. 注意点1. MaterialをMergeしないとDrawCallは減りません レンダリングはマテリアル単位で行われるので、 ドローコール数は減りません
  31. 31. 注意点1. MaterialをMergeしないとDrawCallは減りません マテリアルをまとめることドローコールが一つになります
  32. 32. 注意点2. シーン内の同一オブジェクトのマージは別オブジェクトに
  33. 33. 注意点2. シーン内の同一オブジェクトのマージは別オブジェクトに 同一のアセットをシーンに置いていたとして…
  34. 34. 注意点2. シーン内の同一オブジェクトのマージは別オブジェクトに 同じLODモデルが別Static Meshとして作成されてしまいます このような場合は独自でメッシュを差し替える方が良いかもしれません
  35. 35. LOD Bone Reduction
  36. 36. LOD Bone Reduction Skeletal Meshの動くBoneをLOD毎に設定する機能
  37. 37. LOD Bone Reductionのコンセプト こんな遠くのキャラクター LODは効いてポリゴン数少 なくても。。。 ボーンは全部計算される 指のボーン計算しなくても バレないのでは??
  38. 38. 消したいSkeletonを選択して右クリックで、 どのLODで省くかを設定可能
  39. 39. LOD Bone Reduction CPU上のBone計算(Evaluation)の負荷削減 複雑なAnimGraphを使用している場合特に効果的です。 基本的には、Main ThreadではなくWorker Threadの処理削減です 有益 遠景のアニメーションクオリティの低下の懸念 大丈夫かどうかの確認をお願いします。 副作用 GPU側の負荷削減には繋がりません 若干あるかもですが、こちらで観測できていません 影響なし
  40. 40. Animation Compression
  41. 41. Animation Compression 各Animation Sequenceの圧縮形式を設定可能
  42. 42. Animation Compression メモリ、ロード時間の削減 メモリ上で圧縮を展開したりしません。 圧縮データから直にアニメーションデータを読み込みます 有益 アニメーションクオリティの低下 適切な圧縮方式を選ぶことが必要 副作用
  43. 43. “CompressAnimations” Commandletで 全アニメーションを一括で圧縮可能 • コマンド例 – UE4Editor-cmd.exe [ProjectPath] –run=CompressAnimations • Project Settingsで、コマンドの圧縮形式の設定が可能 • アセット毎に、 この一括圧縮をしないと設定することも可能
  44. 44. Animation Compression 圧縮されたデータ量のチェック1 Content Browerで圧縮率とサイズがわかります
  45. 45. Animation Compression 圧縮されたデータ量のチェック2 Cook後の Animation Assetsのサイズ Memreportで見る AnimSequenceのメモリ量 圧縮率: 小 圧縮率: 大
  46. 46. 例はThirdPersonで6個しかAnimSequenceがありませんが。。 割合で言うと50%以上の差がある場合も。 圧縮設定でメモリ消費量が大きく変わる可能性があります。 細かくチェックしましょう 圧縮率: 小 圧縮率: 大
  47. 47. Animation Compression 各項目の設定方法 • 設定内容について細かく説明しているブログがあります – https://nfrechette.github.io/2017/01/11/anim_compression_unreal4/ • また、4.20でAnim Compressionを大幅に改善するように 現在制作中です。
  48. 48. Texture Resize
  49. 49. Texture Resize パッケージサイズ, メモリに優しい GPU描画も高速に (キャッシュに乗りやすいためレンダリング速度向上の可能性あり) 有益 テクスチャクオリティの低下 許容できるか、様々なシーンで確認が必要 副作用
  50. 50. Texture Resize 各テクスチャの設定 • UE4 Editorにインポートしたものと、 ゲームで読み込まれるサイズの確認 • Cook時に既に適用されるので、実機用のテクスチャはリサイズさ れた状態。 – パッケージサイズやロード時間にも影響
  51. 51. Texture Resize 各テクスチャの設定 • Gameで読み込むLODを変更する”LOD Bias” しかし、これは各プラットフォームで共通
  52. 52. Texture Resize Cook後のTextureのサイズの確認 LODBias = 0 LODBias = 2 UE4 マネキンのテクスチャのサイズの確認
  53. 53. Texture Resize Platform毎での一括設定 • 各プラットフォームのDeviceProfile.ini のLODBiasを各 TextureLODGroupsで設定することにより、 そのグループを設定されたテクスチャ全ての最小LODを変更できる • Platform毎に別々の設定ができるが、グループ単位で一括の設定
  54. 54. アセット最適化のためのUE4機能紹介 1. Polygon Reduction / LOD 2. Actor Merge / HLOD 3. LOD Bone Reduction 4. Animation Compression 5. Texture Resize
  55. 55. End…

×