background

ガンマのはなし その7

2011年07月24日(Sun)

11. 歪みとリアリティ

前回の検証で、3DCGソフトは人間の目に映る世界をレンダリングしているのではなく、物理的な光の量を図示していることが明らかになった。したがってレンダリング結果を私たちの感覚に近づけるためには、画像に人間の知覚という明るい歪みを与える必要がある。そして、それは決して「モニタガンマの逆数」などという、決め打ちできる値でないこともわかった。

そのへんをもうちょっと考えてみよう。

人間の目は明るい部分なら明るい部分、暗い部分なら暗い部分で可能な限り明暗を捉えようとする性質がある。カメラでいう露出調整、目が慣れるというやつである。目に入ってくる光の量にさほど明暗差がないなら、その範囲に感覚を集中させるのだ。グラフで考えてみると、通常感じ取れる範囲があったとして、その一部分だけがクローズアップされることになる。

110724-1

すると明暗差が大きい場合と小さい場合では、歪み方が異なることがわかる。

110724-2

つまり明暗差が小さいシーンでは、人間の目に加わっている「明るい歪み」は直線に近づいていくことになる。(すごい乱暴な理屈だけど、まあ考え方としてそんなもんだと思ってほしい)

従来のライティングでは、人間の目が捉えている明暗差を忠実に再現していることはまずない。現実の太陽光と室内光では100倍以上明るさが異なるが、そんな設定にしたらあっという間に白飛びを起こしてしまうからだ。なのでシーン内の明暗差は狭い範囲に押さえられ、必然的に加えるべき歪みもガンマ0.5より線形(1.0)に近くなる、ということになる。

逆に、従来のレンダリング手法でフォトリアリズムを追求したいなら、なるべくシーン内の明暗差を抑えた方がいいことになる。実際にそういう絵は散見されているはずだ。間接光も計算できるソフトで、写真から切り出した高解像度のテクスチャを使用しているのに、やたらと絵面が薄暗かったりするのはその方が人間の目に違和感が少ないからである。

レンダリング結果をモノクロにして、情報量を抑えるのもそういったテクニックの一つだ。日常的に目にする分、人はどうしてもCGの肌に違和感を覚えやすい。そこで色の情報を破棄し、陰影だけの情報にすることで違和感を抑えるのだ。だからレンダリング画像をモノクロにすれば、単純にリアリティは向上する。そうならないのはよっぽどライティングが下手か、映ってるものがリアルからほど遠い(形状やマテリアルである)かのどちらかである。

というわけで、従来の手法を使って人間の感覚に近づけるためには、白飛びが起きないよう全体のライトを抑え、レンダリング結果に中間値を持ち上げるような加工をすればいい。

と、いうようにまとめると「あれ? それって自分がいつもやってることじゃ……」と思った人は結構多いだろう。フォトリアルなどと銘打たなくとも、普通に「見た目の自然さ」を考えてシーン作りをしていれば、大抵の場合は経験的に似たような解答にたどり着いているはずだ。逆に、ノーレタッチに拘って画質調整をしない絵作りをしている人は、理屈から言えばその時点でリアリティをスポイルしていることになる。

12. トーンマッピング

さて、話をリニアなんちゃらに戻そう。このあたりからいよいよPoser 8の話になる。

レンダリング結果を自然に感じられるようにするためには、人間の知覚を模した歪みを加える必要がある。Photoshopならレベル補正やトーンカーブを使って中間値を持ち上げるわけだ。

110724-3

この処理を3DCGソフト上で行うのが、Poser 8から追加されたトーンマッピングである。名称はソフトによって異なることもあるが、おおむね処理としては、レンダリング結果にトーンカーブをかけるというものだ。Poserのトーンマッピングはレンダリングオプションで設定する。

110724-4

英語版ならTone Mappingに、None/Exponential/HSV Exponentialの三項目からなるリストボックスがある(日本語版でどう訳されているかは未確認)。適当に訳すと「なし」「指数関数」「輝度のみ指数関数」といった感じだ。ExponentialまたはHSV Exponentialを選択すると、指数部の値(の逆数)を指定するテキストボックスExposureが有効になる。ちなみに初期値は1.6。ExponentialとHSV Exponentialの違いは、ExponentialがRGBの各値にエフェクトをかけるのに対し、HSV Exponentialは輝度のみにエフェクトをかけるため、輝度や彩度が保持される点にある。

このトーンマッピング、適当に使ってみてなんとなくレンダリング結果が淡く薄くなったなあ、で終わっている人もいるかもしれない。というのも、普通のシーンでそのまま使っても、結果はレタッチソフトでレベル補正をかけたものと大して変わらないからだ。しかしもちろん、トーンマッピングの本来の機能はただ中間値を底上げすることではない。

トーンマッピングを使用するメリットを挙げてみよう。

  1. Poser内で処理が完結するので画像処理ソフトを起動する必要がない。
  2. 画像処理ソフトと異なり、RGB各256階調の画像データに対してではなくレンダリング直後の生の計算結果に処理をかけるため、階調飛びが発生しない。
  3. 256階調を超える輝度を256階調内に収めることができる。

この中で、最大のメリットが3番である。これがどういうことなのかを確認するために、次のようなテストシーンを用意する。

110724-5

テスト形状は拡散色が白で、拡散値のみを変化させている。鏡面値その他はすべて0。で、この形状に正面から色が白で強度が1のライトを当てる。拡散値が1を超えるものは白飛びしてしまって同じ白い色にしか見えないが、ライトの強度を下げればその違いがわかる。

110724-6

ここで再びライトの強度を1に戻し、トーンマッピングをExponentialにして、明るさがどう変化するかを確認する。

110724-7

モニタに表示されるレンダリング結果は各色256階調の約1677万色だが、Poser内部の計算はHDRで行われている。画像データになる時点でLDR (Low Dynamic Range) に変換されているだけで、本当は明るさ100%、256階調を超える部分もキチンと計算されているのだ。そしてトーンマッピングは、従来ならクリップされていたその階調オーバーの部分を、各色256階調(トーン)の範囲内に割り当て(マッピング)することができる。

(ちなみにこのグラフから、トーンマッピングはモニタガンマの逆数のカーブをかけているのではないことがわかる。ガンマカーブならExposureが1の時には直線になっているはずだからだ。いろいろやってみたけど、シーン内の光量に合わせて範囲調整をしていることもないらしい。まあその方がありがたいけど。このへんはもっと詳しく調べたいところ。)

このトーンマッピングを使用することによって、今までなら白飛びが起こるために回避せざるを得なかった、強度100%を超えるライティングが可能になる。

最も恩恵を受けるのは拡散IBLライトである。拡散IBLライトは明るすぎて、とても強度100%などでは使えないことは誰もが知っているだろう。白色の無限光を100とすると、拡散IBLは(イメージマップを接続しない白色の状態で)440の強度を持っている。画像を接続することで若干は抑えられるものの、やはり他のライトとの兼ね合いで低い強度でしか使えなかったはずだ。接続した画像の色合いも、ほとんど生かされていないことになる。

それが、トーンマッピングを使用すると飛んだ階調を表現できるのだ。

110724-8

白飛びが発生しないので、太陽光のような圧倒的な光量を持つ光源も遠慮なく設定することができるようになる。また暗部を持ち上げるので、IDLの二次反射光もしっかり描画できる。これまでは難しかった明暗差の大きいシーンを、より現実に忠実に構成することができるのだ。

このように、トーンマッピングには大きな利点がある。また設定自体も手軽である。しかし実際に使用するには、その前にクリアにしておかなければならない問題がある。マテリアルである。

(つづく)



Comments

初体験

11の所
kyotaroさんがかねてレタッチは必須と書かれていた理由が初めて理解できたような気がします。
単にキズの修正とか袖が膨らんでいるからとかだけでは無かったのですね。

12の所
トーンマッピングを設定した事が無かったので初めて試してみました。
確かにその効果を確認できました。
そのクリアしないといけない問題が見当が付かないのではっきり分かりませんが。
それとPoserのIBLは環境光と考えて使っていたので(←kyotaroさんのブログ参照の事(^^;)、その効果をどう捉えて実用するか経験も必要かもしれないですね。

どのように便利なのかはしっかり理解できました、Vueでもこういうのがあれば良いと思いました。
Vueの白飛びを抑えるのは私にはとても難しいです。
もしかしてあって私が知らないだけかも知れないけど(^^;

Name
sannzi #u2lyCPR2
Site
URL
Post Date
2011-07-24
Post Hour
23:01:21

Edit

嬉し恥ずかし(笑)

>sannziさん
レタッチは破綻箇所の修正だけじゃなくて、明暗やコントラストの調整も大事なんですよね。
ライティングだけで白飛びなどの調整を全部やりきってしまうのは、むしろ
効率的でないといいますか(^^;

トーンマッピング、なかなかハッキリと効果が出るでしょう(^^
クリアしなければいけない問題というのは、今までのマテリアルではなくて
リニアワークフロー用のマテリアルを考えないといけないという部分なんですが、
今その部分をまとめるのに苦戦しています(笑)
基本的なライティング手法は従来とあんまり変わらないんじゃないでしょうか。
>白飛び
Vueは所有していないので憶測ですが、レンダリング設定とかのあたりに
ゲインとか露出とかいう項目があれば、それじゃないかなあ?と思います(^^;

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2011-07-26
Post Hour
02:28:19

Edit

Tone Mappingキターッ!

そういえばTone Mappingの設定はしたことが無かったです。
今度試してみます。
写真でいうところの標準露出みたいなものなのかも。

でも問題はマテリアルですよね。
リニアワークフローに適したマテリアル設定が最も重要なところかと。
次回の記事を刮目に値するものになると、ワクワクしながら待っています。(あ、別にプレッシャーかける訳ではないですよ)(笑)

Name
hisayan #vdXS97RM
Site
URL
Post Date
2011-07-26
Post Hour
11:44:47

Edit

ざくざく来ますよ~(笑)

>hisayanさん
あ、まさに露出調整ですね。厳密にシミュレーションしているかどうかはわかりませんが、
マニュアルを紐解くとそんな風に書いてありました。英語だったので自信がありませんが(笑)
トーンマッピングはリニアワークフローの出力にあたる部分ですし、
単なるエフェクトとして使っても面白いかもしれません。
いよいよ肝心のマテリアルの部分なんですが、実を言うとなかなか難しいというか
これっていう解がないんですよね~。結局いつも通りになっちゃう、みたいな……。
ご期待に添えるかどうかは微妙ですが、鋭意しっぴつちぅです(笑)

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2011-07-27
Post Hour
00:19:39

Edit

Post Comment

管理者にだけ表示を許可する


Trackback

※このブログにトラックバックを送信する場合、お手数ですが本文中にブログ該当記事へのリンクを含めてください。

トラックバックURL:http://rutenshikai.blog63.fc2.com/tb.php/470-dd14a981



Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

07 | 2017/08 | 09
- - 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 31 - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。