jaijai’s blog

Cities Skylinesアセット作成に関するメモ・考察

安全なテクスチャ解像度

アセット制作において使用できるテクスチャ解像度は32の倍数であれば基本的に問題ありません。

しかしながら、解像度によってはミップマップがおかしくなる問題があり。この記事ではその概要と回避策を示します。

ミップマップとは

ミップマップは複数の低解像度テクスチャから構成されます。異方性フィルタリングなどでこのミップマップは利用されパフォーマンスとクオリティ両面で活用されます。現在ではほとんどのゲームで使われている技術の1つです。

Wikiより。ミップマップの例。
Wikiより。異方性フィルタリングの効果。

CSLではアセットエディタでのインポート時に各種テクスチャのミップマップも自動的に生成されるのでその存在を意識することはほとんどありません。

おかしくなったミップマップ

この福通コンテナは全面緑色ですが遠景の赤丸で囲ったところが黄色く変色しています。

これは異方性フィルタリングにより不正なミップマップがブレンドされた結果です。本来なら低解像度テクスチャがブレンドされるだけなのでこのような大幅な色相の変化は起こさないはずです。

Sharp Texturesでバイアスを変更してミップマップを積極的に表示させてみるとこうなります。

変色したり穴が空いています。どうやらあるレベル以下のミップマップがおかしくなっているようです。ミップマップはすべてのテクスチャでそれぞれ生成されています。アルファテクスチャ(ACIMap)が影響を受けると穴が空いてしまいます。

おかしくなると黄色く変色する事例が多く”黄ばみ問題”として認識されている方もいるようです。また、ミップマップに問題があっても何らかのエラーが発生することは無いようです。

他のアセットの例。

原因と対策

インポート時に自動生成されるミップマップに問題があるようです。正常なミップマップに置き換えれば解決するはずですがその手法は現在のところありません。しかしながら、直接的な方法ではありませんが特定のテクスチャ解像度を利用することで回避できることがわかっています。

安全なテクスチャ解像度

使いそうな解像度を手当たり次第調べてみた結果です。○が正常なミップマップが生成される安全なテクスチャ解像度です。

高画質設定にするほどミップマップの利用頻度は低下します。アセットによってはこの問題を抱えていても実際の使用ではほぼ露見しないこともあり、気が付かないレベルであれば対処不要とも言えます。とはいえ異方性フィルタリングでは必ずミップマップは利用される側面もあります。

ちなみに、バニラのアセットで○以外の解像度が使われているのを見たことはありません。