前にも少し触れたが、色空間の話。
RGBとか、YUY2とか、YV12とか、そういうお話である。

前もって書いておくが、静止画レンダリングしかしない人は読まなくて構わない。
BMP、PIC、Jpeg、Png、Gif、Tiff、なんにしたって基本はRGBである。
色数の問題はあるにせよ、殆どそのまま保存できるからだ。

しかし、動画の場合は、そうは行かない。Mpeg2、Xvid、DivX、H264等、一般的に良く使われるコーデックは殆どRGB以外の色空間で保存されるのだ。



同じレンダリング結果を違う色空間で保存したもの。
Jpgの圧縮率は同じである。上がRGB、下がYV12。下の絵はなんだかボケている様に見える。違いが解るだろうか?


RGBは1ピクセル毎に赤、青、緑の輝度情報を持っているので、レンダリング結果をそのまま保存できる。
しかし、YV12では輝度情報こそ1ピクセル毎に持っているが、色の情報は縦横2ピクセル毎、つまり4ピクセルづつの情報しか持っていないのだ。
(詳しく説明するとキリがないので大雑把に説明しています)

人間の目は明るさに比べ、色には結構鈍感なため、YV12のような保存方法でもごまかしが効くのだが、だからといって何も考えずにデータを作成しレンダリングすると、この様な結果となる。


左RGB、右YV12。200%拡大するともっと解りやすい。折角レンダリングの精度を上げて時間をかけてレンダリングしても、これでは台無しである。

このような結果は、輝度が殆ど同じで、色のみが違う部分で発生する。
つまり、この現象を防ぎたければ、モノクロ映像を作るつもりで常に隣り合う材質の明るさにコントラストを持たせなければならない。

シーン全部、全体でこんな作業をするのは大変であるが、せめて そのシーンのメインとなる、見る者の目が一番集中しそうな所では注意すべきだろう。

動画を作る際は、色空間の仕組みも念頭に入れておかないと 後でがっかりする様な映像が出来るのだ。