イメージ(画像)のファイルフォーマットはどれを選択する ?
テクスチャで使用するイメージは、ファイルとして外部から取り込むことになります。
Shade3Dでは、JPEG/PNG/TGA/HDR/EXRなどいくつかのファイルフォーマットに対応しています。
「読み込める画像の種類」もご参照くださいませ。
ここでは、どの場合にどのファイルフォーマットを採用すればよいのか、というのを記載します。
ファイルフォーマット別に確認が必要なことは、以下の2点が考えられそうです。
- ファイルとしてのファイルサイズ
- 画像の品質
双方は相反するものになり、
ファイルサイズを抑えるために「圧縮」が行われます。
このときにオリジナルの画像の品質を下げる場合があります。
また、イメージのフォーマットにより得手不得手があります。
なお、Shade3DにインポートされたイメージはすべてEXR(OpenEXR)形式で格納されます。
OpenEXR形式はPNGやJPEG形式よりもファイルサイズが増えますが、品質の劣化がありません。
写真のようなイメージを扱う場合、JPEGを使用
写真そのもの、写真から加工したテクスチャなどは、JPEGフォーマットを使用するほうが圧縮が効き、ファイルサイズを小さくすることができます。
以下の写真の場合、JPEG形式の場合は80KB、PNG形式の場合は288KBとなりました。
以下の写真を加工したテクスチャイメージの場合、JPEG形式の場合は143KB、PNG形式の場合は553KBとなりました。
JPEGフォーマットは非可逆圧縮となり、画像としては品質が劣化することになります。
なお、Shade3DからイメージとしてJPEG形式のエクスポートを行った場合、圧縮品質は固定になっています。
模様やイラストなどを扱う場合、PNGを使用
模様やイラストなど色の境界がはっきりした画像の場合、PNGで保存することで品質の劣化もなく、ファイルサイズも小さくなります。
以下のチェック模様のテクスチャイメージの場合、JPEG形式の場合は36KB、PNG形式の場合は7KBとなりました。
以下のテクスチャイメージの場合、JPEG形式の場合は64KB、PNG形式の場合は15KBとなりました。
PNGフォーマットは可逆圧縮となり、画像としての劣化はありません。
その代わり、写真のようなイメージを保存するとファイルサイズが増えることになります。
なお、作業画面のキャプチャを取る際に画像を縮小加工した場合、
このときはJPEG形式のほうが圧縮率がよくなります。
以下のイメージの場合(画像として縮小しました)、JPEG形式の場合は122KB、PNG形式の場合は226KBとなりました。
不透明度を持つイメージを扱う場合、PNGを使用
テクスチャイメージとしてアルファチャンネルで不透明度を指定している場合、
この場合はPNG画像を使用します。
以下は、葉の写真の周囲をトリミングしたものをキャプチャしたものです。
チェック模様の箇所が透過しているピクセルです。
なお、JPEG形式はアルファチャンネルを持ちません。
階調が細かいイメージを扱う場合、EXRを使用
PNGやJPEG形式はR/G/B/Aごとに256階調の表現になります。
レンダリング画像のデプス値(Z値)を保存する場合、256階調では足りません。
この場合はEXR形式を使用します。
下の画像は視認しやすいようにレンダリング画像のデプス値の手前から一番奥までを0.0-1.0になるように加工し、
JPEG形式で保存したものになります。
実データとして扱う場合は小数点を含む実数値として扱う必要があります。
なお、ダイナミックレンジ情報を持つHDRIは、HDR形式とEXR形式の2つが存在します。
階調の精度は、HDR形式よりもEXR形式のほうが高いです。
そのため、ファイルサイズを小さくする必要がある場合以外は、一般的にはEXR形式を使用することになります。
EXRフォーマットは可逆圧縮となり、画像としての劣化はありません。
輝度値として1.0を超えるイメージを扱う場合、EXRを使用
背景として使用するパノラマ画像のようなダイナミックレンジ情報を持つHDRIの場合、EXRを使用します。
この場合は、画像自身が光源として使用される(IBL)ことになります。