SubstanceDesigner2024 14.1.2build - Steam edition
はじめに
SubstanceDesignerでテクスチャを書き出す際「どの設定が良いのか」「どうやって書き出すのか」等、あまりまとめられた記事がなかったのでゲーム目線でまとめてみました。
主に
・色深度
・拡張子
についてオススメの設定や書き出し方を記載しています。
色深度
色深度とは色の滑らかさ(階調)を表す値で、bit(ビット)で表されます。
8bitは256段階、16bitは65,536段階の色を表現できます。
| ビットの深さ | 扱い |
|---|---|
| 8bit | 8bitのグレースケールテクスチャ |
| 16bit | 16bitのグレースケールテクスチャ |
| 24bit | 8bitのRGBテクスチャ |
| 32bit | 8bitのRGBAテクスチャ |
| 64bit | 16bitのRGBAテクスチャ |
そしてゲームにおいては、8bitが最適です。
その理由として、16bitのテクスチャをUnrealEngineにインポートすると色味が変わってしまうからです。(Unityは16bitでも問題なさそう)

ただし、8bitでもsRGBのチェックを外すと16bitテクスチャのような見た目になってしまいます。そのため、テクスチャとして使用する際はsRGBのチェックを入れた方がよさそうです。

sRGBについて
sRGBとは、人間の目が感じる明るさに合わせて色を補正(ガンマ補正) するための色空間(カラースペース)です。
なぜこのカラースペースが必要なのかというと、
そのままの色の情報を出力(Linear)すると数値上は綺麗なグラデーションがかかっていても、人間の目には綺麗なグラデーションに見えないです。
そのため、人間の見える範囲内で色を調整したものがsRGBというものです。
あと余談ですが、
テクスチャをNormalやMaskとして使う場合は色を「数値」として扱うので、人間の目に合わせて補正されたsRGBじゃなくてそのままの色情報を書き出せるLinerの方が良い結果を得られるかも。
書き出し方法
8bit と 16bit の書き出し方を紹介します。
8bit
8bitで書き出す方法は2つあります。
・ TGAで書き出す
tgaで書き出すと強制的に8bitになります。

この時、OutputノードのフォーマットをDefaultFormatにしておくことで「グレースケールの時は8bit」「RGBのときは24bit」「アルファがあるときは32bit」と、自動で切り替えてくれます。

・ 8bitにしたノードを挟む
levelsノードを挟み、OutputFormatをAbsoluteにする。
※ OutputFormatを変えられるノードならなんでもok

そしてOutputFormatを8bit per Channelに

こちらも同じく、OutputノードのフォーマットをDefaultFormatにしておくことで「グレースケールの時は8bit」「RGBのときは24bit」「アルファがあるときは32bit」と、自動で切り替えてくれます。

ディザノイズについて
"階調不足でグラデーションの境界が見えてしまう現象" を抑える機能を「ディザノイズ」といいます。
そして、8bitで書き出した場合は必ずディザノイズが入ってしまうようで、ディザノイズをなくしたい場合は8bit以上で書き出した方が良さそうです。
詳しくは下記の記事にまとめられています。
16bit
まず、SubstanceGraphのフォーマットを16bitにします。
(何もない所をダブルクリックするとSubstanceGraphのフォーマット設定が出てきます)

または、新しくSubstanceGraphを作成する際にフォーマットを16bitに設定します。

そして、OutputノードのフォーマットをDefaultFormatにしておくことで「グレースケールの時は16bit」「RGBやアルファがある時は64bit」と、自動で切り替えてくれます。
※ 48bit(RGB)の出力には対応していないようです。

拡張子
ゲームで使われるテクスチャの拡張子は、おそらく下記の4つだと思います。
それぞれの特徴や利点を紹介していきます。
- png
- tiff
- exr
- tga
png
基本的に、エフェクトのテクスチャはpngで問題ない。
色深度を
RGBA8(8bit × 4チャンネル = 合計32bit)
RGBA16(16bit × 4チャンネル = 合計64bit)
まで扱える。
データ容量が軽い。
tiff
よく海外のエフェクトテクスチャに使用されているイメージがある。
tiffはpngと比べて、
・16bitだけでなく32bit Floatに対応している(色の範囲が広い)
・DCCツールとの相性が良い
の利点がある。
ただ、pngと比べて容量が大きく圧縮形式もたくさんあるので管理しにくい。
そのため個人的にはtiffを使うならpngでいいのではないかと思う。それかexr。
exr
よく映像で使われている。
ゲームだとVATを利用するときにexrを使用している。
pngと比べて、
・32bit Floatに対応している
・DepthやNormalなどを1ファイルに保存できる(Multi-Channel EXR)
・HDRに対応している
の利点がある。
pngやtiffより容量が大きい。
tga
昔ながらのテクスチャフォーマット。
データがかなりシンプルで、アルファチャンネルの扱いがとてもわかりやすい。
アルファの扱いについて
引用 - PNG・TGA・アルファの扱い
圧縮されていないので互換性が良く、扱いやすい。しかし容量が大きい。
※ ただTGAはRLE圧縮するとかなり容量が小さくなる
テクスチャをゲームに組み込む時は圧縮され同じBC7データになる(はず)ので、pngやtgaやexrでもゲームの容量は変わらない。
拡張子の変更方法
おわりに
今回ゲーム目線でまとめましたが、このあたりは映像業界の人の方が詳しいと思います。
あと、この記事は前に書いた記事のブラッシュアップ版です。
参考にした記事



