IBL用の画像は何形式が良いのか

3DCG

概要

IBLを設定することで手軽にライティングできるのですが、ダウンロード元のサイトによってファイル形式が異なるのと、レンダリングの結果に違和感があったりします。画像はいずれも直射日光を浴びていますが、EXR形式は影が地面に落ちていますがHDR形式ははっきりしませんね。しかも画像の明るさ設定であるStrengthの値も結構上げているのにです。

色についても問題があって、EXR形式では撮影された環境によって赤焼けだったり青白かったりしますが、HDR形式では常に青白い色がかぶってしまいます。これはBlenderでもUnityでも同じなので、画像の問題ということで間違いないようです。

また、試しに自作したIBL画像(8bit / JPEG)だと、色に関して青白さはありませんが、影は全く落ちませんでした。あと、かなり暗いです。

普通に考えてファイル形式によって問題が発生するとは思えないのですが、念のためファイル形式について調べてみることにします。

HDR形式

HDR形式の情報

Radianceというソフト用に開発された形式で、通常のRGB(各8bit)に共有指数(8bit / a one byte shared exponent)を加えた32bitで表現。

OpenEXRの指数部が5ビットであるのに対して,RGBEでは1バイトを割当てているため,表現可能なダイナミックレンジは高く,常用対数単位で76倍程度である.これに対して,仮数部が1バイトであるためOpenEXRに比べて量子化誤差が大きく,約1%の相対誤差となる.

https://www.jstage.jst.go.jp/article/itej/64/3/64_3_299/_pdf

この引用はEXRが16bitの形式について述べている。

EXR形式

EXR形式の情報

Industrial Light & Magic社が開発した形式で 、複数の色深度や圧縮形式などに対応している。RGB各16bit浮動小数点 (ハーフ)で48bit、RGB各32bit浮動小数点または符号なし整数で96bitの表現となる。

符号部,指数部,仮数部に分かれており,それぞれ1ビット,5ビット,10ビットが割当てられている(図7(a)).これにより相対誤差を0.1%以下に抑えることができる.このフォーマットでは常用対数単位で10.7倍のダイナミックレンジをもつ.

https://www.jstage.jst.go.jp/article/itej/64/3/64_3_299/_pdf

この引用も同じく16bit形式について述べられている。32bitについては次の通り。

単精度のFP32は符号部1ビット、指数部8ビット、仮数部23ビットで成り立つ浮動小数点フォーマットなので、表現範囲は(2の23乗)×(2の256乗)=9.7×10^83であり、ダイナミックレンジは830dBと、こちらは逆にオーバースペック過ぎる。

https://news.mynavi.jp/article/graphics-42/

3Dゲームのようなリアルタイム向けだと、GPUの性能的にαRGB各16bitの64bitが標準らしい。16bitの場合のダイナミックレンジは120dBとの事で、これは人間が知覚できる最大のダイナミックレンジに相当する。

結局どちらがいいのか

ファイル形式を比較する限り、特に優劣がある様には思えなかった。ただし、画像を制作する際の合成作業や撮影そのものに不備があればどんな形式であっても問題が発生するはずだ。私の自作JPEG含め、検証に利用したHDR形式の画像には問題があったと思う。試しに、EXR形式からHDR形式に変換、その逆の変換も試したが、変換前後で結果は変わらなかったので制作時の問題で間違いない。

なお、HDRの1985年に対しOpenEXRは2003年に公開された規格で、EXR形式の方がCG業界にも浸透しているようだ。入手できる画像も高品質なものが多い可能性があるので、基本的にはEXR形式を採用したい。もちろん、同じ作者が両方の形式で配布しているのであればどちらを使っても問題ない。

コメント

タイトルとURLをコピーしました