jaijai’s blog

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

【CSL2】公式Wiki 作成ガイドを読む(1)

CSL2からはParadox Wikiにアセットクリエイター向けの情報が掲載されます。

Paradox Wiki Asset Creation Guide

この記事シリーズはそれを読んで自分なりに解釈したところや疑問点などをだらだらと記載していきます。Wikiは随時更新されているのでこの記事の情報が古くなっている可能性があります。適時ソースを確認してください。

基本

CSL2では物理ベースレンダリング(PBR)になりました。このことからCSL1からコンバートする場合テクスチャ類はそのまま使うことはまず不可能だと思ったほうがいいでしょう。

テクスチャセットとファイル群は次のようになります。

テクスチャセット ファイル名 チャンネル 機能
BaseColor MyAsset_BaseColor.png RGBA ディフューズ
ControlMask MyAsset_ControlMask.png RGBA カラーバリエーション
MaskMap MyAsset_MaskMap.png RGBA マテリアルマスク
Normal MyAsset_Normal.png RGB ノーマル
Emissive MyAsset_Emissive.png Greyscale エミッション

概ね名前から想像できる機能のテクスチャ群ですが新要素としてEmissiveがあります。これは放出または放射を示すもので自己発光表現に使うものだと思われます。

BaseColor

これはPBRにおいてAlbedoに相当するテクスチャでCSL1でいうディフューズマップ_dとほぼ同じ役割だと思われます。ただし色空間は変わっているでしょうから1と描き方は変わってくるでしょう。またRGBAであり透過度が含まれます。CSL1のように_aに分離しなくてよくなりました。

ControlMask

カラーバリエーションです。CSL1と同じ白黒ですがRGBの3チャンネル分あるので3パターンのカラーバリエーションを作成できます。それぞれのチャンネルは相互排他的でなければならないので互いに重なってはいけません。1チャンネルだけが使われる場合やすべてのカラーバリエーションが同時に適用される場合もあると考えておいたほうが良さそうです。

アルファチャンネルでは除雪エリアを指定します。白が雪無しです。

MaskMap

PBRで利用されるパラメータ群です。CSL1でのスペキュラマップはここに含まれます。各チャンネルを組み合わせて質感を表現します。

このテクスチャはRGBAの4チャンネルです。Bチャンネルは未利用なので黒で埋めなければなりません。

  • Metallic (R)
    鏡面反射の強さ、いわゆる金属感を表します。真っ白で完全なメタリック。真っ黒で非金属です。

  • Coat (G)
    これが何を指しているのかよくわかりません。標準の光沢に加えて追加の輝きを加えるようです(拡散反射?)。白にするほど効果が強くなります。

  • Glossiness (A)
    表面の滑らか(ツルツル)さ。ザラザラの反対です。白にするほどなめらかになります。

Normal

ノーマルマップです。CSL1では2軸(2チャンネル)しか使われませんでしたがRGBなので3軸使われるのかもしれません。

Emissive

発光マップです。Unityでいうところのエミッション効果のことだと思われます。ネオン看板などで利用するのではないでしょうか。

自己発光するロゴ
ライトを設置せずとも周囲にまで光が漏れるのかはわかりません。

一般的な注意事項

  • CSL1では区別されなかったファイル名の大文字小文字は区別されるようになります。これはやらかしそうです。
  • メッシュの三角数には明確なガイドラインがあるわけではないのでバニラアセットの状況を確認する必要があります。またハード性能に制約があるコンシューマユーザのことも考慮する必要がありそうです。
  • FBXファイルはバージョン2018が要求されます。Blenderが標準で吐くちょっと古いバージョンが読み込めない場合は有料プラグインが必要になるかもしれません。
  • テクスチャはアスペクト比1:1(正方形)でなければなりません。もしかすると2048x1024などインポートできるかもしれませんが明示されている以上不具合の温床になりかねないので避けるべきでしょう。
  • 仮想テクスチャリングを機能させるには最小512x512のサイズが必要です。
  • 推奨テクスチャサイズはアセットタイプによって変化します。建物では4096x4096または2048x2048が示されています。
  • メッシュに名前付きマテリアルを指定しなければならない、または指定してはならない場合がある。この辺はアセットタイプによって変わるようです。