執筆バージョン: Unreal Engine 5.1
|
こんにちは!
今回はスケルタルメッシュのLOD設定を紹介したいと思います。
LOD(Level Of Detail)とは細かさの度合いを指し、カメラから遠ざかるにつれてポリゴンとテクスチャを単純化することで、データ量を減らし、ゲーム実行時の負荷を軽減する技術のことです。
そしてUnreal EngineにはLODを簡単に作成する仕組みが入っています。早速やってみたいと思います。
マニーのスケルタルメッシュを開き、Asset DetailsタブのLOD Settings/Number of LODsでLODの数を指定、直下のApply Changesを押すことでLODが作られます。(LOD0が元々のメッシュとなります。そのためApply Changesの数値は必ず1以上となります。)
※1…マニーはすでにLODが設定(Defaut=4)されているため、一旦Number of LODs=1としてから作業しています。

試しに6つ作ってみました。
|
LOD0 |
LOD1 |
LOD2 |
|
 |
 |
 |
ポリゴン数 |
92178 |
23044 |
11522 |
ポリゴン比率 |
1 |
1/4 |
1/8 |
|
LOD3 |
LOD4 |
LOD5 |
|
 |
 |
 |
ポリゴン数 |
5530 |
2764 |
1382 |
ポリゴン比率 |
1/16 |
1/32 |
1/64 |
Regenerateした時点では以下のように元モデル(LOD0)に対しLOD1を1/4、LOD2以降を1/2ずつになるように生成されます。マニーはポリゴン数が多いため、ややわかりにくいかもしれませんが、LOD5にいくにつれてポリゴンが粗くなっていくことがわかります。
またLOD Auto(defaultで設定されています)にしておくことで、スタティックメッシュのウィンドウ内での画面の占有率でLODを自動で変更してくれますが、下図のようにviewport真ん中上部タブを変えると対象のLODを現時点の距離に関係なく確認ができます。

■LODを個別に設定する
個別に値を設定する場合にはLOD Picker/customにチェックを入れることで、個別の値を編集できるようになります。主によく使うのは以下のパラメータです。どちらも左上に数値が出ているので確認しながら作業ができます。
Parameter |
内容 |
Screen Size
|
画面に表示された時のスケルタルメッシュのサイズ比です。
fでスケルタルメッシュを1.0としています。LODの切り替わるScreen Sizeを示します。
|
Termination Criterion
|
LODの容量減らす際の基準です。Triangles、Max Triangles等が選べます。
|
Percent of Triangles
|
LOD0を1とした時の△ポリゴンのパーセンテージを指定できます。
Termination Criterion:Trianglesの時に有効になります。
|
Max Triangles Count
|
最大△ポリゴン数を指定できます。
Termination Criterion:Max Trianglesの時に有効になります。
|
試しにLODを3つで設定したものを作成してみました。
LODを再生成する場合にはReduction Settings/Base LOD/Regenerate LODを行う必要があります。

確認しやすくするため、わざとかなり手前で変化するようにしてます。
LOD1 Screen Size:0.9, Percent of Triangles:0.25
LOD2 Screen Size:0.8, Percent of Triangles:0.01
値を設定して滑らかにすると以下のようになります。
LOD1 Screen Size:0.5, Percent of Triangles:0.25
LOD2 Screen Size:0.2, Percent of Triangles:0.01
■共通のLOD設定を適用する
LOD Settings/LODSettingsよりDataAssetを指定することができます。
別々のスケルタルメッシュ間でもそうすることで共通のLOD設定を指定することができます。
なにもない時は青枠内下部の[Generate Asset…]よりデータシートを作成することができます。

このようにLODの設定をすることで、表示する負荷を減らすことができます。
コマンド「Stat Unit」を入力すると以下の値が確認できます。
現在時点ですと影響が少ないためほとんど変化が見られませんが、レベル上によりたくさんのActorが配置され
重たくなると処理にかかる時間が増大し、負荷がかかっていることが確認できるようになります。

その他LOD毎に削除する骨を指定できたり(LOD Info/Bones to Remove)、骨の最大影響数(Max Bones Influence)を減らしたり、骨を指定することでそのメッシュ形状を優先的に維持する(LOD Info/Bones to Prioritize)ことも可能です。
わかりづらいですが、LODが切り替わっていることが確認できます。
必要に応じてスケルタルメッシュのLODを設定してみましょう!