After EffectsにおけるOCIOを使ったACESシーンリニアワークフロー
- 2024/04/25
(初公開 2019/05/08, 最終更新 2024/04/25)
※この記事のNuke版はこちら
→ 【NukeにおけるOCIOを使ったACESシーンリニアワークフロー】
このページでは、After EffectsでOCIOを使ったACESワークフローを実践する方法について紹介したいと思います。カラーマネジメントの手法はさまざまであり、正解が1つというものではありません。ここで紹介するやり方はあくまで一例ですが、VFX制作のカラーマネジメントについて取り組み始めた初心者の方の参考になればと思います。
VFX制作を行う上で、OpenColorIO(OCIO)というカラーマネジメントのシステムを使う方法があります。Sony Pictures Imageworksが映画制作のために開発したシステムで、アーティストがドロップダウンを選ぶことで簡単にカラースペースを変換できるというものです(1)。後述のACESとも互換性があります。
VFX制作においては、さまざまな異なるカラースペースの画像を扱います。デジタルシネマカメラで撮影した映像、レンダリングされたCG、写真やマットペイントといった具合です。
※補足:そもそもカラースペースとは。
カラースペース(color space=色空間)というのは定義の曖昧な用語ですが、ここで言うカラースペースというのは、ガンマ(gamma)(※専門的には伝達関数 transfer fanction)および色域(gamut)と白色点(white point, reference white)で定められた、色を数値で表す際の規格を指します。
VFX作業ではカラースペースを統一させたり、カラースペースを変換した後に再び元に戻したりする必要があります。カラースペース変換はVFX制作の重要なプロセスなのです。
ACESはアメリカの映画業界で生み出されたカラーマネジメントの仕組みです。デジタル映画制作や、長期的な映画作品のアーカイブを支援する目的でつくられ、2014年にACES 1.0が正式リリースされました。その後、VFXの世界でも標準になりつつあるようです。
ACESには、その仕組みの中で定義された独自のカラースペースがあります。ACESのカラースペースは開発時には1種類でしたが、その後5タイプのカラースペースが定められました。
VFX作業のメインとしては、ACEScgカラースペースが推奨されます。ACEScgはガンマはlinearで、AP1と呼ばれる適度に広い(Rec. 2020より少し広い)色域のカラースペースです。CGレンダリング画像の保存や合成作業に適しています。
一方、ACES2065-1カラースペース(当初これが唯一の「ACESカラースペース」でした)は、AP0と呼ばれる非常に(バカバカしいほど)広い色域のカラースペースです。こちらはもともと映画作品のアーカイブ目的に設計されたものであり、VFX作業には不向きだとされています(2)。RGB三原色すべてが虚色(きょしょく、imaginary color)という実在しない色のためです。よってACES2065-1はVFX作業には用いず、納品など会社間の受け渡しの際のOpenEXRファイルのカラースペースとして使うことが推奨されています。
ACESワークフローについて簡単に説明すると、さまざまなカラースペースで保存されたすべての画像を入力時に変換し、シーンリニア(scene linear=現実線形)やシーンリファード(scene referred=現実参照)と呼ばれる現実世界の物理的な光の強度を表すRGB数値で扱う、シーンリニアワークフローです。画像をディスプレイモニターに表示する際には、ビューイングのために再び変換されます。入力時の変換はIDT(Input Device Transform)やInput Transformと呼ばれます。ビューイングの際の変換はRRT(Reference Rendering Transform)というものとODT(Output Device Transform)というものがありますが、この2つはツール上では一体化しています。
Adobe After Effectsは、2023年2月7日にリリースされたバージョン23.2(2023)で OpenColorIO および ACES のカラーマネジメントに正式に対応しました。その使い方はマニュアルに記載されている通りですが、このページでも簡単に説明したいと思います。
OpenColorIO および ACES のカラーマネジメント
https://helpx.adobe.com/jp/after-effects/using/opencolorio-aces-color-management.html
プロジェクトパネルにある「8bpc」「16bpc」「32bpc」ボタンをクリックしてください。
[プロジェクト設定]ウィンドウが[カラー]タブの状態で開きます。
・[カラーエンジン:] を"OCIO color managed"に変更します。
・[OCIO設定:] を"ACES 1.3 Studio v1.0" にします。
・[ビットデプス:] は "32 bit/チャンネル(浮動小数点)" を選びます。8bpcや16bpcよりも重い処理の計算になりますが、正しいカラーマネジメントとはそういうものです。RGB値をシーンリニアで計算するということは、ハイダイナミックレンジで計算するという意味です。32bpcは必須になります。0を下回るマイナスのRGB値や、1を上回る高輝度のRGBを扱うことができます。8bpcや16bpcではRGB値の上限(白と言う上限)がありますが、32bpcではRGB値に上限も下限もありません。合成結果はハイライトの部分で顕著に異なります。
・[3D LUT補間:] はTetrahedral(テトラヒドラル)を選んでください。LUTを使うときに、格子点間の欠損する部分での変換をどう補間するかという設定です。Tetrahedralは、Trilinear(トリリニア)より良い結果になります。
・[作業カラースペース:]は "scene_linear: ACEScg" になっていると思います。変更することも可能ですが、ここではACEScgのままで説明します。
・[表示カラースペース:] の設定をどうするのが正しいのかは、表示に使うディスプレイモニターによって違ってきます。現在一般的なPCのディスプレイモニターであれば、"sRGB - Display/ACES 1.0 - SDR Video"で良いと思われます。この設定は後述するビューアの[表示カラースペース]ドロップダウンのデフォルト設定を決めるものです。
※補足:[カスタムOCIO設定:] は今回は使いませんが、ここからカスタマイズされたコンフィグファイルを読み込んで使うことも可能です。コンフィグファイルというのは、たとえば C:\Program Files\Adobe\Adobe After Effects 2024\Support Files\OpenColorIO-Configs\ACES 1.3 CG v1.0 にある "cg-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio" というテキストファイルです。このファイルを複製して適当な名前を付け、好きなように編集できます。不要な色空間が表示されないようにしたり、Rolesの部分を変更したりして、より便利にOCIOを活用できます。
フッテージのカラースペースを設定します。素材ごとにカラースペースがどういう状態かAfter Effects(OCIO)に教えてやることで、RGB値は適切に変換され、作業用のカラースペース(ACEScg)に揃います。規格の違いで素材の色がバラバラだという問題が解決し、合理的なコンポジットが可能になります。ACESワークフローにおいてIDTまたはInput Transformと呼ばれる変換プロセスです。
プロジェクトパネル内でフッテージを選択し、プロジェクトパネル左下のボタンで[フッテージを変換]ウィンドウを開きます(フッテージを右クリック→[フッテージを変換]→[メイン]と同じです)。
[カラー]タブに移動します。[メディアカラースペースを上書き:] でカラースペースを選びます。"すべてを表示"にチェックを入れるとたくさん出てきます。
・実写映画のVFX業界では、長い間伝統的に実写プレートはDPX 10bit Logの連番ファイル形式が使われてきました。その場合、通常はカメラのLog規格が使われると思います。一方、近年ではOpenEXRの連番ファイル形式が使われることも増えてきました。EXRの場合、ACES2065-1というカラースペースが使われるケースもあれば、その他さまざまなケースがあると思われます。
・Log収録した実写素材であれば、そのカメラのカラースペースを選択します。"Input"で始まるのはカメラのカラースペースです。同じカメラメーカーでも複数の規格を持っていたり、同じカメラでも撮影モードで違ったりするので確認が必要です。
・「普通の画像」はどう読み込むべきか。2つのやり方があります。たとえばインターネット上からダウンロードしたような「普通の画像」はsRGB色空間の素材だと思います。"Utility/sRGB - Texture"で読み込めば良いと思います。これはsRGBの白をAfter Effects内に1.0という値で読み込みます。ハイダイナミックレンジでの合成では、1.0はやや暗い白になります。sRGBについては、もう1つの考え方もでき、表示用の変換である"sRGB - Display/ACES 1.0 - SDR Video"を使うことも可能です。こちらは「ハイダイナミックレンジの合成結果のハイライトを丸め込みsRGBにする変換」の逆変換となるため、明るい輝度のピクセルが高輝度になりすぎる特徴があります。一長一短あると思います。"Display"のカラースペースで書き出した素材であれば、"Display"のカラースペースで読み込むと良いと思います。読み込みと書き出しが同じになるという点で、"Display"のカラースペースは選択肢です。
・CG素材については、CGソフトウェアからどのようなカラースペースでレンダリングして保存されたかによります。ACEScgでレンダリングした場合は、ACEScgを選びます。「リニアのsRGB」「リニアのRec.709」というケースでは、Utility/Linear Rec.709(sRGB)を選びます。Rec.709とsRGBは同じ色域・白色点で、ガンマの異なる色空間なので、リニアにすると実質的に同じカラースペースとなります。
After Effectsで複数のフッテージに対して同じ設定を適用したいときがあります。プロジェクトパネルでフッテージを右クリック→[フッテージの変換]→[変換を記憶] と [変換を適用] を活用するのが便利です。ただし、この機能はフッテージの設定すべてを移し替えるので、フレームレートなども同じ設定をコピーしてしまう点には注意が必要です。
ビューアパネルの下に[表示カラースペース]のドロップダウンがあり、"sRGB - Display/ACES 1.0 - SDR Video"になっていると思います。
ACEScgというのは作業には適したカラースペースですが、ビューイング(表示)のための色空間ではないので、ディスプレイモニターに出力するためには適切な変換が必要です。それがこの[表示カラースペース]のドロップダウンというわけです。ACESワークフローではRRTおよびODTと呼ばれる変換プロセスが、1つにまとまっている形です。この[表示カラースペース]は、合成データそのものを加工しているわけではありません。モニターに映像を出す直前に、変換フィルターを掛けているイメージです。そのため、この変換はいつでもオフ("None")にできますし、レンダリングには適用されません。
Log映像と一緒に使われるものとしてLUTファイルがあります。LUTを適用した結果をビューイングしたい場合は、調整レイヤーをタイムラインパネルのいちばん上につくり、[OCIOファイル変換]エフェクトを適用、[選択]ボタンからLUTファイルを選びます。この場合、ビューアの[表示カラースペース]は"None"にすると良さそうです。LUTは普通、表示のためのカラースペース変換を含んでいるためです。
LUTを使う場合も、カラースペースに注意です。LUTは、Logの状態の実写素材を入力し、Rec.709カラースペースで出力する設計になっているものが多いのではないかと思います。そのため[OCIOファイル変換]エフェクトの前に[OCIO色空間変換]エフェクトを追加し、ACEScgからカメラLogに変換します。LUT適用後はRec.709からsRGBに変換します。ややこしいですが[OCIO表示変換]エフェクトの逆変換を使ってRec.709からACEScgに戻し、さらに[OCIO表示変換]エフェクトでACEScgからsRGBに変換します。これでRec.709用に設計されたLUTを使って、sRGBディスプレイモニターで適切に表示できます。
※補足:いまさらですが、そもそもLogやLUTとは何なのか。
Log(ログ)の映像について、非常におおざっぱに説明します。太陽、ろうそくの光、白い雲。こういったものは光の強度が非常に強く、「普通のビデオカメラ」「普通のデジタルカメラ」で撮影すると「白飛び」して情報が記録できません。また、逆に暗い部分は「黒潰れ」してしまいます。Log画像はカメラが光の強度の情報を巧妙なカーブで圧縮した数値で記録し、ハイライトや暗部の階調をしっかり保存できる形式です。つまりLogというのは、実質的にハイ・ダイナミックレンジ(ダイナミックレンジが広い)画像の一種です。しかしLogというのは保存に適した形式であり、そのままモニターで見るのには適していません。よく「Logはローコントラストに見える」と言われますが、それは適切な変換をせずに見てしまっているせいです。カップラーメンをそのまま食べて文句を言っているようなものです。お湯をかけて食べてください。
LUT(ラット)についても、おおざっぱに説明します。ルックアップテーブル(Look-Up table)、日本語にすると「検索表」「参照対応表」といった意味ですが、映像業界では「あるRGB値を別のRGB値に変換するための道具」として使われます。Log画像を、モニターで好ましい色で見えるようにLUTが変換します。注意が必要なのは、LUTをベイクして(焼き込んで)保存してしまうと、せっかく記録されていたハイライトや暗部の情報が失われてしまい、元に戻せなくなることです。ロー・ダイナミックレンジ画像になってしまいます。これを避けるため、合成作業時にはLUTはモニターに出力する直前に毎回いちいち適用するという使い方をします。オリジナル素材が持っていたLogのハイ・ダイナミックレンジの階調は、そのままキープする必要があります。
というわけで、After Effectsで合成作業を行う際には、「いちばん上の調整レイヤー」を使ってLUTを適用するわけです。また、この調整レイヤーはあくまでビューイングに使いたいだけで、レンダリング時には外したい、という状況があります。その場合は、タイムラインパネル内で調整レイヤーを右クリック→「ガイドレイヤー」に設定します。こうしておけば、この調整レイヤーはレンダリング時にはオフになります。
Logの素材をシーンリニアにすると、暗部のノイズ部分でマイナスのRGB値になることがあります。オリジナルの階調を保持するための対策としては、レベル補正でオフセットし、合成後に戻すワークフローが知られています。この場合、素材は複数レイヤーで使いまわすことが多いので、プリコンポジションを利用すると良いと思います。
ハイダイナミックレンジの合成では、ビューアにある[露出調整]のスライダーを活用し、明るくして暗部の階調を見たり、逆に暗くしてハイライトの階調を見たりすると良いです。また、情報パネルでRGB値を数字で確認すると良いと思います。
After Effectsには32bpc非対応のエフェクトがあり、使おうとすると「!」マークが出てきます。「!」をクリックすると表示される警告メッセージの通り、ハイライトが1.0でクリップ(クランプ)されてしまう危険があります。つまり、せっかく32bpcに設定してハイダイナミックレンジの世界で合成していたのに、ハイライトの階調が永遠に失われてしまいます。
これを避けるために、[HDRコンパンダー]エフェクトが用意されています。RGB値を圧縮してからエフェクトを適用し、その後2つ目の[HDRコンパンダー]エフェクトでRGB値を元に戻すことができます。ちなみに、[HDRコンパンダー]エフェクトがやっていることは明らかにただのレベル補正です。
その他参考:
[AfterEffects] シーンリニアコンポジット:HDRがクランプされやすい操作 [Scene-linear] | yamagishi-2bit-BLog
http://yamagishi-2bit.blogspot.com/2019/08/aftereffects-hdr.html
レンダリングを行う際には、[出力モジュール設定]ウィンドウの[カラー]タブで、[出力カラースペース:] のドロップダウンから好きなカラースペースを選びます。"すべてを表示"にチェックを入れるとたくさん出てきます。
・元素材がLogだった場合、書き出すときにLogに戻せます。
・"sRGB - Display/ACES 1.0 - SDR Video"を選べば、ビューイングと同じ変換を掛けた状態で書き出せます。
・何も変換しない、という場合はACEScgでOKです。作業用カラースペースと同じということは、RGB値は何も変換されないということになります。
以上。(2024年4月)
以下の説明については、2019年5月に記載した古いやり方です。After Effects 2023より前のバージョンでは、OCIO/ACESを使用したい場合、ユーザーは自らプラグインをインストールし、かなり面倒な手順に取り組む必要がありました。23.2以降のバージョンの普及とともに、いずれ参考にすべきではない古い情報になると思われますので、ご注意お願いいたします。
■AfterEffectsの作業環境を整える
1. OCIOプラグインをOpenColorIO for After Effectsからダウンロードし、OpenColorIO.aex をPlug-insの場所に置きます。
2. imageworks/OpenColorIO-Configsから"aces_1.0.3"(2019年5月現在の普及版)のコンフィグをダウンロードし、所定の場所に"aces_1.0.3"フォルダを置きます。場所は環境によって以下のように定まっています。
ただし、この場所に置くことでAfter Effectsが遅くなってしまう場合もあり、他の場所に置くことも可能です。
3. AfterEffectsを起動し、プロジェクト設定で「色深度:32bit」「作業用スペース:なし」に設定します。
■カラースペースを変換する
各フッテージは右クリックメニューの[フッテージを変換] > [メイン]から、カラーマネジメントで「RGBを保持」のチェックを入れます。これはAfter Effects内蔵のカラーマネジメントを無効化するためです。
画像レイヤーにOCIOプラグインを適用し(「ユーティリティー」の中に入っています)、[Configuration] のドロップダウンから "aces_1.0.3" を選びます。コンフィグを別の場所に置いた場合は、"Custom"をクリックし、config.ocioファイルを選択することで読み込むことができます。
[Convert]をオンにし、カラースペース変換を行います。
たとえばAlexaのカメラで撮影したログカラースペースの素材の場合は、[Input Space:] を "Input -ARRI-V3 LogC(EI800) - Wide Gamut" に、[Output Space:] を "ACES - ACEScg" に設定します。このようにして、さまざまなフッテージのカラースペースをACEScgに統一した上で合成作業を行います。
■ビューイング
シーンリニアのデータは、モニターに表示するのには向いていません。そこで、ビューイングのためには変換が必要です。コンポジションの一番上に調整レイヤーを作成し、OCIOプラグインを適用します。この調整レイヤーは「ガイドレイヤー」に設定し、レンダリング時には無効化されるようにします。
こちらは[Display]をオン。
[Input Space:] を "ACES - ACEScg" に設定し、[Transform:] はモニターに合わせ "sRGB" や "Rec.709" などを選びます。
■レンダリング
After Effects内ではACEScgカラースペースになっているため、そのままEXRでレンダリングすれば、ACEScgカラースペースのEXRになります。ログのカラースペースでDPXをレンダリングしたい場合は、OCIOプラグインでACEScgからログに変換してレンダリングします。
レンダリング時には出力モジュールのカラーマネジメントで「RGBを保持」のチェックを入れます。これもまた、After Effects内蔵のカラーマネジメントを無効化するためです。
※この記事のNuke版はこちら
→ 【NukeにおけるOCIOを使ったACESシーンリニアワークフロー】
このページでは、After EffectsでOCIOを使ったACESワークフローを実践する方法について紹介したいと思います。カラーマネジメントの手法はさまざまであり、正解が1つというものではありません。ここで紹介するやり方はあくまで一例ですが、VFX制作のカラーマネジメントについて取り組み始めた初心者の方の参考になればと思います。
OpenColorIO とは
VFX制作を行う上で、OpenColorIO(OCIO)というカラーマネジメントのシステムを使う方法があります。Sony Pictures Imageworksが映画制作のために開発したシステムで、アーティストがドロップダウンを選ぶことで簡単にカラースペースを変換できるというものです(1)。後述のACESとも互換性があります。
VFX制作においては、さまざまな異なるカラースペースの画像を扱います。デジタルシネマカメラで撮影した映像、レンダリングされたCG、写真やマットペイントといった具合です。
※補足:そもそもカラースペースとは。
カラースペース(color space=色空間)というのは定義の曖昧な用語ですが、ここで言うカラースペースというのは、ガンマ(gamma)(※専門的には伝達関数 transfer fanction)および色域(gamut)と白色点(white point, reference white)で定められた、色を数値で表す際の規格を指します。
VFX作業ではカラースペースを統一させたり、カラースペースを変換した後に再び元に戻したりする必要があります。カラースペース変換はVFX制作の重要なプロセスなのです。
ACES とは
ACESはアメリカの映画業界で生み出されたカラーマネジメントの仕組みです。デジタル映画制作や、長期的な映画作品のアーカイブを支援する目的でつくられ、2014年にACES 1.0が正式リリースされました。その後、VFXの世界でも標準になりつつあるようです。
ACESには、その仕組みの中で定義された独自のカラースペースがあります。ACESのカラースペースは開発時には1種類でしたが、その後5タイプのカラースペースが定められました。
・ACES2065-1
・ACEScg
・ACEScc
・ACEScct
・ACESproxy
・ACEScg
・ACEScc
・ACEScct
・ACESproxy
VFX作業のメインとしては、ACEScgカラースペースが推奨されます。ACEScgはガンマはlinearで、AP1と呼ばれる適度に広い(Rec. 2020より少し広い)色域のカラースペースです。CGレンダリング画像の保存や合成作業に適しています。
一方、ACES2065-1カラースペース(当初これが唯一の「ACESカラースペース」でした)は、AP0と呼ばれる非常に(バカバカしいほど)広い色域のカラースペースです。こちらはもともと映画作品のアーカイブ目的に設計されたものであり、VFX作業には不向きだとされています(2)。RGB三原色すべてが虚色(きょしょく、imaginary color)という実在しない色のためです。よってACES2065-1はVFX作業には用いず、納品など会社間の受け渡しの際のOpenEXRファイルのカラースペースとして使うことが推奨されています。
ACESワークフローについて簡単に説明すると、さまざまなカラースペースで保存されたすべての画像を入力時に変換し、シーンリニア(scene linear=現実線形)やシーンリファード(scene referred=現実参照)と呼ばれる現実世界の物理的な光の強度を表すRGB数値で扱う、シーンリニアワークフローです。画像をディスプレイモニターに表示する際には、ビューイングのために再び変換されます。入力時の変換はIDT(Input Device Transform)やInput Transformと呼ばれます。ビューイングの際の変換はRRT(Reference Rendering Transform)というものとODT(Output Device Transform)というものがありますが、この2つはツール上では一体化しています。
Adobe After Effectsは、2023年2月7日にリリースされたバージョン23.2(2023)で OpenColorIO および ACES のカラーマネジメントに正式に対応しました。その使い方はマニュアルに記載されている通りですが、このページでも簡単に説明したいと思います。
OpenColorIO および ACES のカラーマネジメント
https://helpx.adobe.com/jp/after-effects/using/opencolorio-aces-color-management.html
プロジェクト設定
プロジェクトパネルにある「8bpc」「16bpc」「32bpc」ボタンをクリックしてください。
[プロジェクト設定]ウィンドウが[カラー]タブの状態で開きます。
・[カラーエンジン:] を"OCIO color managed"に変更します。
・[OCIO設定:] を"ACES 1.3 Studio v1.0" にします。
・[ビットデプス:] は "32 bit/チャンネル(浮動小数点)" を選びます。8bpcや16bpcよりも重い処理の計算になりますが、正しいカラーマネジメントとはそういうものです。RGB値をシーンリニアで計算するということは、ハイダイナミックレンジで計算するという意味です。32bpcは必須になります。0を下回るマイナスのRGB値や、1を上回る高輝度のRGBを扱うことができます。8bpcや16bpcではRGB値の上限(白と言う上限)がありますが、32bpcではRGB値に上限も下限もありません。合成結果はハイライトの部分で顕著に異なります。
・[3D LUT補間:] はTetrahedral(テトラヒドラル)を選んでください。LUTを使うときに、格子点間の欠損する部分での変換をどう補間するかという設定です。Tetrahedralは、Trilinear(トリリニア)より良い結果になります。
・[作業カラースペース:]は "scene_linear: ACEScg" になっていると思います。変更することも可能ですが、ここではACEScgのままで説明します。
・[表示カラースペース:] の設定をどうするのが正しいのかは、表示に使うディスプレイモニターによって違ってきます。現在一般的なPCのディスプレイモニターであれば、"sRGB - Display/ACES 1.0 - SDR Video"で良いと思われます。この設定は後述するビューアの[表示カラースペース]ドロップダウンのデフォルト設定を決めるものです。
※補足:[カスタムOCIO設定:] は今回は使いませんが、ここからカスタマイズされたコンフィグファイルを読み込んで使うことも可能です。コンフィグファイルというのは、たとえば C:\Program Files\Adobe\Adobe After Effects 2024\Support Files\OpenColorIO-Configs\ACES 1.3 CG v1.0 にある "cg-config-v1.0.0_aces-v1.3_ocio-v2.1.ocio" というテキストファイルです。このファイルを複製して適当な名前を付け、好きなように編集できます。不要な色空間が表示されないようにしたり、Rolesの部分を変更したりして、より便利にOCIOを活用できます。
フッテージの設定
フッテージのカラースペースを設定します。素材ごとにカラースペースがどういう状態かAfter Effects(OCIO)に教えてやることで、RGB値は適切に変換され、作業用のカラースペース(ACEScg)に揃います。規格の違いで素材の色がバラバラだという問題が解決し、合理的なコンポジットが可能になります。ACESワークフローにおいてIDTまたはInput Transformと呼ばれる変換プロセスです。
プロジェクトパネル内でフッテージを選択し、プロジェクトパネル左下のボタンで[フッテージを変換]ウィンドウを開きます(フッテージを右クリック→[フッテージを変換]→[メイン]と同じです)。
[カラー]タブに移動します。[メディアカラースペースを上書き:] でカラースペースを選びます。"すべてを表示"にチェックを入れるとたくさん出てきます。
・実写映画のVFX業界では、長い間伝統的に実写プレートはDPX 10bit Logの連番ファイル形式が使われてきました。その場合、通常はカメラのLog規格が使われると思います。一方、近年ではOpenEXRの連番ファイル形式が使われることも増えてきました。EXRの場合、ACES2065-1というカラースペースが使われるケースもあれば、その他さまざまなケースがあると思われます。
・Log収録した実写素材であれば、そのカメラのカラースペースを選択します。"Input"で始まるのはカメラのカラースペースです。同じカメラメーカーでも複数の規格を持っていたり、同じカメラでも撮影モードで違ったりするので確認が必要です。
・「普通の画像」はどう読み込むべきか。2つのやり方があります。たとえばインターネット上からダウンロードしたような「普通の画像」はsRGB色空間の素材だと思います。"Utility/sRGB - Texture"で読み込めば良いと思います。これはsRGBの白をAfter Effects内に1.0という値で読み込みます。ハイダイナミックレンジでの合成では、1.0はやや暗い白になります。sRGBについては、もう1つの考え方もでき、表示用の変換である"sRGB - Display/ACES 1.0 - SDR Video"を使うことも可能です。こちらは「ハイダイナミックレンジの合成結果のハイライトを丸め込みsRGBにする変換」の逆変換となるため、明るい輝度のピクセルが高輝度になりすぎる特徴があります。一長一短あると思います。"Display"のカラースペースで書き出した素材であれば、"Display"のカラースペースで読み込むと良いと思います。読み込みと書き出しが同じになるという点で、"Display"のカラースペースは選択肢です。
・CG素材については、CGソフトウェアからどのようなカラースペースでレンダリングして保存されたかによります。ACEScgでレンダリングした場合は、ACEScgを選びます。「リニアのsRGB」「リニアのRec.709」というケースでは、Utility/Linear Rec.709(sRGB)を選びます。Rec.709とsRGBは同じ色域・白色点で、ガンマの異なる色空間なので、リニアにすると実質的に同じカラースペースとなります。
After Effectsで複数のフッテージに対して同じ設定を適用したいときがあります。プロジェクトパネルでフッテージを右クリック→[フッテージの変換]→[変換を記憶] と [変換を適用] を活用するのが便利です。ただし、この機能はフッテージの設定すべてを移し替えるので、フレームレートなども同じ設定をコピーしてしまう点には注意が必要です。
ビューイング(表示)の設定
ビューアパネルの下に[表示カラースペース]のドロップダウンがあり、"sRGB - Display/ACES 1.0 - SDR Video"になっていると思います。
ACEScgというのは作業には適したカラースペースですが、ビューイング(表示)のための色空間ではないので、ディスプレイモニターに出力するためには適切な変換が必要です。それがこの[表示カラースペース]のドロップダウンというわけです。ACESワークフローではRRTおよびODTと呼ばれる変換プロセスが、1つにまとまっている形です。この[表示カラースペース]は、合成データそのものを加工しているわけではありません。モニターに映像を出す直前に、変換フィルターを掛けているイメージです。そのため、この変換はいつでもオフ("None")にできますし、レンダリングには適用されません。
Log映像と一緒に使われるものとしてLUTファイルがあります。LUTを適用した結果をビューイングしたい場合は、調整レイヤーをタイムラインパネルのいちばん上につくり、[OCIOファイル変換]エフェクトを適用、[選択]ボタンからLUTファイルを選びます。この場合、ビューアの[表示カラースペース]は"None"にすると良さそうです。LUTは普通、表示のためのカラースペース変換を含んでいるためです。
LUTを使う場合も、カラースペースに注意です。LUTは、Logの状態の実写素材を入力し、Rec.709カラースペースで出力する設計になっているものが多いのではないかと思います。そのため[OCIOファイル変換]エフェクトの前に[OCIO色空間変換]エフェクトを追加し、ACEScgからカメラLogに変換します。LUT適用後はRec.709からsRGBに変換します。ややこしいですが[OCIO表示変換]エフェクトの逆変換を使ってRec.709からACEScgに戻し、さらに[OCIO表示変換]エフェクトでACEScgからsRGBに変換します。これでRec.709用に設計されたLUTを使って、sRGBディスプレイモニターで適切に表示できます。
※補足:いまさらですが、そもそもLogやLUTとは何なのか。
Log(ログ)の映像について、非常におおざっぱに説明します。太陽、ろうそくの光、白い雲。こういったものは光の強度が非常に強く、「普通のビデオカメラ」「普通のデジタルカメラ」で撮影すると「白飛び」して情報が記録できません。また、逆に暗い部分は「黒潰れ」してしまいます。Log画像はカメラが光の強度の情報を巧妙なカーブで圧縮した数値で記録し、ハイライトや暗部の階調をしっかり保存できる形式です。つまりLogというのは、実質的にハイ・ダイナミックレンジ(ダイナミックレンジが広い)画像の一種です。しかしLogというのは保存に適した形式であり、そのままモニターで見るのには適していません。よく「Logはローコントラストに見える」と言われますが、それは適切な変換をせずに見てしまっているせいです。カップラーメンをそのまま食べて文句を言っているようなものです。お湯をかけて食べてください。
LUT(ラット)についても、おおざっぱに説明します。ルックアップテーブル(Look-Up table)、日本語にすると「検索表」「参照対応表」といった意味ですが、映像業界では「あるRGB値を別のRGB値に変換するための道具」として使われます。Log画像を、モニターで好ましい色で見えるようにLUTが変換します。注意が必要なのは、LUTをベイクして(焼き込んで)保存してしまうと、せっかく記録されていたハイライトや暗部の情報が失われてしまい、元に戻せなくなることです。ロー・ダイナミックレンジ画像になってしまいます。これを避けるため、合成作業時にはLUTはモニターに出力する直前に毎回いちいち適用するという使い方をします。オリジナル素材が持っていたLogのハイ・ダイナミックレンジの階調は、そのままキープする必要があります。
というわけで、After Effectsで合成作業を行う際には、「いちばん上の調整レイヤー」を使ってLUTを適用するわけです。また、この調整レイヤーはあくまでビューイングに使いたいだけで、レンダリング時には外したい、という状況があります。その場合は、タイムラインパネル内で調整レイヤーを右クリック→「ガイドレイヤー」に設定します。こうしておけば、この調整レイヤーはレンダリング時にはオフになります。
合成作業時の注意
Logの素材をシーンリニアにすると、暗部のノイズ部分でマイナスのRGB値になることがあります。オリジナルの階調を保持するための対策としては、レベル補正でオフセットし、合成後に戻すワークフローが知られています。この場合、素材は複数レイヤーで使いまわすことが多いので、プリコンポジションを利用すると良いと思います。
ハイダイナミックレンジの合成では、ビューアにある[露出調整]のスライダーを活用し、明るくして暗部の階調を見たり、逆に暗くしてハイライトの階調を見たりすると良いです。また、情報パネルでRGB値を数字で確認すると良いと思います。
After Effectsには32bpc非対応のエフェクトがあり、使おうとすると「!」マークが出てきます。「!」をクリックすると表示される警告メッセージの通り、ハイライトが1.0でクリップ(クランプ)されてしまう危険があります。つまり、せっかく32bpcに設定してハイダイナミックレンジの世界で合成していたのに、ハイライトの階調が永遠に失われてしまいます。
これを避けるために、[HDRコンパンダー]エフェクトが用意されています。RGB値を圧縮してからエフェクトを適用し、その後2つ目の[HDRコンパンダー]エフェクトでRGB値を元に戻すことができます。ちなみに、[HDRコンパンダー]エフェクトがやっていることは明らかにただのレベル補正です。
その他参考:
[AfterEffects] シーンリニアコンポジット:HDRがクランプされやすい操作 [Scene-linear] | yamagishi-2bit-BLog
http://yamagishi-2bit.blogspot.com/2019/08/aftereffects-hdr.html
レンダリング
レンダリングを行う際には、[出力モジュール設定]ウィンドウの[カラー]タブで、[出力カラースペース:] のドロップダウンから好きなカラースペースを選びます。"すべてを表示"にチェックを入れるとたくさん出てきます。
・元素材がLogだった場合、書き出すときにLogに戻せます。
・"sRGB - Display/ACES 1.0 - SDR Video"を選べば、ビューイングと同じ変換を掛けた状態で書き出せます。
・何も変換しない、という場合はACEScgでOKです。作業用カラースペースと同じということは、RGB値は何も変換されないということになります。
以上。(2024年4月)
以下の説明については、2019年5月に記載した古いやり方です。After Effects 2023より前のバージョンでは、OCIO/ACESを使用したい場合、ユーザーは自らプラグインをインストールし、かなり面倒な手順に取り組む必要がありました。23.2以降のバージョンの普及とともに、いずれ参考にすべきではない古い情報になると思われますので、ご注意お願いいたします。
After Effects 2022以前の古いやり方(2019年5月記載)
■AfterEffectsの作業環境を整える
1. OCIOプラグインをOpenColorIO for After Effectsからダウンロードし、OpenColorIO.aex をPlug-insの場所に置きます。
【例】
C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Plug-ins\OpenColorIO\OpenColorIO.aex
C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Plug-ins\OpenColorIO\OpenColorIO.aex
2. imageworks/OpenColorIO-Configsから"aces_1.0.3"(2019年5月現在の普及版)のコンフィグをダウンロードし、所定の場所に"aces_1.0.3"フォルダを置きます。場所は環境によって以下のように定まっています。
【例】
Mac: /Library/Application Support/OpenColorIO/
Windows 7: C:\ProgramData\OpenColorIO\
Win XP: C:\Documents and Settings\All Users\Application Data\OpenColorIO\
Mac: /Library/Application Support/OpenColorIO/
Windows 7: C:\ProgramData\OpenColorIO\
Win XP: C:\Documents and Settings\All Users\Application Data\OpenColorIO\
ただし、この場所に置くことでAfter Effectsが遅くなってしまう場合もあり、他の場所に置くことも可能です。
3. AfterEffectsを起動し、プロジェクト設定で「色深度:32bit」「作業用スペース:なし」に設定します。
■カラースペースを変換する
各フッテージは右クリックメニューの[フッテージを変換] > [メイン]から、カラーマネジメントで「RGBを保持」のチェックを入れます。これはAfter Effects内蔵のカラーマネジメントを無効化するためです。
画像レイヤーにOCIOプラグインを適用し(「ユーティリティー」の中に入っています)、[Configuration] のドロップダウンから "aces_1.0.3" を選びます。コンフィグを別の場所に置いた場合は、"Custom"をクリックし、config.ocioファイルを選択することで読み込むことができます。
[Convert]をオンにし、カラースペース変換を行います。
たとえばAlexaのカメラで撮影したログカラースペースの素材の場合は、[Input Space:] を "Input -ARRI-V3 LogC(EI800) - Wide Gamut" に、[Output Space:] を "ACES - ACEScg" に設定します。このようにして、さまざまなフッテージのカラースペースをACEScgに統一した上で合成作業を行います。
■ビューイング
シーンリニアのデータは、モニターに表示するのには向いていません。そこで、ビューイングのためには変換が必要です。コンポジションの一番上に調整レイヤーを作成し、OCIOプラグインを適用します。この調整レイヤーは「ガイドレイヤー」に設定し、レンダリング時には無効化されるようにします。
こちらは[Display]をオン。
[Input Space:] を "ACES - ACEScg" に設定し、[Transform:] はモニターに合わせ "sRGB" や "Rec.709" などを選びます。
■レンダリング
After Effects内ではACEScgカラースペースになっているため、そのままEXRでレンダリングすれば、ACEScgカラースペースのEXRになります。ログのカラースペースでDPXをレンダリングしたい場合は、OCIOプラグインでACEScgからログに変換してレンダリングします。
レンダリング時には出力モジュールのカラーマネジメントで「RGBを保持」のチェックを入れます。これもまた、After Effects内蔵のカラーマネジメントを無効化するためです。
参考文献
1. Wright, Steve. Digital Compositing for Film And Video Fourth Edition. Focal Press, 2017.
2. Haam-Pieter Duiker. "ACEScg: A Common Color Encoding for Visual Effects Applications". https://www.slideshare.net/hpduiker/acescg-a-common-color-encoding-for-visual-effects-applications/
3. Jacob Danell. "ACES linear workflow using OCIO in After Effects". YouTube. 2018-08-12. https://www.youtube.com/watch?v=1ixzKR21jdw, (参照2019-05-08)
1. Wright, Steve. Digital Compositing for Film And Video Fourth Edition. Focal Press, 2017.
2. Haam-Pieter Duiker. "ACEScg: A Common Color Encoding for Visual Effects Applications". https://www.slideshare.net/hpduiker/acescg-a-common-color-encoding-for-visual-effects-applications/
3. Jacob Danell. "ACES linear workflow using OCIO in After Effects". YouTube. 2018-08-12. https://www.youtube.com/watch?v=1ixzKR21jdw, (参照2019-05-08)
- 関連記事
-
- After EffectsにおけるOCIOを使ったACESシーンリニアワークフロー (2024/04/25)
- After Effectsの調整レイヤーを使いこなすためのTips (2017/01/29)
- After Effectsのマスクカラーを変更するTips (2016/11/28)
- Photoshop & AE 初心者にオススメしたい3つの便利な色調補正機能 (2015/01/26)
- After Effectsのプロジェクトを把握する方法まとめ (2014/12/02)
- After Effectsのコラップスを使ってはいけない? (2014/08/23)
- After Effectsの作業スピードを上げるコンポジションの組み方 (2014/07/13)
- After Effectsで綺麗なグローをつくるテクニック (2014/03/29)
- After Effectsのレイヤー合成の仕組み (2014/03/18)