More Related Content
Similar to UE4 LODs for Optimization -Beginner- (20)
UE4 LODs for Optimization -Beginner-
- 4. 自己紹介
● マーケットプレイスに出品しました
− ComMaterialTools
● https://www.unrealengine.com/marketplace/commaterialtools
● マテリアル検索の便利ツール
● 過去スライド
− https://www.slideshare.net/com044/presentations
● [第1回] エンジン改造ってどうなの?
● [第2回] マテリアル基礎・初級
● [第4回] UE4でのチーム製作
● [第5回] アニメーションBP基礎
● [第6回] もっとアニメーションBP
● [プログラマー向け] エンジンの内部挙動について
4
- 6. ● What’s LOD? [link]
● LODを使うにあたって諸注意 [link]
● Static Mesh [link]
● Skeletal Mesh [link]
● Animation [link]
● Cascade [link]
● HLOD [link]
● Impostor [link]
● さいごに [link]
もくじ
version: UE4.20.0
- 7. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 13. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 19. LODを使うにあたって諸注意
LODが必要なのか?
● そもそも処理負荷 / 描画負荷の問題はLODを作成する
事で解消されるのか?
○ =重いのはどこ?
○ モデルLODはGPU頂点処理が重ければ有効
○ マテリアル/エフェクトLODはGPUピクセル処理が重ければ有
効
○ Animation, Bone等の計算系のLODはCPU負荷の軽減
■ (とはいえ描画passの何処が重いかでも変わってくるので一概には言えない ……)
- 24. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 28. Static Mesh - LOD生成
● 「LODグループ」の設定をメッシュの種類に変更
● 「LOD数」に段階数を設定
● 「変更を適用」を
押すと生成される
- 29. Static Mesh - LOD生成
ViewのLODパネルでLODを確認できる。
「LOD Auto」は設定された
距離で切り替わっていく。
- 32. Static Mesh - LOD生成
LODグループ
● /Engine/Config/BaseEngine.ini
○ [StaticMeshLODSettings] に設定がある
● LOD数やリダクション具合のプリセット
● 「None」にして生成すると
リダクション設定で
手入力する必要がある
- 33. Static Mesh - LOD生成
リダクション設定
● ViewでLODレベルを指定すると、
詳細欄に設定パネルが出る
○ LODレベル毎に個別指定できる
- 34. Static Mesh - LOD生成
リダクション設定
● 「トライアングルの割合」で
頂点/トライアングルのリダクション
具合を指定できる
○ 数値を下げると頂点数/トライアング
ル数が減る
- 35. Static Mesh - LOD生成
トライアングルの割合12.5
6,949トライアングル、4,356頂点
トライアングルの割合2.0
1,110トライアングル、905頂点
- 36. Static Mesh - LOD生成
LOD Pickerパネルの「カスタム」にチェックを入れると、全
LODのパネルを表示できる
- 38. Static Mesh - LODインポート
外部で編集したモデルデータ(FBX)をLODモデルとしてイ
ンポートする事もできる
- 42. Static Mesh - LOD切り替わり距離
LODが切り替わる距離を調整する
● デフォルト設定よりも近くからLODレベルを上げて(=
ディティールを下げる)描画速度を優先させる時とか
● 逆にディティールが下がり過ぎるので距離を遠目に設
定する時とか
- 43. Static Mesh - LOD切り替わり距離
LOD設定パネルで「LOD距離を自動計算」をOFFにする
● ONだといい感じに自動で計算してくれる
- 44. Static Mesh - LOD切り替わり距離
各LODレベルのパネルにある「スクリーンサイズ」を変更す
る。
● 数値はメッシュの
スクリーン上でのサイズ
○ 大きくすると、カメラに
近い段階で切り替わる
○ 小さくすると、遠くで
切り替わる
■ LODレベルが上がるにつれ、
数値は小さくなっていく
- 46. Static Mesh - LOD切り替わり距離
プラットフォーム毎で設定を切り替える事ができる
● PCとモバイル両方にリリースする際に、モバイルだけ
LODを強くかけるとか
- 47. Static Mesh - LOD切り替わり距離
プラットフォーム毎の調整は「スクリーンサイズ」の値右横
にある▼から追加できる。
● それぞれのプラットフォーム毎に個別のスクリーンサイ
ズを指定できる。
- 48. Static Mesh - LOD切り替わり距離
BPの設定欄から個別に指定も出来る
● Forced Lod Model
○ 「0」は距離で自動切り替え
○ 「1」以上でLODモデルを固定
■ 距離でLODが変わらなくなる
■ (Force Lod Model - 1)のLODが使用される
■ カットシーン等でLODを固定したい時とか
- 49. Static Mesh - LOD切り替わり距離
BPの設定欄から個別に指定も出来る
● Override Min LOD / Min LOD
○ 最小LODを指定する
■ 指定した数値未満のLODが出てこない
● 1に指定すると、LODレベル0が出ない
■ AのシーンだとカメラにアップになるからLOD
レベル0で出したい
■ けど、Bのシーンは一杯出るからLODレベル
2からにしたい。時とか。
- 51. Static Mesh - マテリアルLOD
マテリアルをLODする
● 遠い時に計算を簡略化、法線マップを外す等して描画
最適化
○ GPUの負荷が下がる
● ただ、違うマテリアルを設定するとマテリアルスイッチの
コストが掛かってしまう事も注意
○ 同一マテリアルで別マテリアルインスタンスなら大丈夫 ……かも……
■ ややこしいね!どこがボトルネックで解消できるのかプロファイル取ろう!
- 52. Static Mesh - マテリアルLOD
メッシュエディタを開いて、「マテリアルスロット」の右側にあ
る「+」ボタンを押してスロットを追加する
- 54. Static Mesh - マテリアルLOD
LOD欄の「セクション」項目の中にメッシュのマテリアルリス
トがある
● そこから差し替えたいマテリアルの「マテリアルスロット」
コンボボックスから先程のマテリアルを選択する
- 55. Static Mesh - マテリアルLOD
これでそのLODが出る時は、変更したマテリアルで表示さ
れる
● 下図では右だけ法線マップ外してみた
- 56. Static Mesh - マテリアルLOD
他にも「シャドウを落とす」オプションもLODのマテリアル毎
に設定できる
● 遠くにいったら影が見えにくいので、いっそ消して負荷
を下げる
- 58. Static Mesh - LODの補間
LODそのままだと切り替えタイミングがパツッと切り替わ
り、モデルデータが差し替わるタイミングが気になってしま
う
LOD 0 LOD 1
- 59. Static Mesh - LODの補間
LODが切り替わるタイミングで、ディザで補間して切り替え
る方法がある
LOD 0 LOD 1
- 60. Static Mesh - LODの補間
ディザ補間したいマテリアルを開き、詳細欄の
「Dithered LOD Transition」を
ONにする
- 61. Static Mesh - LODの補間
これだけでLODの切り替え部分をディザで補間してくれる
● 動画
○ https://twitter.com/com04/status/1020688434120179718
- 62. Static Mesh - 参考
参考
● LOD の自動生成をセットアップする
○ http://api.unrealengine.com/JPN/Engine/Content/Types/StaticMeshes/
HowTo/AutomaticLODGeneration/index.html
○ https://docs.unrealengine.com/en-us/Engine/Content/Types/StaticMes
hes/HowTo/AutomaticLODGeneration
● Per - Platform LOD Screen Size
○ https://docs.unrealengine.com/en-us/Editor/Content/Types/StaticMesh
es/HowTo/PerPlatformLODScreenSize
- 63. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 65. Skeletal Mesh - LODインポート
Skeletal MeshはUE4内でLODモデルを生成出来ないの
で、外部ツールでLODモデルを作成してインポートする。
基本的な設定はStatic Meshと一緒。
※Simpolygon使うと出来るらしい
(触った事ないので噂)
- 70. Skeletal Mesh - ボーンLOD
Skeletal Meshはボーン計算をLODで減らす事ができる
● ボーンの計算を省いてCPUを最適化できる
- 71. Skeletal Mesh - ボーンLOD
LODレベルのパネル内の
「Bones to Remove」項目。
● このLODレベルでアニメーション
計算を省きたいボーンを指定す
る
- 74. Skeletal Mesh - ボーンLOD
場所によっては目立ってしまうので、
● 目立ちにくい場所
○ 指のボーンとか
○ 服の布の中間ボーンとか
● 目立ちにくいLOD距離
を考慮する必要がある
- 75. Skeletal Mesh - 参考
参考
● FBX スケルタルメッシュ パイプライン - スケルタルメッシュ
のLOD
○ http://api.unrealengine.com/latest/JPN/Engine/Content/FBX/SkeletalMesh
es/index.html#スケルタルメッシュのLOD
○ https://docs.unrealengine.com/en-US/Engine/Content/FBX/SkeletalMeshe
s#skeletalmeshlods
- 76. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 85. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 98. Cascade - 参考
参考
● パーティクル システムの詳細度 (LOD)
○ http://api.unrealengine.com/JPN/Engine/Rendering/ParticleSystems/L
ODs/
○ https://docs.unrealengine.com/en-us/Engine/Rendering/ParticleSystem
s/LODs
● パーティクルのLODについて - ゲームエフェクトデザイ
ナーのブログ (新)
○ http://effect.hatenablog.com/entry/2016/07/31/021349
- 99. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 104. HLOD - グループ設定
「ワールドセッティング」の
「Only Generate Clusters for Volumes」が
OFFだと、
Levelに配置されたスタティックメッシュから
自動でグループが生成される
● ONにすると、後述の
「階層LODボリューム」でのみ
グループされる
○ →意図しないHLODが作られない
- 113. HLOD - グループ設定
● Scene Actor Name
○ LOD名。開くとシーンのどのメッシュがマージされているかを
確認できる
● 元の三角ポリゴン数
● Reduced Triangle
○ リダクション後のポリゴン数
● % Retained
○ 元のポリゴン数の何%になったか
- 116. HLOD - 参考
参考
● Hierarchical Level of Detail
○ http://api.unrealengine.com/JPN/Engine/HLOD
○ https://docs.unrealengine.com/en-us/Engine/HLOD
● Proxy Geometry Tool
○ https://docs.unrealengine.com/en-us/Engine/Proxy-Geometry-Tool
- 117. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに
- 148. Impostor - ImpostorBaker - メッシュ変え
[ImposterCaptureSwitch]ノードを作成。
先ほど繋ぎ変えた[MakeMaterialAttributes]から入力し、
最終出力に流す。
マテリアルはこれでOK
- 156. Impostor - ImpostorBaker - オプション - Impostor Type
● Full Sphere View
○ ※出力したマテリアルインスタンスを開き、
「Full Sphere_3」にチェックを入れると正常に表示されるよう
になる
- 157. Impostor - ImpostorBaker - オプション - Impostor Type
Impostor Type
● Upper Hemisphere Only
○ 水平より上側だけ生成
○ 下から見上げられる事が無ければおおよそコレ
○ 見上げると破綻する
○ その分、上側の枚数が
多いのでキレイ
- 158. Impostor - ImpostorBaker - オプション - Impostor Type
Impostor Type
● Traditional Billboards
○ 水平だけ生成
○ 円柱状なら使える……?(スミマセン、どう使うか余りイメージ出来ません)
○ 何か傘みたいなの何……?
- 159. Impostor - ImpostorBaker - オプション - 撮影枚数
撮影枚数
● Frames XYで縦横何枚撮影するか指定できる
○ 減らすと枚数が少なくなるので、斜めから見るとゴーストっぽく
見えるようになってしまう
○ 上げると見た目の解像度が低くなってしまう
- 162. Impostor - ImpostorBaker - オプション - レンダリング解像度
レンダリング解像度
● Scene Capture Resolution
● 細いメッシュとかは上げると
きちんとレンダリングされる
● 上げると生成に時間かかる様に
- 169. Impostor - 参考
参考
● 3D Imposter スプライトをレンダリングする
○ http://api.unrealengine.com/JPN/Engine/Content/Tools/RenderToTextu
reTools/3/
○ https://docs.unrealengine.com/en-US/Engine/Content/Tools/RenderTo
TextureTools/3
● Imposterを使ってみる(多視点対応のビルボード) -
historia
○ http://historia.co.jp/archives/3215/
- 170. もくじ
● What’s LOD?
● LODを使うにあたって諸注意
● Static Mesh
● Skeletal Mesh
● Animation
● Cascade
● HLOD
● Impostor
● さいごに