Substance Painter のテクスチャを1枚にまとめるツールを作りました
Substance 3D Painter は、テクスチャセット(マテリアル)ごとに画像を分けて書き出します。ひとつのモデルにテクスチャセットが4つあれば、Base Color だけで4枚。Roughness と Normal も合わせると12枚。これを1枚にまとめる作業が毎回発生していました。
Photoshop でやると手間がかかるうえ、レイヤーを重ねる順番を間違えると気づかないまま実データが消えます。そこでブラウザだけで統合できるツールを作りました。
画像はサーバーに送信されません。読み込みも合成も書き出しも、すべてブラウザの中で完結します。通信を切った状態でも動きます。
使い方
- Painter から書き出した画像を、ツールにドラッグ&ドロップします。フォルダごと入れても構いません。
- ファイル名からオブジェクト名とマップ種別が自動で判定され、種別ごとにグループへまとまります。
- 左のグループを選び、右側で背景色やパディングを確認します。
- 「このグループを合成」で確認するか、「すべて合成して書き出し」で一気に PNG を書き出します。
Painter 側のパディングは 0 にしてください
ここが一番大事なところです。
書き出し設定の Dilation は「なし」に
実際に測ってみると、16px で 143 セル、8px で 58 セルが汚染されました。0px なら汚染はゼロです。
このツールのパディングは合成が終わってからかかります。どのオブジェクトも塗っていない場所にしか書かないので、値を大きくしても実データは壊れません。この非対称性が、わざわざツールを作った理由のひとつです。
パディングの2方式
| 拡散(既定) | どの島からも距離に応じて色が回り込みます。筋が出ません。Painter の Diffusion に近い挙動です。迷ったらこちら。 |
| 拡張 | 外周を1段ずつ、隣の確定した色の平均で外へ押し出します。境界は正確ですが、島から離れるほど、くさび状の継ぎ目や筋が残ります。 |
判定できるマップ種別
ファイル名の末尾から判定します。オブジェクト名に日本語が入っていても構いません。
| Base Color | basecolor / basecolour / albedo / diffuse / basecol |
| Roughness | roughness / rough / rgh |
| Metallic | metallic / metalness / metal / mtl |
| Emission | emission / emissive / emit / glow |
| Normal | normal / nrm / norm / n |
| Alpha | alpha / opacity / opac / transparency |
| Displacement | displacement / disp / height / hgt |
| AO | ao / ambientocclusion / occlusion / ambient |
マップ名の付いていないファイルは、同じ名前のオブジェクトが他にある場合に限り Base Color と推定し、それ以外は「未分類」に残します。勝手に決めつけて静かに混ぜないための作りです。
仕様として決めていること
色を変えない
読み込みから書き出しまで色空間の変換を行いません。単色の PNG を通しても RGB の値は 1 も変わりません。
16bit は 16bit のまま
16bit の画像は Canvas を通さない経路で読み書きするため、16bit のまま統合して書き出せます。Canvas は 8bit までしか扱えないので、そこを通すと静かに劣化します。
解像度が違うものは混ぜない
自動で拡大・縮小すると、気づかないまま画質が変わります。解像度が揃っていないグループはエラーで停止します。書き出し設定を揃えてから読み込んでください。
ZIP でまとめず、PNG を1枚ずつ出す
一度 ZIP 出力を作ったのですが、Windows が展開時に「問題を引き起こす可能性のあるファイルが見つかりました」として中身をまとめてブロックすることがあったため、外しました。PNG 単体なら問題なく開けます。
よくある質問
アルファが入っていない画像しかありません
アルファが実質的に無効な画像を検出すると、グループ内の画像の外周から未ベイクの色を推定して、色をキーにした合成へ自動で切り替えます。切り替えたときは必ず通知が出ます。黙って全面を上書きするのが一番まずいので、そこは必ず知らせるようにしています。
スマートフォンでも使えますか
横幅を必要とする3ペイン構成のため、パソコンでの利用を想定しています。狭い画面では横にスクロールしてください。
ファイルはアップロードされますか
されません。処理はすべてブラウザの中で完結しており、画像がサーバーに送られることはありません。