今回作成したmodは複数のlodファイルも作ってみました。
lodは距離に応じて表示するkn5を使い分ける機能です。
遠くにいるのに、高精細(大容量)なデータを表示し続けると、台数が増えたときにゲームのパフォーマンスが超絶厳しくなっちゃいますよね。
だから、車が近くにいるときは高精細なkn5、距離が遠くなるにつれて、だんだん荒い(軽量)なkn5を用意します。遠くにいる車はちっちゃいから、粗々でもわからないってことですね。
作成しているcar modのフォルダのdataフォルダ内にあるlods.iniを編集します。
[LOD_0]
FILE=serena.kn5
IN=0
OUT=20[LOD_1]
FILE=serena_lod_b.kn5
IN=20
OUT=55[LOD_2]
FILE=serena_lod_c.kn5
IN=55
OUT=201[LOD_3]
FILE=serena_lod_d.kn5
IN=201
OUT=2000
LOD_0からLOD_3まで、4種類設定しています。
車との距離がIN/OUTの間にある時、それに対応するkn5が表示されます。
LOD_0のkn5はもともと作成しているものですね。
次はLOD_1以降の作り方です。
実は今のバージョンのContent Managerに、LOD4種作成する機能が標準でついています。(Simplygonのインストールが必要です。)
本来ならこれで作るのが楽ちんですが、私が今回作ったcar modではうまくコンバートできませんでした。(Simplygonのバージョンが変わっているせいかもしれない・・・)
なので、別の方法を。
サイズの小さいkn5ファイルを作るためにやるべきことは2つ。
A)頂点の数を減らす。
B)テクスチャの画像を圧縮(縮小)する。
です。
あと、遠くになったら、見えなくてもよいオブジェクトを削除していくというのも良い方法だと思いますが、まずは楽な方法から試します。
A)頂点の数を減らす。
Blenderで紹介します。
具体的なやり方はこちらを参照しました。
簡単にまとめると、「全オブジェクトを選択→編集モードに切り替え→全頂点を選択→マージ機能(距離で設定)で頂点の数を減らしていく」です。
ちなみに現在の頂点や三角面の数の確認方法は、Blenderのウィンドウメニューから「ステータスバーを表示」にチェックをつけて、ウィンドウ下にステータスバーを表示したのち、ステータスバー上で右クリックして「シーン統計」のチェックをつけると、ステータスバーの右下に情報が表示されます。
マージ機能の距離を調整することで、三角面の数が変動します。
上記ページではlod用fbxでは、この三角面の数が30~35000になるように作るとあります。(lod_B用が35000で、lod_D用が30かな?)
ですが、私はあまりこれにこだわらず、調整しては見た目を試す。をやってみました。
マージの距離を3種類設定することで、lod_B、lod_C、lod_D用のfbxを作成します。
B)テクスチャの画像を圧縮する。
最初からサイズが小さい(128x128とか)画像はよいのですが、細かい描写をしているテクスチャはサイズが大きいです。(4096x4096とか)
lod_B~lod_Dではまず車内の景色が映ることはありませんので、車内用のテクスチャは小さくします。(10%にリサイズとか、128x128にリサイズとか)
車外のテクスチャはlod_Bくらいまでは何となく見た目が判別できますので、ボディテクスチャやナンバープレートなど細かく作りこんでいるテクスチャがある場合は、50%位に圧縮、単色ボディみたいな場合は、ぎゅっと小さくしちゃいます。
車外のテクスチャでもlod_C,lod_D用はほぼ判別できませんので、すべてのテクスチャをぎゅっと小さくしてOKです。
で、もともと作成したkn5以外に、上記のAとBで作ったデータを使い、lod_B,lod_C,lod_D用にそれぞれ3つのkn5をksEditorで作成します。
2023.11.11 追記)
lod_B~lod_Dではテクスチャが不要なので、kseditorのエクスポート時にCar (No Textures)を選択してkn5ファイルを出力します。
(shin956さんありがとうございます!)
参考までに今回作ったkn5はこんな感じになります。
lod_A(もともと作成したもの)0~20m用 65.8MB
lod_B(ちょっと荒い)20~55m用 4.7MB
lod_C(さらに荒い)55~201m用 1.3MB
lod_D(一番荒い) 201m~2000m用 354KB
これを、car modフォルダにまとめて格納すれば、完成です。