この記事で分かること
- ORMとは何か
- パッキングテクスチャとは何か
- なぜMasks(no sRGB)なのか
Substance PainterなどからORMテクスチャを書き出すと、
Unreal EngineではCompression Settingsを
Masks (no sRGB)
に変更することが推奨されています。
しかし、
なぜMaskにする必要があるのか?
その理由を順に解説します。
1.ORMテクスチャとは?
ORMとは、
R = Ambient Occlusion (アンビエント オクルージョン 略してAO)
G = Roughness (ラフネス)
B = Metallic (メタリック)
をRGBへ格納したテクスチャです。
簡単に言うと
3種類のテクスチャを合体して1枚にしたもの。
ただし
RGB画像に見えますが
これは「色」を保存している画像ではありません。
2.なぜ1枚にまとめるの?
→軽いから
GPUは
テクスチャ3枚を読み込むより
テクスチャ1枚を読み込む方が高速で
さらに
メモリ消費も減ります。
なので
ゲームや映像を軽くするために
3種類のテクスチャを
1つのテクスチャにまとめています。
そして、
この1つにまとめたテクスチャのことを
「パッキングテクスチャ」と呼びます。
3.なぜMask設定にするの?
- AO (Ambient Occlusion)
- Roughness
- Metallic
は全部グレースケールのデータです。
グレースケールとは
黒を0とし、白を1とした0~1の値を表すただの白黒画像です。
AO・Roughness・Metallic
これらのテクスチャは
明るさだけが重要で、色を表すものではありません。
そのため、Color Textureとして扱う必要がありません。
4.sRGBを切る理由
例えば
0.5
というラフネス値。
Unreal Engineは
「これは色ですね」
と思ってガンマ補正をかけます。
すると
0.5
↓
約0.22
のように値が変わります。
つまり
テクスチャ作成者が設計したラフネスでなくなります。
だから
カラーではない、データテクスチャは
sRGB OFF
が必要になります。
5.Compression SettingsがMaskなのは?
"これは色ではなくデータですよ" とUEに伝えるためのプリセット
という意味合いが強いです。
Compression Settings を Masks(no sRGB) にすると
- sRGB OFF
- データ向け圧縮
- チャンネルの値をできるだけ維持
これらをまとめて設定してくれます。
なので
ORMとの相性が非常に良いです。
6.変更しないとどうなる?
例えば
- Roughnessがおかしい
- 思ったより光沢感がない
- 金属感が変
- 見た目がテクスチャを作ったツールでの見え方とだいぶ違う
こういう原因になります。
7.なぜNormalはNormalで、ORMはMasksで、Base ColorはDefaultなのか
「テクスチャは見た目が画像でも、中身は用途によって扱いが異なる」
Base Color(Albedo)は
写真のような「見た目」の画像ですが、
ORMテクスチャは設計図や地図のような「情報」を記録した画像です。
簡単に言うと
QRコードのようなものです。
QRコードを絵だと思う人はいません。
絵(図)に意味を持たせて別の用途で使うのがQRコードです。
つまり
パッキングテクスチャは
カラー画像のように見える情報です。
テクスチャには見た目を表すものと、データを表すものがある
Compression Settingsは
「画像の見た目」で選ぶものではなく、「GPUにどんなデータを渡したいか」で選ぶものです。
- Base Color → 色
- Normal → ベクトル
- Roughness → グレースケールデータ
- ORM → RGBに詰め込まれたデータ
のようにそれぞれのテクスチャはデータの種類が違います。
そして
これらのCompression Settingsを用途に合わせて設定するなら
- Base Color → Default
- Normal → Normalmap
- Roughness → Grayscale
- ORM → Masks(no sRGB)
のように設定します。
※パッキングテクスチャではないRoughness等の1チャンネルしか必要としないテクスチャに対して、RGBテクスチャを使うのはオーバースペックな場合があります。そのため、Grayscaleでの設定で十分なケースが多いです。
コンピュータにとってテクスチャは「絵」ではありません。
GPUが読むためのデータの入れ物です。
たまたま人間にも画像として見えているだけなのです。
まとめ
- ORMは色ではなくデータ
- RGBへ情報を保存している
- sRGBは不要
- Masks(no sRGB)が最適
さいごに
毎回ORMをインポートするたびにCompression Settingsを変更するのは少し手間です。
そこで、ORMテクスチャを自動で Masks (no sRGB) に設定するプラグインを作成し、Fabで無料公開しています。
「設定を忘れがち」「大量のテクスチャを扱う」という方は、よければ活用してみてください。
■プラグイン 使い方
■fab 製品ページ