ガンマ補正とリニアワークフロー

Category : Tips
DAZ Studio 3(以下DS3)やCarraraのレンダリング設定にはGamma(Correction)という項目があります。以前から私はこれをただのポストワークとしての色調補正だと思っていました。DSでは何も考えずにこの数値を上げるとレンダリング画像の中間調が持ち上がって白っぽくなるだけですしね。
ところが、以前寄せていただいたGA-jさんのコメントから、これがリニアワークフローを実現するための設定なのだという事がわかりました。

私なりに理解した事をまとめますと、通常私たちはガンマ2.2のかかったモニタで作業しているわけです。ガンマについては「ディスプレイガンマ」で検索してみて下さい。しかし3DCGソフトが内部で計算している空間(colorspace)はガンマ1.0なのです。極端な言い方をすると、私たちはガンマ1.0の画像として出力されたものを、ガンマ2.2の画像として扱ってしまっているということなのです(実際はテストレンダを繰り返してライティングの調整をするわけですから、そんなにまずい事にはなっていないと思います)。

そこで登場するのがGamma Correction(ガンマ補正)という設定です。
ここにはユーザーが使っているモニタのガンマ値を入れます。すると、3DCGソフトはレンダリング結果をモニタの特性に合わせて色調補正してくれます。これによって、3DCGソフトが計算した真の色を私たちも見る事ができるという仕組みです。

今回はPoserコンテンツを扱える低価格3DCGソフトでのリニアワークフローがどういう状況になっているかを私なりに調べてみました。かなりコアな話ですよ~。
今回の記事は私も研究中のものなので、誤解している内容があるかもしれません。ご了承の上、お読み下さい。

ガンマ補正 SS

※Poser 8の対応について訂正しました。

■ガンマの実情

モニタにガンマが掛かっている理由は、最初のテレビの電気的特性だったとか、人間の目の特性に合わせてあるためとか言われています。モニタの調整具合で変動しますが、Windowsではガンマ2.2で、Macも現在はそうです(MacOSX10.6 SnowLeopard以前は1.8)。コンパクトカメラのカラープロファイルやモニタのスペックでよく聞くsRGBというのもガンマ2.2相当になります。
カラープロファイルとは、その画像が作成された色空間(color space)を示すものです。例えば、ガンマ2.2のモニタで描いた画像はガンマ2.2のカラープロファイルを持ちます(それがカラープロファイルとしてファイルに埋め込まれることは稀ですが)。また、Camera RAW画像やHDR画像はガンマ1.0(リニアデータ)です。

リニアワークフローを行う上で重要なのは、使っているモニタのキャリブレーションです。これを先にやっておかないと始まりません。
自分のモニタのガンマ値がいくつなのかを確認するには、「おれディスクロージャー - ガンマ補正の話」のチャートが分かりやすいと思いました。
この記事ではモニタガンマを2.2として話を進めていきます。


■リニアワークフローの例

リニアワークフローをすれば何が良くなるの?という疑問は当然あると思います。
答えとしては、物理的に正しいライティングができるようになる、という事です。

例えば、球体に真横から平行光源を当てたとします。
上がガンマ補正をしない状態で、下がガンマ補正をした状態です。
ガンマ補正 ライティング比較 球体
条件を考えれば、球体の半分までライトが当たっている下が正しいと言えます。

今度は、平面を点光源で照らした状況を考えてみましょう。
上がガンマ補正をしない状態で、下がガンマ補正した状態です。
ガンマ補正 ライティング比較 点光源
ガンマ補正をすることで、光源に近い部分から外へ滑らかなグラデーションが描画されます。

3DCGによる画像の独特のクセが、リニアワークフローを行うことによって一つ無くなる、と考えられます。


■リニアワークフロー

「リニア空間と物理的に正しいライティング」とそのスライドデータを読み、よりリアリティのあるライティングをするためにはリニアワークフローを取り入れる事が必須だということが私にも分かりました。3DCGにおける理想的なリニアワークフローがどういうものかと言うのは、Blender2.5のカラーマネージメントの紹介記事(和訳はコチラ)のパイプラインの図がその通りのものだと思います。この図で重要な点は、「Gamma to Linear」「Linear to Gamma」という部分です。前述の通りPCのモニタで調整された画像はガンマ2.2を持ちます。これはテクスチャやカラーセレクタによる色指定も同じです。

そこでその画像や色データをレンダラーに渡す時に必要なのが「Gamma to Linear」という処理で、ガンマデータをリニアデータへ変換します。これを「リニア変換」とします。
そしてレンダラーから出力された画像には「Linear to Gamma」という処理が加えられ、リニアデータからガンマデータへ変換されます。ここがGamma Correction「ガンマ補正」というわけです。
この「リニア変換」「ガンマ補正」を備えた3DCGソフトなら、リニアワークフローを実現できるという事になります。

余談ですが、リニアワークフローは3DCGだけのものではありません。
画像をリニアデータに直してから拡大縮小をするソフトというのもありました。より高品質な処理ができるようです。


■ガンマ補正

「ガンマ補正」はリニアデータをガンマを持つモニタへ色調を変えずに映すための補正値で、使用しているモニタのガンマ値を入力します。
レンダリング設定でGammaという項目がある3DCGソフトは多いと思います。例えばここに2.2という数値を入れると、実際にはモニタのガンマを打ち消すために、その逆数(1/2.2=0.4545)でレンダリング画像に対して色調補正を行うわけです。


■リニア変換

自分の使っているソフトがリニアワークフローを保証しているかどうかを調べるにはどうすればいいのでしょうか。「ガンマ補正」に関しては、レンダリングの設定に項目があるのですぐに分かります。「リニア変換」、特にカラーの変換については、おそまきさんの「(続) 3DCGとガンマ調整 - 色合歪み編」を参考に確認方法を考えてみました。

確認したいソフトでRGB(255,128,0)のオレンジ色の物体をシーンに配置します。そして白100%の平行光源を当てて(アンビエントライトは真っ黒にするのが望ましいです)、ガンマ補正2.2に設定してレンダリングします。
ガンマ補正 リニア変換のありなし
リニア変換が働いていなければ左の様に物体の色がレモン色へ変化してしまいます。
リニア変換が働いていれば右の様に物体の色はオレンジ色のままです。

※この項には関係ありませんが、ハイライト周辺の色の変化がガンマ補正によって無くなっている点も要注目だと思います。


■ソフトごとの対応

では、Poserコンテンツを扱える3DCGソフトではリニアワークフローができるのか?調べてみました。

 ・Poser 7
ガンマ補正さえできません。

 ・Poser 8
レンダリングデータ(おそらくHDR)をLDRへ変換する際のトーンマッピングのパラメータを調整することができます。

 ・Poser Pro / Pro 2010
可能?
Render設定でGamma Correctionを指定すれば、入力されるテクスチャをガンマ補正の値を持つものとして扱い、リニア変換をしてくれます(Smithmicro「Gamma Correction and Poser Pro」)。さらに、Textureノードのテクスチャ選択ダイアログで個別にガンマ値を指定する事もできます。カラーセレクタによる色のリニア変換ができるかどうかは不明です。

 ・Shade
おそまきさんが公開されている「DeGamma:色空間線形化スクリプト」で可能に。
この記事を書くにあたって大変参考にさせていただいたサイトです。「3DCGとガンマ調整」の記事は分かりやすく噛み砕いて説明されていて読みやすいです。DSからShadeへデータ変換するShade用プラグインも公開されています。

 ・CINEMA4D
DeGammaというサードパーティープラグインで可能になるようです。
また、R12からはプロジェクト設定にそのまま「リニアワークフロー」というオプションが追加されています。

 ・Carrara 8
可能です。
Render設定のGamma Correctionに値を入れるだけで、すべてCarraraにお任せで大丈夫です。ただ、初期設定のAmbient Brightness 20%は明るすぎます。また、SSSシェーダーは設定しなおさないといけないようです。

 ・Bryce 7
ガンマ補正が可能です。ただし、補正値を設定するところが見当たりません。Onにしてレンダリングするとガンマ1.6に補正されるようです。

 ・DAZ Studio 3
ガンマ補正のみ可能です。


■DAZ Studioでのリニアワークフロー

DS3ではガンマ補正はできるものの、リニア変換はしてくれません。しかし、将来的にそれを実現させるための種はあるのです。DSに読み込まれたテクスチャは、tdlmake.exeというプログラムで独自形式(中身は8bitTIFF)に変換され、レンダラーに渡されます。tdlmakeには変換元の画像ファイルの色空間を指定するオプションがあり、それを使えばテクスチャのリニア変換が可能だと思われます(3Delight8.5マニュアル「Texture Mapping in Linear Space」(リンク切れのため10.0のマニュアルで代用))。
また、DAZフォーラムでシェーダー開発者へ向けてGreggoryPeccary氏よりガンマ補正の提言がなされています。

さて、現状のDS3でリニアワークフローを実現させるためにはどうするのか、考えてみました。
「ガンマ補正」にはRenderタブのGammaに2.2(ディスプレイガンマを入れます)を指定するだけです。
しかし「リニア変換」は手作業でするしかありません。あらかじめ用意したリニアデータをDSへ読み込んでやるのです。

テクスチャのリニア変換にはフリーの画像ビューワーとして有名な「IrfanView」のBatch Conversionでガンマ補正0.45を指定して変換しました。これにより中間調を下げた暗い画像になります。変換が必要なのは基本的にディフューズテクスチャと環境マップ用のテクスチャだけです。
問題はカラーセレクタで色を指定している部分で、これも変換が必要かどうかは判断が難しいです。サーフェイスの色としてカラーを指定するDiffuse ColorとAmbient Colorは変換が必要でしょう。しかし強度として使っているカラーは変換の必要は無い場合が多いです。ただしご注意下さい!!突き詰めすぎて、50%グレーは本当に50%グレーなのかとか考え出すと夜眠れなくなります(゚_゚;)

実際にカラーをリニア変換する方法ですが、RGBの各値x(0-255)に対してガンマ2.2からリニアに直すには

 (x / 255) ^ 2.2 * 255

という式を使います。
この式で変換するとRGB(255,128,0)の色はRGB(255,56,0)に変化します。

前準備を済ませ、V4フィギュアをレンダリングしてみました。
左から、(a)ガンマ補正を全く考えないでレンダリングしたもの、(b)ガンマ補正2.2でレンダリングしたもの、(c)手作業のリニア変換をしたマテリアルをガンマ補正2.2でレンダリングしたもの(リニアワークフロー)、になります。
ガンマ補正 V4bikini a1sガンマ補正 V4bikini bsガンマ補正 V4bikini c1s

(b)は単純に(a)の画像にガンマ補正2.2を実行した形になります。
(c)はなるべく色調が変わらないように努めましたが、それでも少し変わってしまいました。
(a)と(c)を比較すると、ちょっとコントラストが低くなっただけ?と思われるかもしれません。これは、ライト設定を全く同じにしているのも原因の一つだと思われます。この状況では、ちょっと暗部が持ち上がったぐらいしか明確な差は無いのです。

ところが、ライトの設定で差が出始めます。次のレンダリング画像は、上のものからメインライトの強度を2倍にしたものです。
ガンマ補正 V4bikini a2sガンマ補正 V4bikini c2s

リニアワークフローを行わなかった左の画像はメインライトが当たっている部分が白とびしてしまいました。しかしリニアワークフローを行うことで、自然な感じで明るくなっています。

IBLライトを使ったレンダリングも試してみました。IBLライトのソースとして使われるHDR画像はリニアデータなので、リニアワークフローと親和性が高いはずです。

先ほどのシーンのライトをUberEnvironment2のKHParkプリセット+Distant Light1灯に変えてレンダリングしました。
ガンマ補正 V4bikini ibl asガンマ補正 V4bikini ibl cs
Character:MH Rain for V4
Hair:Wet Hair
Costume:Bikini for She Freak V4
Shader:UberEnvironment2

本当のIBLライトはこんなのだったの?と驚くほど色調が変化します。また、プリセットそのままではきつすぎるライトも、許容範囲内に収まるようになります。ついでにAOの発生具合も心なしか自然になっています。

今回は無理矢理DS3でリニアワークフローを行ってみました。結果は理想的なものでしたが、手間がかかるのと、レンダリングしないと本来の色がわからないという点が問題です。さらには、リニアワークフローを考慮していないシェーダーも存在すると思われます。
ガンマ補正が実装されたのもDS3からですし、まだこれからという部分もあります。DS4にはリニア変換も実装!といけばうれしいのですが。
そういえばLuxRenderエクスポートプラグインではどうなるのでしょうね。



今回のツールと画像の素材はこちら

Bikini for She Freak V4

Wet Hair



Comment

こんばんは。
リニアワークフローを記事にして頂きありがとうございます!
リニアワークフローは原理はシンプルなんですが、いざやるとなるとツール(3Dソフト)が対応していないと、入力する素材の加工などがあり結構大変ですよねぇ。
記事にするのはさぞかし大変だったと思います。
それにしても記事中にあるライト強度2倍やIBLの結果を見ると驚きますね!

リニア変換は D|S に期待するところでもありますが、LuxRender Exporter のリリースの方が先になりそうですね。
LuxRender Exporter のビデオIntroduction to Reality 1.0(http://vimeo.com/13596578)を見る限り、割と手間いらずな印象を受けました。Runtimeのテクスチャをリニア変換しているように思えます。リリースが楽しみです^^

GA-jさんこんばんは。
いえいえ、私もサイトを紹介してもらってとても興味を持ったので、記事にしたんですよ。
リニアワークフローは、ガンマ補正を設定するだけであとはアプリケーション任せにできれば理想的ですよね。

LuxRender Exporterのその操作ビデオは見ていなかったので分からなかったのですが、たしかに設定でGamma2.2にしてありますね。ますます期待が高まります。
興味深いサイトをご紹介くださってありがとうございました。

おお!ガンマ補正ってこういう仕組みになっていたんですね!私もレンダリング後の明るさ補正ぐらいにしか考えていなかったんですが、これは大変参考になります。m(_ _)m

今週はちょっと時間がなくてあまりD|Sをいじることができませんでしたが、Bryceは放置して、こっちを試してみることにします。(;´∀`)

とうふさんコメントありがとうございます。
DSでリニアワークフローを行うのは結構手間なのであまりおすすめしませんが、完全に対応しているCarraraや、おそらく対応しているRealityプラグインなどを使う時に思い出してもらえると、より良いレンダリング結果が得られると思います。
DSで行う場合は、SkinライティングモデルやHSSなどサーフェイスに色が加算されるシェーダーを使うと、ライトが当たっていない部分の色が浮いてしまいやすいのに気を付けて下さい。

勉強になりました

遅まきながらあけましておめでとうございます
リニアワークフローのことを全く知らなかった自分にとっては非常に勉強になりました。
しかし、結果を見てみるとDSはこれからとして、Carraraはやはりレンダラーとしては優秀ですね。(そんな機能知りませんでしたが)
これからはガンマ補正とか注意しながらやってみます。
ありがとうございました!

Re: 勉強になりました

Arcxさんあけましておめでとうございます。
私もガンマ補正がこんな意味を持ってたなんて、最近まで知りませんでした^^
Carraraのレンダリングと言えば、少し前のDAZ3Dからのニュースレターで紹介されていたこのショートフィルムがすごいですね。
http://vimeo.com/17631561
この次のビデオ「Behind the Scenes」を見ると分かりますが、建造物などはCarraraのレンダのようです。こんなリアリティのあるシーンも作れるんだと驚きました。

見てきましたよ、凄い!
もろCarraraの画面が映ってて、本当に自分が持っているソフトと同じなのか疑ってしまいました。
自分はもっぱらレンダリングぐらいしか使ってないですが、このレンダラがD|Sに搭載されれば鬼に金棒な気がするけど、無理でしょうね。(構造が大きく異なってそうだし)
D|Sと言えばRealityが販売されてますがあれは64bitじゃないと真価を発揮できないみたいですし、32bit用のレンダラ欲しいですね。
非公開コメント

著書
カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 マテリアル DSシェーダ ライト DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender ダイナミッククロス スクリプト Genesis2 ShaderMixer セットアップ Download レタッチ カスタマイズ トゥーン バージョンアップ SSS Photoshop ウェイトマップ NGM ファー ERC D-Form Miki2 IDL 大気 物理シミュレーション M4 カラーコレクション ボリューム Terrain Genesis3 パーティクル モーフセット V5 アナグリフ カメラ インスタンス RAMDisk ロボット Genesis8 3Dプリント GIMP SLG V8 ダイナミックヘア K4 Python Linux 日本語訳 モーションキャプチャ Hexagon 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター