この記事のタイトルは少し正確じゃなくて、正確に言うと、縦横のドット数が2のべき乗でない画像の読み込みに関して。ちょいややこしいので記事にまとめる。
SubstancePlayerやSubstanceDesignerの入力として画像を読み込む際に、正方形じゃない画像を読み込むとどうなるか。どう調整できるか。
SubstanceDesignerでの編集画像サイズ
SubstanceDesignerはテクスチャを作るソフトなので、編集中の画像サイズは 1024×1024のように、縦および横のドット数が 1,2,4,8、16,32,64,128,256,512,1024,2048,4096,8192、のどれかでなくてはならない。正方形でなくても 1024×64 など縦横ともに2のべき乗サイズであれば扱える。しかしノードグラフに入力する画像は任意のサイズを与えることができる。
試しに以下の画像(800×533)をSubstancePlayerとSubstanceDesignerに読み込んでみる。

SubstancePlayerの場合


↑ 目立たずわかりづらいが、読み込んだ画像を調整するためのUIが存在する。


↑ 左側がデフォルト状態で、アスペクト比を無視(正方形に画像が引き伸ばされる)、右がアスペクト比を維持(拡大・縮小はするが縦横比率は維持)に切り替えたもの。


↑ 左はリスケールなし(画像そのままのサイズ)で余白が多く出たり。画像がはみ出たりする。アスペクト比を維持とリスケールなしでは、余白を指定カラーで埋めるか、モザイク(画像をリピート)の設定にすることができる。


↑ 切り抜きという名前で画像をクリッピングする設定にもできる。右側下側に数値を入れたのが左の画像で、これはよく理解できるのだが、上側左側に数値を入れると右の画像のようになる。確かに指定したドット数だけ黒くカットされているが、これはその分左や上に位置を詰めるのが正しいのではないだろうか。。
SubstanceDesignerの場合


デフォルトで正方形に引き伸ばされる、その際のピクセル補完方法が選べるようだ。
そして、
あとは何もできない…!?
自分でノード組んでなんとかしなさいって感じだろうか。しかし位置の移動や切り抜きはなんとかなるとして、一度拡大縮小したものを元に戻しても画像が劣化してしまうと思うのだが。
まとめ
SubstancePlayerは多少入力画像を調整することができる。しかし全体的にUIが使いづらい。)SubstanceDesignerはもっとがんばれ。
そもそもSubstanceDesignerを普通の画像編集ソフトとして使っている人などあまりいないのだろうが、さすがに現在の仕様はあんまりなので、何とかする仕組みをpythonで用意しようと思っている。
→ まず後処理を作った。以下記事で解説。
→前処理も作った。以下記事で解説。
関連記事(手動リンク)
なお、画像サイズを16×16以下にすると動作が遅くなるかもという話についての検証記事を以前書いた。


