間が空きすぎて自分でも何書こうとしてたのか忘れちゃうくらいでしたけど、読み返してみれば、前回は「作業スペースのリニア化」の話をしていて、なぜか途中でブツっと切れたまま放置。
前回の記事の最後では「次はCineonをリニアスペースで扱う話」なんて言ってような気もするんですが、予定を変更してなんで「作業スペースをリニア化」についてもう少し書いてみます。ついでにこれまでの話を復習い直すような感じにするので、重複する部分もあるかと思います。
前回の記事の最後では「次はCineonをリニアスペースで扱う話」なんて言ってような気もするんですが、予定を変更してなんで「作業スペースをリニア化」についてもう少し書いてみます。ついでにこれまでの話を復習い直すような感じにするので、重複する部分もあるかと思います。
白が飽和しない?
「作業スペースをリニア化」の前に、リニア合成の利点としてよくいわれる「明部が飽和しない」ということについて説明。前々回の記事、「AfterEffectsでのリニア合成のお話(2)」で以下のように書いています。
「ガンマ値1.0でカラーをブレンド」というのが今回重要になるオプションで、これを有効にすることでレイヤー間の合成時にリニアスペース(ガンマ1.0)でピクセル同士の計算が行なわれます。ガンマ1.0で合成されるということは、明部での白が飽和するといった現象が緩和され、より階調を維持した状態での合成が行なわれるようになります。
「ガンマ値1.0でカラーをブレンド」するとガンマカーブのないリニアスペースでの合成処理となります。指数関数のガンマカーブは明るくなればなるほど勾配がきつくなり、それ故に明るい部分が飽和して出力画像の階調が失われるということです(ちなみに指数関数の逆関数が対数関数で、これはCineonに代表されるlogカーブのことです)。
例えば入力が0.5という明るさを持っていた場合、そのレイヤーを2つ重ねたときに「0.5+0.5=1.0」という値になるということです。ガンマカーブをもつsRGBやRec.709、ガンマ2.2のカラースペースでは入力が0.5であっても出力はガンマカーブによって補正されるので0.7以上となります。
例として、以下のような2つのレイヤーを加算で合成してみます。レンズフレアは条件をそろえるために一度TIFFでレンダリングしたものを使用しています。
32bpcで「ガンマ値1.0でカラーをブレンド」の設定はオフになったいる状態です。いわゆる明部が飽和してしまっている状態です。
32bpcで「ガンマ値1.0でカラーをブレンド」をオンにした状態。明部の飽和が緩和され階調が維持されています。
「作業スペースをリニア化」するとどうなる?
前述の例で「作業スペースをリニア化」をオンにしても変化はありません。「ガンマ値1.0でカラーをブレンド」同様に明部の階調が飽和しない結果が得られます。一見すると「作業スペースをリニア化」しなくても白が飽和しないというメリットを享受できそうですが、加算などの合成処理はレイヤー間だけで行われるわけではなく、エフェクト内で処理されるものもあるため「ガンマ値1.0でカラーをブレンド」ではエフェクト内部処理による加算合成とレイヤー間の加算合成で整合性がとれないという事態も起こります。
下は「ガンマ値1.0でカラーをブレンド」をオン「作業スペースをリニア化」をオフにした場合に発生するレイヤーによる加算合成と「計算」エフェクトの加算合成の例です。
これは非常にわかりやすい例ですが、実際にエフェクトの処理では内部で様々な合成処理が行われています。
「AfterEffectsでのリニア合成のお話(3)」で「作業スペースをリニア化」することによって生じる変化として以下のようなことを挙げています。
「作業スペースをリニア化」することでレイヤー間の計算だけでなく、このようなレイヤー内の計算までリニア化するということなのです(レイヤー内での計算とレイヤー間の計算方法が異なるのは、あまり良いことのように思えませんが)。ノードベースであれば同じリニアで行なわれる計算なので、「作業スペースをリニア化」することでそれらと同じ結果を期待できるようになります...が、After Effectsの従来の計算結果とは決定的に異なるものになってしまいます。
わかりやすく言い換えれば、「ガンマ値1.0でカラーをブレンド」というメニューから、これだけオンにすればリニア合成していると思われがちですが、実際にはリニア合成にはなりません。「作業スペースをリニア化」することでインポートされたフッテージがリニアスペースに変換され、After Effectsでリニア合成が可能になるということです。「ガンマ値1.0でカラーをブレンド」はリニア合成ではなく、レイヤー間の合成だけにリニア合成の特性を取り入れているだけのAfter Effectsの独特なモードで、Nukeなどと同様のリニア合成の結果を得ることはできません。
リニア合成になるのは「作業スペースをリニア化」した場合のみでデフォーカスやブラー、モーションブラー、トランスフォームなどによるリニア合成のメリットは「作業スペースをリニア化」した場合のみです。
個人的には白が飽和しないというメリットだけに関して言えば、わざわざリニア合成にしなくてもスクリーン合成でも良いと思います(元々その目的で作られたものですし)。 今回は繰り返しになった話題も多くて冗長だった気もしますが、気を取り直して次は番外編で「非リニア時の加算合成」についてちょっと書いてみます(脱線...?!)。
[関連記事]
AfterEffectsでのリニア合成のお話(1)
AfterEffectsでのリニア合成のお話(2)
AfterEffectsでのリニア合成のお話(3)
AfterEffectsでのリニア合成のお話(3)の追記
AfterEffectsでOpenEXR