AfterEffectsでのリニア合成のお話(2)

July 2, 2011
Final Cut Pro Xにかまけてて、ちょっと間が空いてしまいました。前回はカラースペースなんかの基本的な話だけで終わってしまったので、今回は少しAfter Effectsでの具体的な設定項目と合わせて書いてみようと思います。基本的にCS5/5.5について書きますが、CS4でも特に変わりはないと思います

自分自身、AfterEffectsでリニア合成を始めたのがCS4->CS5の移行期くらいで割と最近なのですが、使っていなかった理由として今ひとつ確信の持てないプロセスがあったり、同じことをしたつもりでもNukeやShakeと異なる結果になったりするので、避けていたというのが実情です。まずAfterEffectsのリニア合成をわかりにくくしている理由の一つが「Adobeのカラーマネージメント(CMS)」。もう一つがある機能名称をAdobe流に使っていて一般的な名称の使い方とかけ離れた部分があるということです。
...が、そういった問題点はここではひとまず置いといて、とりあえずAfterEffectsでのリニア合成のプロセスと設定項目を片っ端っから当たって行こうと思います。

プロジェクトの設定
まずAfter Effectsのプロジェクト設定を開いて色深度を32bpcにします。これで32bit floatでの合成が可能になるのですが、その下にいくつかのチェックボックスがあります。

日本語版はアップグレードしてないので体験版のスクリーンショットですが、日本語だとこんな感じです。ちなみに英語版はこんなです。[表示]

Screen shot 2011-06-10 at 11.42.31 PM.jpg

リニア合成を行なう際は「色深度」を32bit(float)で作業を行なうようにします。AfterEffectsでは8または16bitでもリニアスペースでの合成は可能なのですがダイナミックレンジが不足し画質を損なう可能性があり、8またh16bit Intでの合成はリニアを前提にしていません。

次に「作業スペース」ですが、これは必要に応じて合わせます。通常PCで作業した画像は「sRGB」だと予想できます。また写真などを使用する場合には「Adobe RGB」の可能性もありますが、After Effectsでの作業スペースはモニターの環境に合わせて「sRGB」が一般的です。HDTV用のプエロジェクトではRec.709も選択できますが、ブラックポイント、ホワイトポイントがかわるので、真っ白(1,1,1)や特定のチャンネルをマスク色として意図的に使用している場合(アニメの場合なんかですね)は注意してください。

「作業スペースをリニア化」は上記の作業スペースで特定の作業スペースを選択していないと有効になりません。この機能についてはまた後で詳しく...

「ガンマ値1.0でカラーをブレンド」というのが今回重要になるオプションで、これを有効にすることでレイヤー間の合成時にリニアスペース(ガンマ1.0)でピクセル同士の計算が行なわれます。ガンマ1.0で合成されるということは、明部での白が飽和するといった現象が緩和され、より階調を維持した状態での合成が行なわれるようになります。まあ、これも後ほど詳しく...

「以前のバージョンのAfter Effects QuickTimeガンマ調整に合わせる」は古いバージョンではQuickTimeのガンマが異なるために、ガンマシフトが起きてしまうことがあります。古いプロジェクトやQuickTimeのファイルを使用する際にこのオプションをオンにすることで回避できます。この辺の話はとりあえずこの一連の記事では無視します。

「シーン参照プロファイルの補正」はAdobeの同バージョンのSuite製品群において、カラーマネージメントの整合性をとるためのものなのです。CS3以前のファイルを読み込んだ場合(Afte EffectsでもPhotoshopでも)、このオプションを有効にしておくと色の整合性に問題が生じる可能性があります。もともとAdobeのCMSは、Photoshopを中心として印刷媒体向けでそれをAfter EffectsやPremiereなどの映像系に拡張していったものです。このオプションはAdobe製品内ではうまく機能するのかもしれませんが、そもそもAdobeだけでフィニッシュするって前提のオプションなので基本的にはオフにしておいた方がいいと思います。デフォルトでオンなんですけどね。


リニアスペースへの画像の読み込み
読み込む前に、色々前提となるお話があるのですが、それをやるとちっともAfter Effectsの操作にたどり着かないので、とりあえず実際にリニアスペースに画像を読み込んでみます。読み込むのは普通に撮られたデジタルカメラのTIFF16bit(Int)画像です。カラースペースはsRGB。これをAfterEffectsの32bpcのプロジェクト、「ガンマ値1.0でカラーをブレンド」オプションを有効にしてに読み込みます。

読み込んだ直後の状態がこれ。当たり前ですがちゃんと表示されています。

Screen shot 2011-06-13 at 3.04.25 AM.jpg

前回の記事でも書いたとおり、ガンマ2.2のモニタで表示することを前提として画像はガンマ0.4545という逆ガンマでモニターで正しく表示されます。ガンマ2.2のモニタに合わせたsRGBをリニア化すると、ガンマ値が0.4545から1.0になるため、全体に画像は明るくコントラストが低くなります。この画像は元のsRGBのままです。「ガンマ値1.0でカラーをブレンド」の場合はAfter Effectsはピクセルの合成処理のみをリニアスペースで行なうことになっています。混同しがちですが、画像自体のガンマ値とで、合成などの画像処理をリニアガンマで計算するということとは全く別です。この状態では、sRGBのガンマを持った画像をAfterEffectsのリニアスペースに読み込み、レイヤーを合成する際のピクセルの計算がリニアスペースで行なわれるということです。

ガンマ値というのはなにか特別に付与されるというものではなく、画像を記録したプロセスによって生じたRGB値の変化です。ビデオの場合はビデオ信号への変換によってガンマ値が補正されて記録されます。
sRGBで撮影された素材でも一部のファイルがメタデータとして扱うのを除けば、画像処理するプログラム側で元のガンマをピクセル情報から読み取るなどということはありません。

「ガンマ値1.0でカラーをブレンド」においてはレイヤー内ではビデオガンマのまま計算が行なわれるので、フッテージソースだけでなくエフェクトなどによって生成される画像もビデオガンマの状態です。
ちょっと長くなったので一度区切って、次は「作業スペースのリニア化」について書いてみます。(続く)


[関連記事]
AfterEffectsでのリニア合成のお話(1)
AfterEffectsでのリニア合成のお話(3)
AfterEffectsでのリニア合成のお話(3)の追記