« OFISの使い方 - 2: メタセコ ・エキスポート ⇒ SHADE インポート | トップページ | OFIS v1.1 アップデート »

2010/02/26

OFISの使い方 - 3: 3DCGとガンマ調整

モニターのガンマの話やそのための画像のガンマ補正の話は
あちこちのWebサイトにあるので、ここでは 「3DCG とガンマ」の話に限ります。

能書きはあとまわしにして、使用前・使用後の結果を比較してみましょう。

例は、使い方 - 2 でも取り上げた「かこみき」さんの公開作品から、今度は「メイドさん」で、、、
※この作品を SHADE で再現するには3つの追加編集が必要なので最後に書きます。(v1.1で対応したため追加編集不要)

《入力ガンマ復元 無し》 (入力データのガンマ ≒ 2.2 )
  出力ガンマ 1.0 G2210 G2222 出力ガンマ 2.2
《入力ガンマ復元 有り》 (入力データのガンマ ≒ 1.0 )
  出力ガンマ 1.0 G1010 G1022 出力ガンマ 2.2

左上が「ガンマ調整一切無し」のレンダリング画像です。
このままでは暗すぎるので、もしも出力ガンマ補正を掛けたとしたら、その右の画像のように全体が白く霞んでしまいます。
なので普通は出力ガンマ補正を使わず、影の黒ずみを消そうと環境光(周囲光)を上げたり、大域照明を使ったり、
照明数を増やしたり、というのが誰もが試みることでしょう。
しかし大変な割りには報いの少ない作業と言えます・・・

一方、左下は「入力ガンマ復元のみ」を行った画像です。
コンピュータ内では既に正常になっているのですが、いまこれを見ている目の前のモニターが「ガンマ」という悪さをしていて、
中間トーン部が(あたかも)暗い絵のように見せかけています。
では、どうしたらよいか? 悪さをしているモニターの裏をかいてやれば良いわけです。
そこで絵の方の中間トーン部がカーブを描くように、わざと明るく補正してみます。
するとその右の画像のように、コンピュータ内の絵を、ようやく正常に見ることができるようになります。
これが「出力ガンマ補正」です。

つまり、上の4画像の左列はコンピュータ用、右列が(モニターで見る)人間用。
コンピュータ用で見ると上下画像の差は僅か、人間用で見れば差は歴然。
この上下段の画像の差は「入力ガンマ復元」によって生じたものです。
入力ガンマ復元」とは、彩色やマップ画像を扱う人間用に明るさがアップされてしまっている材質の色を、(コンピュータが複雑な
光の影響を計算するために)コンピュータ用の明るさに戻してやる処理、であることが今見た関係からわかりますよね。

では人間用の右上の画像から出発して、材質の色を適当な暗さに手動で調整したらどうなのか?
材質窓の色表示がモニターの干渉を受けてしまっているので、「適当」の度合いを探すのは大変ですし、明るさ毎に暗くする割合は違いますし、材質は沢山ありますし、おまけに顔とかはどうします?画像マップですよ、、、
じつはこの OFISスクリプトを書いた一番の理由がそれです。もう手動調整→部分レンダリングの繰り返しに疲れた(笑)

というわけで、「入力ガンマ復元」、「出力ガンマ補正」、いずれもすごく重要です。

この2種の調整を行っていれば、照明を変えたり、カメラアングルを変えたりしても、もう何も怖くない。
意図通りの結果が得られて、様々な工夫がそれなりの成果を生み出してくれることでしょう。きっと・・・
例として、野暮な「ガンマ」の説明材料にしてしまった「メイドさん」に、お詫びの印に豪華なイタリア旅行をプレゼントしてみましょう。

背景写真:Futtaさんイタリア編 Maid in Italy ←クリック拡大
       立体街角セット: 左・右・下・正面に画像を UVマップ。作った青空と太陽で大域照明。
        SHADEパス・パストレーシング。(左壁に落ちている影は作った太陽と壁によるもの)

でもやっぱりモップとバケツを持って掃除しちゃってますね><

それで思い出しましたが、この "Maid in Italy" は、OFISのガンマ調整オプションで「色合い不変」をオフにしました。
明るい箇所で色抜けして欲しかったからです。
何といっても地中海の澄んだ強い日差しですから、、、

(続) 3DCGとガンマ調整 - 明暗歪み編

--------------------------
用語:(このスクリプトやその説明では以下のようにガンマ処理を表現)
ガンマ補正:出力装置のガンマ特性の逆変換を色データに施す処理
ガンマ復元:ガンマ補正された色データを元データに(近似的に)戻す処理
ガンマ調整:上の両方

--------------------------
技術ノート: 以下 色 (R, G, B) の各成分は区間 [0, 1] の実数とする。
ガンマ復元(色合い不変版)
 (R', G', B') ← (R, G, B)・max(R, G, B)^(γ - 1)  (^はべき乗)
ガンマ復元(通常版)
 (R', G', B') ← (R^γ, G^γ, B^γ)  (^はべき乗)
ガンマ補正は、上の両式の γ 値を、値 1/γ に換える(OFIS では SHADE側機能の設定のみ)。
プログラミングでは、画像を扱う時にべき乗計算が遅いので、渡された γ 値について必要階調に区分した
変換テーブルを最初に作っておき、テーブル参照で全データを処理する。

--------------------------
「メイドさん」再現のための追加編集点v1.1で対応したため追加編集不要)
1) この作品には例外的に材質の自己照明(発光)が、かなり強く使われています。
  (ガンマの影響でしょうか?穏やかなモノトーン風タッチなので)
  『メタセコのOBJエクスポータは、この発光情報を書き出してくれません』
  そのため、メタセコの材質窓で「自己照明値」を「拡散光値」に加えて、「自己照明値」はゼロにします。(すべての材質)
2) 材質 wood のマップ画像が公開ファイルに入ってないので、マップ画像名欄をクリアします。
3) OBJエクスポート・インポート後、材質 tex_pech のレース部分が透明になりません。
  『メタセコのOBJエクスポータが、なぜか透明マップ情報を書き出してくれない・・・』
  そのためSHADEの材質 tex_peck で、以下の追加指定を行います。
   a) 透明度を 1 にする。
   b) 拡散反射マッピングを、その右から2番目のアイコンで2回コピー。
   c) 2番目のマッピングは「光沢1」かつ「乗算」。 (拡散反射は透明度と同画像なので乗算不要)
   d) 3番目のマッピングは「透明度」かつ「反転」。

|

« OFISの使い方 - 2: メタセコ ・エキスポート ⇒ SHADE インポート | トップページ | OFIS v1.1 アップデート »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/554431/47665277

この記事へのトラックバック一覧です: OFISの使い方 - 3: 3DCGとガンマ調整:

« OFISの使い方 - 2: メタセコ ・エキスポート ⇒ SHADE インポート | トップページ | OFIS v1.1 アップデート »