lunarborの備忘録

CGソフトの使い方を記録しておけば自分とどこかの誰かに役立つだろう

カラーマネジメントプラグイン"Color Manager for LightWave 3D"の使い方(実践編)

使用ソフト

  • Lightwave2020

この記事はこちらの続きです

lunarbor.hatenablog.com

前回"Color Manager for LightWave 3D"の基本的な設定の解説を行いました。

今回は使用例に合わした設定方法を解説していきたいと思います。

■ビュー表示にモニターのiccプロファイルを反映する

この章ではLightwaveのビュー表示にモニターのiccプロファイルを反映させるための設定方法を解説します。事前に使用しているモニターを"sRGB"の色空間に合わしてキャリブレーションし、"iccプロファイル"を作成しておく必要があります。作成したiccプロファイルはWindowsのディスプレイ設定を開き"カラープロファイル"の設定で指定しておきます。

まずは前回の記事で解説した「デフォルト設定の"sRGB"のプリセットを使用した時のプロセスを"Color Manager for LightWave 3D"で置き換えた設定」をベースにします。

そこから、変更するのは後処理ターゲットプロセスの最後の部分になります。

細かく解説します。

出力されたリニアイメージに対し"Destination"で"ICC Profile File"を選択します。"Profile"を押してエクスプローラーからローカルに保存されているキャリブレーションしたモニターの"ICC"プロファイルを選択します。"ICC"プロファイルには色空間と共にガンマ値も定義されているため出力された時点でガンマ値変換も完了しています。そのため次のTransfer Curve"Input Transfer Curve"「linear」+"Output Transfer Curve"「linear」="linear"にしてデータは素通りさせます。

出力された「モニタの"ICC"プロファイルで定義された色空間とカンマ値のデータ」を「モニタの"ICC"プロファイルで定義された色空間とカンマ値に設定したモニター」に表示しますLightwaveのビューでは"リニア"となり正確な"sRGB"の色で表示されます。

"ICC"プロファイルで行われている処理

"ICC"プロファイル内では入力されたRGB値を一度"Lab色空間"*1の値に変換し、そこから"ICC"プロファイルで定義された色空間のRGB値に変換して出力します。"ICC"プロファイル内には"vcgt"という項目があり、そこにガンマ値に関する定義も格納されているため出力された時点でガンマ値変換も完了します。

参考

blog.livedoor.jp

ディスプレイのICCプロファイルの場合は、vcgtというエリアがあり、ここにハードウェア(装置)の特性を書き換えるデータが設定することができます。 具体的には、ディスプレイカード(ノートPCの場合はカードはありませんが相当の機能があります)にRGB値を電圧に変換するディジタル-アナログ変換装置があるのですが、ここに設定するべき値を記憶すると同時に、実際にハードに与えて、ハードの特性を変えてしまいます。 
ディスプレイ用ICCプロファイルは、その修正された結果のハードウェアの特性を記録し、カラーマネージメントの機能はこれを参照することにより正しい色味を表示します。

home.a02.itscom.net

■印刷媒体を想定したAdobeRGBの色空間を使った使用例

この章では印刷媒体向けの素材の制作を想定してColorManagerを使いLightwave"AdobeRGB"色空間で作業をする設定について解説します。

印刷媒体では最終出力で"CMYK"色空間が使用されます。"CMYK"変換を想定した素材を作る際、"sRGB"色空間より色域の広い"AdobeRGB"色空間を使用したほうが再現出来る色のカバー率が高いため"CMYK"変換後に色が想定と違ってしまうリスクが減らせる…そうですが自分は映像畑の人間なので実践したことはありません。使用しているモニターが"AdobeRGB"に対応しているためそのような想定で設定を行ってみます。

参考

omoide-photo.jp

前提として使用しているモニターが"AdobeRGB"の色域に対応している必要があります。そのうえで"sRGB"のときと同様に事前に"AdobeRGB"の色空間に合わしてキャリブレーションし、"icc"プロファイルを作成しておきます。

画像編集パネルに読み込む画像も"AdobeRGB"で作成しておきます。

設定は以下のようになります。基本的には"sRGB"になっていた部分を"AdobeRGB"に変えるだけです。今回はオブジェクトの色に反映させる"Nodal Sarfaces""Nodal Lights"の挿入位置も追加してあります。

前処理ターゲットのプロセス

細かく解説していきます。

"画像編集"パネルで「"AdobeRGB"色空間で制作した画像」を"RGBカラースペース""Linear"を選択して読み込むことで画像のガンマ値は無変換で"Color Manager"へ送ります。"Input Transfer Curve""AdobeRGB"はありません。これはおそらくAdobeRGBに設定されているガンマ値がsRGBと同じ"2.2"なためです。そのためここは"Gamma"を選んで下に現れる"Gamma"の入力BOXに値"2.2"を入れます。*2

"Input Transfer Curve"「Gamma(2.2)」+"Output Transfer Curve"「linear」=Gmma2.2(位相反転)"伝達関数" (transfer function)を与えてグラフが"linear"になる値に変換して出力します。出力された"リニア入力データ"に画像が作られた時の色空間と同じモノを"Source"で指定してLW内部に送ります。(AdobeRGB)"LW内部"で扱う色空間を"Destination"で指定します。今回は"AdobeRGB"です。

オブジェクト色のプロセス

"カラーピッカー""ライト"の選択色は"AdobeRGB入力データ"として扱われます。これはこのフローの帰結としてAdobeRGBに設定したLightwaveを使い、AdobeRGBに設定したモニターで色を見ているためという円環構造です。CS設定では"8bitファイル"と同様に"カラーピッカー""ライト色""Linear"に設定してガンマ値は無変換で"Color Manager"へ送ります。"Input Transfer Curve"「Gamma(2.2)」+"Output Transfer Curve"「linear」=Gmma2.2(位相反転)の"伝達関数" (transfer function)を与えてグラフが"linear"になる値に変換して出力します。

後処理ターゲットのプロセス

"LW内部"で扱う色空間を"Source"で指定します。前処理ターゲットの"Destination"で指定した"AdobeRGB"を指定します。"Destination""ICC Profile File"を選択します。"Profile"を押してエクスプローラーからローカルに保存されている"AdobeRGB"キャリブレーションしたモニターの"ICC"プロファイルを選択します。Transfer CurveはICCプロファイルで設定されているので"Input Transfer Curve"「linear」+"Output Transfer Curve"「linear」="linear"にしてデータを素通りさせます。色空間とガンマ値が"AdobeRGB"のデータとして出力されました。

ビュー表示のプロセス

「"AdobeRGB"のデータ」が「"AdobeRGB"表示に設定したモニター」に表示されます。"Gumma2.0"+"Gumma2.0(位相反転)"="Linear" になりLWのビューでは色が想定した正しいもので表示されます。

AdobeRGBの作例

下の画像は"AdobeRGB"の写真にLightwaveで合成用のオブジェクトを作成し素材出しをした後にAfterEffectsで合成したものです。写真を背景画像として読み込む場合にColorManagerを使えばLightwaveのビューでも"AdobeRGB"の色で表示されるためオブジェクトの色を合わせやすくなります。

オブジェクトの色を合わせる場合は"Target""Nodal Surfaces""Nodal Lights"を使用します。

色を変える場合は"ColorManagerSwatch"ノードに"ColorTool"ノードを繋いでそちらから変更します。

■HLG 出力用の Rec.2100/2020 作業色空間

プラグイン配布サイトでDLできる"高度なセットアップ例"を読み解いてみます。配布サイトの最下部に"HLG"出力用の"Rec2100/2020"*3と比較対象用にLightwaveネイティブ設定による"sRGB"のサンプルシーンファイルがDL出来るようになっているので確認してください。(シーン内で使用しているプラグインが見つからないという警告が出る場合は同サイト内から入手してください。)

Color Manager

※大変残念ですがこのプラグインを配布してくださっていたDenisさんのサイトは2023年9月6日を以て閉鎖されました。(2023,10,17追記)

"HLG"*4"HDR"の規格の1つで放送用に従来の"HDR非対応受像機"でも表示できるように下位互換性を持たせたものです。サンプルシーンでは最終出力が"sRGB"に設定されていますが互換性を保って表示されるためsRGBモニターで出力を確認しても問題ないと思われます。もしもお持ちのモニターが"HDR"に対応していれば、最終出力部分の設定を変更すれば"HDR"表示の結果を確認することが出来るはずです。

残念ながら自分が使用しているモニターは"HDR"に対応していないため、"sRGB"での表示確認のみを行いました。

サンプルシーンの設定解説

基本的には"sRGB"の設定と同じですが、Lightwave内部で扱う色空間が"Rec.2020/Rec.2100"に変更されています。(ここから正しくsRGBでモニターに表示するにはこの記事冒頭で行ったキャリブレーションしたモニターiCCプロファイルの設定を追加する必要がありますが、本章ではこのままサンプルシーンには手を加えず解説を行います。)

※サンプルシーンの疑問点

"Rec.2020/Rec.2100"用のサンプルシーン内に読み込まれるテクスチャには"Target""Texture Image"の他に"Custom 1"が使われているモノ(BBYDMap_Cust1.png)があるのですがこの設定のTransfer Curveの項目が"Input Transfer Curve"「Gamma(2.2)」+"Output Transfer Curve"「sRGB」となっており、この組み合わせでは意味を成さないと思うのでおそらく"Input Transfer Curve"「Gamma(2.2)」+"Output Transfer Curve"「Linear」=Gamma(2.2)(位相反転)が正しいのではないかと考えています。

前処理ターゲットのプロセス

細かく解説していきます。

「sRGB色空間で制作した画像」"画像編集"パネルでテクスチャとして読み込んであります。(OpenEXRのテクスチャはHDR色域の色がリニアで保存されているため"RGBカラースペース"が"Linear"で読み込んであり。ColorManagerの設定もされていません。)"RGBカラースペース""デフォルト"なので"CS"設定の"Linear"を踏襲して画像のガンマ値は無変換で"Color Manager"へ送られます。"Input Transfer Curve"「sRGB」+"Output Transfer Curve"「linear」=sRGB(位相反転)の"伝達関数" (transfer function)を与えてグラフが"linear"になる値に変換して出力します。"リニア入力データ"に画像が作られた時の色空間の"sRGB""Source"で指定してLW内部に送ります。"LW内部"で扱う色空間である"Rec2100/2020""Destination"で指定します。

オブジェクト色のプロセス

"カラーピッカー""ライト色"で選択した色が"sRGB"データとして入力されます。"CS設定"が"Linear"なのでガンマ値は無変換で"Color Manager"へ送られます。"Input Transfer Curve"「Gumma(2.2)」+"Output Transfer Curve"「linear」=Gumma2.2(位相反転)の"伝達関数" (transfer function)を与えてグラフが"linear"になる値に変換して出力します。

後処理ターゲットのプロセス

"LW内部"で扱う色空間を"Source"で指定します。("Rec2100/2020")"リニア"レンダリングされたデータに"CS"設定の"表示""linear"を指定してデータを素通りさせます。"リニアイメージ"に出力用の色空間"sRGB""Destination"で指定します。"Input Transfer Curve"「linear」+"Output Transfer Curve"「sRGB」="sRGB"の"伝達関数" (transfer function)を与えてガンマ値変換を行い出力します。色空間とガンマ値が"sRGB"のデータとして出力されました。

ビュー表示のプロセス

「sRGBのデータ」「sRGB表示に設定したモニター」に表示されます。モニターは機材の特性として入力されたデータを「グラフがsRGB(位相反転)」になる値で表示します。"sRGB"+"sRGB(位相反転)"="Linear" になりLWのビューでは色が想定した正しいもので表示されます。

サンプルシーンの出力結果

下の2つは最終出力が共に"sRGB"での結果ですが、色の階調に違いが見られます。特に左右にあるライトが壁に落とす光の境界と中央のキャラクターの陰影の出方が分かり易いと思います。"Rec.2100/2020"の方がより繊細な階調になっています。

これはたとえ最終出力時に色域を狭めることになってもLightwave内部で広い色空間を使用しているほうが、処理中に色域外の色がクロップされて階調が失われる率が削減されるため、色空間の変換後も階調が保てるということだと思われます。

逆に"sRGB"の方はLightwave内部処理の段階で階調が失われていると考えられます。

Rec.2100/2020 working colorspace for HLG output

"correct" sRGB preset as reference

CS設定のカラーピッカーとライト色

"sRGB"のサンプルシーンの説明にある「参照として"正しい"sRGBプリセット("correct" sRGB preset as reference)」について、この"正しい"とは何のことかと調べたところ、どうやら"CS"設定の"カラーピッカー""ライト色"の項目を"sRGB"にしてあることのようです。Lightwave2020のデフォルトの"sRGBクイックプリセット"では"Linear"になっています。

この設定について、NewTecのフォーラムで議論になっているスレッドを見つけたのでリンクを張っておきます。

forums.newtek.com

このスレッドの中で、LW2018になったときに"CS"設定のクイックプリセットが変更されており「2018で内部システムが大幅に更新され、"CS"設定にあった既知の問題も解決したためにプリセットが望ましいものに変更された。"sRGB"にする設定は過去verのLWシーンと互換のためには必要だが、そうでなければ何らかの不利益がある」という意見と「"Linear"は選択した色がそのままレンダリングに使われ、"sRGB"は選択した色がlinearに変換されてからレンダリングに使われる。だけで結果は変わらないので好みや"RGBを数値で指定する"作業の必要性などで選べば良い」という意見があり結論は出て無さそうでした。

個人的には"sRGB"にしたほうが色が選びやすいとは感じます。

■ACES

ColorManagerのプロファイルでは"ACES"も選べます。"ACES"は異なる色空間を持つ規格で作られた素材同士に互換性を持たせる事を目的に作られたカラーエンコーディングシステムです。

試しに前章で紹介した"Rec.2100/2020 "のサンプルデータを"ACES"に変更してレンダリングしてみたところ、"Rec.2100/2020 "のものと視認では差異が見つけられない結果になりました。

"ACES"はあらゆる色空間を包括するために大変広い色域を持っています。前章で解説した"Rec2100/2020"も広い色域を持っていますが、"ACES"はあくまで中間ハブとして交換と作業用空間を目的に作られているため最終出力には使われません。(と、言う認識で合ってると思うのですが間違ってたらすみません。)主に実写素材と合成してフォトリアルな外観を得たいプロジェクトで使われるようです。詳細な解説があるサイトのリンクを張っておきますので詳しくはそちらを御覧ください。

www.chaos.com

chrisbrejon.com

digitallooklab.web.fc2.com

ameblo.jp

cgworld.jp

https://www.logoscope.co.jp/wp-content/uploads/2020/05/20170127_MOMAT_Digital-Arichive-Symposium.pdf

PDF配布サイト

www.logoscope.co.jp

■まとめ

今回はColor Manager for Lightwave3Dを使って実際にカラーマネージメントの設定を行ってみました。設定項目が多く複雑なため当初は悩むと思いますが、一度理解すれば手順とやる事は決まっているので使いこなすことは出来ると思います。ただ、やはりプラグインという形で強引に実装されているので、手数の多さは否めません。Lightwaveにはネイテイブとしてカラマネ機能を実装して欲しかった…と、思う気持ちが湧いてきます。それでも現状でこのプラグインを使うことでACESやHDR等、今後必要性が高まるであろう規格にも対応でき、Lightwaveの寿命を少しでも伸ばす事ができると思います。このような素晴らしいプラグインを開発して頂いたDenis氏には大変感謝いたします。

 

配布サイトの冒頭で「Color Managerノードを使ったローカルなアプローチ」というのが使い方の説明として言及されています。この点について自分は使い所も含めて理解しきれていないため今回はあまり取り上げませんでした。もし今後理解できた場合は改めて記事にしたいと思います。

■参考

www.dic-color.com

www.artplusjapan.com

home.a02.itscom.net

*1:人間の視覚を近似するよう設計された知覚的均等性を重視した色空間 Lab色空間 - Wikipedia

*2:"sRGB"を選んでも構いませんが、厳密には完全に一致するものではないようです。今回の検証でも結果に少し違いを確認しています。比較して良い方を選んでください。

ガンマ2.2とsRGBの違い – Shade3D Knowledge Base

*3:Rec. 2020 - Wikipedia

*4:ハイブリッド・ログ=ガンマ - Wikipedia