色空間
そもそも色空間という言葉が指す領域は曖昧が、
人間の視覚認知仕様にあわせて、物理量的なあらわれを、見えやすい色情報に変換するというような概念。だが、これがAOVのコンポジットのときや、映像書き出しの際や、ディスプレイを発色させる際、いろんなところに細々と現れる。
ただしく理解して運用しないと、なぜだか知らんが品質が微妙…というような残念な印象になる。
OCIO
OpenColorIO
色空間に統一的な仕様を与える。特にEXRのようにデータ量が8bitにクリップされないもの
また、主に色出力(ディスプレイやプロジェクタ)を想定したbit変換時にも色変換のルールを明確にする
Houdiniでは…
https://scrapbox.io/files/6a02c9255c3c134ed430f818.png
出力のファイル形式ごとに辞書登録されている (OCIO準拠)
EXRで出した場合は、Scene Linear(物理量をそのまま保持した値)
デフォルトでは、EXRは Linear Rec.709 (sRGB)
なんだこれ?リニアなのsRGBなの?
Linear = 輝度値の扱いがリニア
Rec.709 = 色の三原色、つまり色域
(sRGB) = Rec.709とほぼ同じRGB primariesを使う、という補足
この出力時の仕様もKarma Render Settingsで調整できる、はず
ディスプレイの色変換
RGBの値に対して直接比例(リニア)な電圧をおくるのではなく通常、Gamma=2.2で送られ、暗い部分の色域がひろがるようになっている
色空間とは主に出力を想定した色の変換方式で浮動小数のLinearをどのように8bit内に補正しておくか(h.264など基本は8bit)
つまり、映像としてフォーマットする場合の変換式をあらわす場面も多い
sRGB
線形ではなく、だいたい0.0-1.0を2.2乗で変化(Gamma2.2)2.4なども存在。
Rec.709
Filmic
Blenderなどで採用
高輝度、ハイライトの色潰れから保護
Scene Linear
「リニア・ワークフロー」
CGで考えられる光量、物理的な考え
白 rgb = 1.0 はただの基準で、白く見えるであろう色
明るさには際限がない
これをディスプレイなどでどのように発色させるか?を考えるのが色空間
ディスプレイの性能、人間の知覚域、認知補正を考慮する
そもそも線形の光量に対して、人間の視覚は対数的に認知される
人間の目は対数的に認知が働くため、色変換も対数的に行われがち
目ってすごい情報処理してるんだなぁ
シーンの色設計に関しては、補正された色を排除し、全てリニアな値で色を管理する、という考え
リニアでだしたのち、グレーディングをおこない最終的な動画フォーマットとして固有の色空間に固着させる
ポスプロは ACEScctのように、対数的な色空間が好まれる場合も多い