関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2022.09.28UE4UE/ Mesh
執筆バージョン: Unreal Engine 4.27 |
今回はLODグループについて書きたいと思います。
自動LOD作成のための設定のプリセットです。
※自動LODについてはこちらのブログで紹介していますので参考にして下さい。
[UE4]自動LODとプロキシメッシュを使用したリメッシュ
https://historia.co.jp/archives/12346/
主に設定できる項目は
などです。
UE4のデフォルトにLODグループが設定されています。(SmallProp,LargeProp,Foliageなど)
しかし、意図した距離でLODが変わらない場合は新しくLODグループを追加する必要があります。
新たにLODがグループを追加する場合は、DefaultEngine.iniに以下新規のLODグループの情報を追加してください。
フォーマットは以下の例を参考にして下さい。
例
1 2 |
[StaticMeshLODSettings] NEWLODGroup=(NumLODs=4,MaxNumStreamedLODs=0,bSupportLODStreaming=0,LODPercentTriangles=50,MaxDeviation=1,PixelError=10,Name=LOCTEXT("NEWLODGroup","NEWLODGroup")) |
パラメータ名 | |
---|---|
NumLODs | LODの数 |
MaxNumStreamedLODs | ストリーミングするLODの数(ストリーミングメッシュはExperimentalのため、0でOK) |
bSupportLODStreaming | ストリーミングメッシュの有効無効 (ストリーミングメッシュはExperimentalのため、0でOK) |
LightMapResolution | ライトマップの解像度 |
LODPercentTriangles | 自動LODメッシュの三角ポリゴン数計算用 ひとつ前のLODレベルのメッシュからの割合 |
MaxDeviation | AutoComputeLODDistanceで決まる ScreenSize計算用 (1~1000) |
PixelError | AutoComputeLODDistanceで決まる ScreenSize計算用 (1~1000) |
Name | エディタ上での表示名 |
LODの切り替わるタイミングは画面サイズと表示されるBoundsのサイズの割合で決まります。
※距離で設定されていないので注意!!
Details(詳細)パネルの各LODの ScreenSizeの値をもとに切り替わります。
0.5の場合は画面上で50%のサイズ以下になった場合LOD1に切り替わります。
表示しているモデルのScreenSizeはビューワーの左上に表示されているので参考にして下さい。
ScreenSizeはデフォルトではLODグループで設定された値とモデルのサイズを元に計算されます。
※AutoComputeLODDistanceのチェックを外すと独自にカスタマイズできます。
そのため、同じLODグループであるのにモデルのサイズによってScreenSizeの値が変わり、LODの切り替わる距離が異なる現象が発生します。
モデルのサイズによって変わるけど、どうやって値が決まるのか?となるでしょう。
プロジェクトの BaseEngine.ini を見ても情報が無いのでエンジンのソースコードから処理を探しました。
各LODレベルのScreenSizeの値は以下の条件で決まります。
基本的にはPixelErrorを上げれば各LODのScreenSizeが大きくなりやすい傾向があります。 距離が近いときにLODが切り替わりやすくなります。
MaxDeviationはUE4のデフォルトのLODグループも特に指定していないのでデフォルトのままで問題ないかと思います。
ですが、LODレベル1のScreenSizeが0.5や0.75になっている場合は2と4の処理の影響かもしれませんので、この仕様を疑ってみましょう。
以上の設定で、LODグループで一律にLODの切り替わる距離を調整できるようになるかと思います。
描画負荷の軽減やモデルのLOD切り替わる瞬間をパカパカと見えなくするように調整の助けになればと思います。