こんにちは。まとんです。
遠景づくりは手順が多くてとっつきにくいものの、一度覚えてしまえば何度でも作り直せるようになります。
とはいえ、そこから先の調整が大変で、どこからどう手を付ければよいか悩む方も多いと思います。
そこで今回は、遠景生成のツールやMODのつながりを分かりやすく整理してみたいと思います。

仕組みが分かっていれば、調整が格段に楽になると思います。
今回は地形編(xLODGen)です。
今回の解説範囲と使用ツール
遠景は大きく地形、草、木や建物オブジェクトの3種類に分かれます。
今回は、地形について解説します。
地形の作成には xLODGen を使用します。

LODレベル
xLODGenでは地形メッシュをLODレベルごとに作成しますので、まずLODレベルについて理解を深めてみたいと思います。

アクティブセルとLOD
スカイリムの地形はプレイヤーがいる場所を中心として、アクティブセル、LOD4、LOD8、LOD16、LOD32の段階で描画されます。
アクティブセルはLODではなくフルモデルが描画される領域です。これはプレイヤーの周囲5×5セル固定です。
さらにその先の領域がLODとなります。
LODの範囲はSkyrimPref.iniのfBlockLevel0Distance、fBlockLevel1Distance、fBlockMaximumDistanceで決まります。
それぞれ、LOD4、LOD8、LOD16の距離を決める設定値です。
ざっくり図にするとこんな感じです。LOD16よりもさらに外側の範囲はLOD32となります。

セルとユニットについて
セルは5×5とか7×7で定義するのに対し、fBlockLevel0Distanceなどの設定はユニット数で定義します。
単位が違うので、混乱しやすいです。
先人の方々の情報によると、セルとユニットは以下の関係のようです。
1セル = 4096ユニット = 約58メートル

つまり遠景とは、プレイヤーの前方100m先からの景色を指すということです。

uLargeRefLODGridSizeについて
SkyrimPref.iniには、もう一つLODと密接に関係する設定値があります。
それが「uLargeRefLODGridSize」です。

SE版で追加された機能のようです。
アクティブセルは固定ですが、この数値を7や9のように大きくすると、その範囲までフルモデルが描画されるようになります。


uLargeRefLODGridSizeは、バニラ環境で遠景を強化する目的で用意された機能です。
この値を変更すると、図の通りLODの範囲に食い込みます。
そのためこの数値を大きくするなら、それを考慮してLODを考えていく必要があります。
uLargeRefLODGridSize のメリット・デメリット
フルモデルの方はメッシュを一切簡略化しないモデルなので、当然遠景モデルよりきれいです。
また、ENBやCommunity Shadersなどのエフェクトの恩恵もフルに受けることができます。

遠景の草は揺れませんが、フルモデルの草は風で揺れます。
そのためuLargeRefLODGridSizeが大きいほど大変きれいで没入感のある景観となりますが、その分パフォーマンスが死にやすいです。
uLargeRefLODGridSizeがパフォーマンスに与える影響を測ってみました。

MODもりもりの環境で、ホワイトランの入り口からツンドラを見渡してみたところです。
地形の明るい部分がフルモデル。暗い部分が遠景です。
uLargeRefLODGridSizeが大きいほど、フルモデルの描画範囲が広がっているのがわかるかと思います。




まとめるとこんな感じです。
| uLargeRefLODGridSize | ドローコール(Grass) | VRAM | FPS |
|---|---|---|---|
| 5 | 938 | 3.91GB | 57 |
| 7 | 1702 | 3.82GB | 46 |
| 9 | 2568 | 4.36GB | 42 |
| 11 | 3670 | 4.22GB | 35 |
uLargeRefLODGridSizeを上げるほど、パフォーマンスが劣化しているのが確認できると思います。
私の環境ではuLargeRefLODGridSize=7からすぐに影響が出ましたが、良いグラボをお持ちであればFPS低下はもっとゆるやかになると思います。

参考までに、私は「玄人志向 RD-RX7600-E8GB」を使っています。
設定の考え方
SkyrimPref.ini
まずSkyrimPref.iniを見直し、フルモデルの描画範囲とLODの描画範囲を正確に決めるのがおすすめです。
まずuLargeRefLODGridSizeでフルモデルの描画範囲を決めましょう。

私の場合は5→7に変更しただけで10FPSも低下するので、5一択です。
続いて、fBlockLevel0Distance、fBlockLevel1Distance、fBlockMaximumDistanceを決めます。
この数値は4096の倍数で設定するとセル境界と一致するので無駄がないです。
4096ユニット = 約58mですので、それをイメージしながら設定しましょう。
私の場合は以下のようにしてみました。
| 項目 | 設定値 | メートル換算 |
|---|---|---|
| fBlockLevel0Distance | 36864 | 約500m |
| fBlockLevel1Distance | 86016 | 約1200m |
| fBlockMaximumDistance | 184320 | 約2600m |

この設定値はDynDOLODのMCMでゲーム内から変更することもできます。
xLODGen
SkyrimPref.iniの設定値が決まったら、xLODGenの設定値を変更していきます。
基本的には近いものは高品質に、遠くにいくほど品質を落として不必要な負荷がかからないよう値を下げていきます。
LOD4
まず基準としてLOD4の設定値を作っていくのがおすすめです。
LOD4はプレイヤーに最も近く、最も目に入りやすい遠景です。
そのため粗いと没入感がそこなわれてしまいますので、精度の高い設定にします。

ここはパフォーマンスよりビジュアル重視。
ただし、uLargeRefLODGridSizeを7以上にした場合はLOD4の開始位置が遠くなるので、少しくらい粗くても気にならないと思います。

フルモデル描画で低下するパフォーマンスを、LOD4を粗くすることで少しだけ相殺させられると思います。
でも完全相殺は厳しいので、過度な期待は禁物です。
LOD8、LOD16
LOD4の半分程度の品質に設定します。
メッシュのQuarityに関しては、LOD16はさらにその半分の品質でも良いと思います。
LOD32
LOD32はちょっと特殊で、遠景だけでなく地図にも使用されます。

メニューのマップから開くアレです。
これの品質を下げてしまうと地図上の海岸線がガタガタになってしまうとのことで、精度は高めに設定します。
ただし Flat World Map Framework (FWMF) など、そもそも3D地図を使わないのであればこの話は関係ありません。
一番遠くに見えるだけの景色として設定しましょう。
Height maps
Community Shadersを使用している方は、ON推奨です。
Terrain Shadowsという機能で利用されます。
Height mapを作っている場合は、Terrain Shadowsの「Debug」→「Has height map」から確認できます。

Optimize Unseenについて
Optimize Unseenは表に見えない部分(地面の下とか)のメッシュを簡略化し、その分表側の見栄えを良くする機能です。
大変素晴らしい機能なのですが、DynDOLODの作者様曰く「スカイリムは古いゲームなので、見判定が正確ではない」とのことです。
そのため、あまり大きな値にすると地形が崩れたり穴が空いたりする原因になってしまうようです。
LOD4はOFF。LOD8、LOD16はOFFかON。LOD32は550以内が推奨とのことです。
明るさ設定について
Community Shardersでは遠景の明るさをゲーム内で調整できるようになっています。
基本的には触らず、ゲーム内で調整するのがおすすめです。

その他の設定について
他の設定はあまり特筆すべきことがありません。
DynDOLODページ の推奨設定に従いましょう。
参考設定
参考になるか分かりませんが、私の設定値を載せておきます。
私は Flat World Map Framework (FWMF) を使っているので、LOD32は単なる遠景としてLOD16のさらに半分の品質で作成しています。
3Dマップを使っている方は、LOD4の設定値と同じで良いと思います。(Optimize Unseenは550のままでOK)




次回は草キャッシュについて解説します。


コメント