2012年8月8日水曜日

リニアワークフロー 質感設定用の環境の構築

合っているか分かりませんが、リニアワークフローの質感調整用(LookDev)のシーンの構築の方法の一例になります。ブログの記事にした意図としては、教えるというよりは情報をシェアしたいという気持ちで記事にしました。ですので、やり方としては正解ではないですし、 他のいい方法や違うやり方をしている方がいらしたら教えていただけると嬉しいです。

リニアワークフローを導入すると、必然的に色の基準がだいたい決まります。
(リニアワークフローでなくても色の基準はあるのですが、リニアワークフローは特に基準を設けた方が何かといい事が多いので)

X-rite カラーチェッカーがその基準となります。
実写ベースでは色の検証等にx-riteカラーチェッカーが頻繁に使われます。


RGBの色の定義についてはこちらのサイト等が分かりやすいでしょうか?

工学系(CIE表色系) http://homepage2.nifty.com/studio_AURK/ccconv/Color/cie.html


RGBの値がどのように定義されるのか解説されています。色は光(波長)なのですが、RGBに変換するためには少し工夫が必要なようです。光の波長を一度、人間の目の特性に基づいたXYZに変換(CIE XYZ)。その後、XYZを任意のカラースペースのRGBに変換します。つまり、手順や方法が同じであれば、どんなカメラで撮影してもCGでも大体同じ数値になるという・・・理想。


そして、このカラーチェッカーの値ですが、作業する色空間によって値が異なります。
今回はsRGB色空間(リニアライトスペース)用のカラーチェッカーになります。

(ネット上のリニアワークフローの情報の多くは主にsRGBの色空間を前提としているため、ガンマの話ししか出ていないことがほとんどですが、ガンマと色空間は本来別々で考えた方がいいと個人的には思います。特にカメラで撮影されて現像された素材のカラースペースは何になるのか?この辺り日本の現状のVFXの制作環境では相当曖昧だと思います。最近のカメラはsRGBより大きな色空間を持っているのもあり、現像する際には注意が必要になります。)


x-riteの公式サイトにsRGBの数値が出ているのですが、しっかり確認していないのですが恐らくガンマ補正がかかった整数の数値という事と、最近のALEXA、F65、REDなどは容易にACESのカラースペースで現像出来るようになって来ている。各メーカーがちゃんとしたACESの色になる様に開発を頑張っているなどの理由でACES基準で作成してみました。

(sRGBもちゃんとした定義はあるのですが、カメラのメーカーによって味付けのようなものがされており独自の検証を必要としたりします。)

(カラーマネジメントがやり易いので、ALEXA、RED、F65等はVFX制作にとって非常に魅力的なカメラです。また、REDはHDRxという録画モードがあり、2段階ではありますが動画で露出違いの撮影が可能。これは時間がないロケ現場でミラーボールなどを撮影する際に従来の方法に比べて高い品質が期待出来る)


CGで用意したカラーチェッカーはAMPASが用意している理想的なACESのカラーチェッカーをベースに ACES→XYZ→sRGBと変換して作りました。

(余談ですが、あるカラースペースを別のカラースペースにする際にもガンマ補正がかかっている場合はリニアライズする必要があるようです。 カラーマネジメント目線から見てもデータをリニアで扱う方が便利なようです。例:ガンマ補正がかかったsRGB→リニアライズ→XYZ→ 他のカラースペース)

それをベースに下の段の一番右(Black) 、右から3番目(Neautral 5)、一番左(white)の値を拡散反射光に持つ球体を作成します。

合っているか分かりませんが、sRGB(Linear)の時の各色の数値は以下のものになります。

Black            R 0.03836   G 0.03741   B 0.03586

Neautral5      R 0.21179   G 0.20129   B 0.18591
White            R 0.90918   G 0.86426   B 0.78467

後は、出来るだけ精度の高いHDR素材を入手し、出来るだけ正しい方法でIBLをしてあげます
。(出来るだけ線形性が正しく、色空間が作業する色空間と合っているもの)。今回用意したHDRの精度は分かりません(笑)それでも、ここまでルックを統一出来るというのが分かりやすいので素材集の奴をそのまま使ってみました。実際にHDRが作られた時のカメラの露出や作り方等も分かっていれば、そのHDRの露出が分かるので 、その他の露出違いの素材と合わせる際などに露出を合わせるのも非常に簡単になります。

レンダリングした結果は以下の感じです。


カラーチェッカーを基準にHDRの露出を若干調整しています。

 この環境下でシェーダーの設定を行えば、そのシェーダーは一応物理的に正しいと言える質感になり、後は実写の現像の工程(露出やホワイトバランス、カラコレ等)が分かっていれば、それと同じ処理をCGにも施せば、結構馴染んだ状態にわりと簡単に出来ます。また、コンポジット時もガンマや露出、ブラックポイント、ホワイトポイント、トーンマッピング等も実写のカラーチェッカーとCGのカラーチェッカーを合わせて行けばれば良いので、馴染ませの労力が大幅になくなり、生産性の向上とアーティストはよりアーティスティックな作業に集中出来るようになります。

また、テクスチャー等の色のバラつきなどもなくなります。白い物が白く見えない場合のアプローチとして、「色をもっと白くする 」「シーンの光を強くする」「露出を上げる」などあり、基準がないとオペレーターによってバラバラの設定になりますが、白色が定義されているので、触るのはライトや露出
となりモデルデータとしての使いやすさも格段に上がります。

カラーマネジメントがきちんとされればされる程、リニアワークフローの精度は高くなっていきます。

そして、出来ることならこれらの事はアーティストにはあまり考えさせないワークフロー、パイプラインが構築されていると好ましいです。

今回のポイント:リニアワークフローを導入すると色の基準が出来る。

実際は色々精度の問題などあり、ボールの色はそれぞれ0.03(3%) 0.2(20%) 0.85(85%) とか結構適当でも普段は特に問題を感じていません。また、中間色のグレーは18%グレー(0.18)にしたりする時もあります。

今回作成したカラーチェッカーを載せておきます。元データはexr(16bti half float)なのですが、ブログに掲載出来ないので8bitのpngです。精度が若干落ちています。また、ガンマ補正をかけていないデータ(リニア) なので取り扱う際には注意して下さい。

0 件のコメント:

コメントを投稿