Home > CG > リニア空間と物理的に正しいライティング

リニア空間と物理的に正しいライティング

以前からリニア空間だとかガンマだとかの話をちょこちょこ書いていたのですが、
先日、キャビアの鈴木様よりメールを頂き、CEDEC2008で発表されたスライドを頂戴しました。

「リニア空間と物理的に正しいライティング」
スライドデータ

鈴木様には許諾を頂いた上、本ブログで取り上げさせて頂くことになりました。
鈴木様ありがとうございます。


このスライドを拝見して、リニア空間のワークフローを用いて作業を行う理由を勘違いしていたなと認識しました。
リニア空間というのはつまり、物理的に正しいライティングを行うための土台だということです。
詳しくはスライドをごらん頂くのが早いと思います。

まずはWiiのスクリーンショットで驚くところから始まりますこちらのスライドww
え!Wiiでここまで出来るの!?と。。

読み進めて、球が並んでいる画像の辺りは特になんですが、光量の変化に対するサーフェスの反応の違いが明確に見えて衝撃的でした。
実際に試してみたところ、同じ結果になり、再度衝撃を受けました。
これはすげぇ、、、

写真を撮られる方ならご存知だと思うのですが、通常絞りを1段階開けるごとに、光の量は倍倍で増えて行きます。

僕の感覚からしたら、光の量が倍=ライトのIntensityが倍ということなわけで、
CGで考えたら正気か!?と思ってしまいますが、カメラの絞りは結構カチャカチャやりますよね、普通。
・・・あれ、やりますよね?

まぁそんなこんなで、そこのギャップに関しては今まで「別のもの」と思ってスルーしていました。
が、実際にはそうではなく、そこのギャップは「物理的に正しくない」環境で作業をしていたために生まれたものだったようです。

同様にショックを受けたのが、素材の反射率。
100%の光が戻ってくるものを100とする、という前提であっているのかわかりませんが(多分大丈夫、、だよな、、?)、
日本人の肌の平均は18だそうです。
ピッチピチのプルップルな(?)女子高生でも22、さらに、真っ白にしか見えない西欧白色人種の肌でも40程度なんだそうです。

正直ビビりました。
大体受け取ったモデルデータってdiffuse 0.8(デフォルト)とか、1.0とか、0.6とか、普通にそんな数字入ってますもんね、、
僕自身は1.0を好んで使っていました。暗くしたいときだけ下げるみたいな、、完全に間違いですね。。
自戒として書いておきます、、

また、明るさの単位に関してやその意味なども初めて触れましたし、
心理量に関しても心理的に(?)なんとなく気にしていたぐらいで、明確な数値があることも知りませんでいた。
とにかくものすごく勉強になりました。
もう何回か、繰り返し読みたいと思っています。

GIを使わない、非常に一般的なライティングでこれだけの違いが現れるわけですから、
今後、GIのような物理的に正しいとされるレンダリング手法を使っていくことを考えると、
これらの知識は必要不可欠なんじゃないでしょうか。

ということで皆様も是非ご覧下さい。

 
我々としてさしあたり問題なのは、MayaのRenderViewか、、アレのガンマはどうにもならんもんなぁ、、、
どうにかレンダリング結果を別のWindowにとか出来ないものだろうか。
うーむ、、、

Comments:16

ガリ 2009/08/27

大変勉強になります!
Taiさん、キャビア鈴木様。ありがとうございます

@h 2009/08/27

これは!!
おもしろいし、わかりやすいです。
ありがとうございます。

tai 2009/08/27

>ガリさん、@hさん
鈴木さんのスライドすばらしすぎます。
大変勉強になります。
ぜひとも身に着けて頂いて、日本のCG業界にもリニア空間ライティングの文化を・・・!

megott 2009/08/29

今さらでどうでも良い情報かもしれんけど、
スクリプトノードのGUI Open|Closeに
”PreRenderMELにgamma設定するコマンド”を入れるってのはダメかな?
泥臭いやり方だしファイル毎に設定が必要だけども。。。

後はデュアルモニタで、レンダービュー表示用のモニタのgammaをいじるとか。物理的過ぎるか。。

tai 2009/08/29

>megottさん
んー、どうなんでしょうか。
ただこれはビューポートが調整出来さえすれば何の問題もない話なので、出来ればそこで改善して欲しいんですよね。

デュアルモニタはコストとか場所的にOUTな気がしますww

って無理無理言ってたらずっと無理なんで、どこかで折り合いつけてやるのが良いとは思うんですが。

となるとmental rayにcamera shader付けてガンマ補正で8bitで出力、ってのが一番現実的かなとは思ってます。

megott 2009/08/30

やっぱダメか。要望出した?出しとこか。

GUI Open|Close だとコマンドラインレンダーはいいけどUIからのバッチレンダーでガンマ変わっちゃうね。。

あ、ガンマ補正のやり方ぢゃなくて、
レンダービューでレンダーするときは補正かけて、
コマンドラインでレンダーするときは補正かけない方法を考えてたさ。

ブログ汚してすまんでした。失礼します。

tai 2009/09/02

>megottさん
要望!出してない!
出し方分からないので是非出しといてくださいwww

個人的には、出来れば普通にビューワーでやりたいんです。データにはなるべく手入れたくなくて。
なのでやはり要望を!!!www

ブログ汚しだなんてそんな。全然問題ねーです、というかバシバシお願いします。

megott 2009/09/06

やっぱそだよねぇ。。
ちなみに要望の出し方は、MayaのメインメニューのHelp > Suggest a feature…
で開かれるウェブサイトから送れば良いのですよ。英語でだけど。
Bugも見つけたら Report a problem… から送ったって~

tai 2009/09/08

>megottさん
あ、そんなところから要望出せるんですね、、、
まぁ英語は非常に怪しい英語で送っておきます(ぉ
バグというかクラッシュレポートならちょくちょく送ってますよ!

shin 2009/09/16

はじめまして。

ガンマ補正について調べていて、このページにたどり着きました。
ですので、CGについて詳しくはないのですが、いくつか気になった点があります。

CCDカメラで光を電気信号に変換した時点では、ほぼ物理的にリニアな特性(ネットのQ&Aでリニアと回答している人もいました)だと思うのですが、よくある説明は「モニタの特性に合わせるためにガンマ補正をする」というものです。

モニタと異なるデバイスなのに、同じガンマ係数の値でリニアに戻るのは妙なので、実はモニタの特性もほぼリニアなんじゃないかと…
モニタがリニアでないとすると、WinとMacそれぞれでグラデーションが直線的にはならないと思います。

そうなると、PC上で作成した通常のRGB画像データは「人間の感覚にとってリニア」であっても、「物理的な明るさとしては歪んでいる」ことになります。

つまり、カメラで撮影したグラデーション(ガンマ補正が行われる)と、数値的に作成したグラデーションが同じ結果になるなら、PC上の通常のRGB空間はvideo spaceということになります(?)。

ここでCGでの疑問になるのですが、通常のRGB(video space?)が物理的にリニアでない場合、
反射率を複数回掛けるという操作が正しい掛け算になっていないんじゃないかと…
ですから、昔ながらのCGに違和感を感じるんでしょうね。

diffuse光は光源に対して一回反射したものとすると、それはテクスチャの問題なので何とかなる
(モデリングソフトは通常のRGB(video space)で結果を確認していることになるので)けれども、
その光が物体の表面で反射した時はliner spaceでないと結果が異なる気がします。

例えば、ベクトル(元々リニア空間。バンプマップはベクトルを操作するので逆ガンマは行わない)を使ってスペキュラを計算する式はliner spaceでは異なってくるんでしょうか?

そうだとすると、本来ならモデリング自体をliner spaceで行う必要がありそうな気がしますが…

shin 2009/09/17

先ほどの私の書き込みですが、

>モニタがリニアでないとすると、WinとMacそれぞれでグラデーションが直線的にはならないと思います。

この部分は言っていることが変でした。すみませんでした。
自分でも混乱していてまして…

ただ、デスクトップ画面の表示用のフレームバッファは、カメラと逆のガンマ補正をして出力されるのでvideo spaceとなり、そのことを意識しないソフト(内部データとの間でガンマ・逆ガンマ変換をしない)で作成された色や明るさに関するデータは結果としてvideo spaceとなると思います。

また、バンプマップのように数値自体を使用するものはvideo spaceであるかどうかとは無関係なので、リニアなデータとなります。

tai 2009/09/19

>shinさん
ども、はじめまして。
コメントありがとうございます!

> 同じガンマ係数の値で〜
同じガンマ係数ではないんじゃないでしょうか。
おそらく人間の目に対してリニア(つまりデータ的なリニアではない)にする補正を施したものをモニタに表示する、ってことだと思ってました。

> 物理的な明るさとしては歪んでいる
そう思います。
ただでもここは微妙な気がしていて、数値をベースに色を作った場合は補正せずともリニアなデータになっていると考えても良いのではないんでしょうか。
あくまでもそういう性質を持つのは見た目で判断した場合に限る、ということなのではないかと思っていたのですが、、どうなんでしょう・・・?

> 反射率を複数回掛けるという操作
すみません、これが具体的に何を表すのかわからないのですが、CGは基本的には物理法則に基づいた(必ずしもそうではないですが)計算により色を出すので、テクスチャなりの色が違ったら物理的に正しくない色が出てしまい、それが違和感の元なのかなと思います。

> 例えば、ベクトル(元々リニア空間。バンプマップは〜
すみません、これもちょっとどういう意味か計りかねます、、
結局変換するかどうかは数値ベースなのか見た目ベースなのかだけで考えちゃっていいのでは、という気がしています。
また、スペキュラ計算自体とはあまり色空間は関係ないと思うので、そこは普通に計算してやって問題ないのでは、と思います。

 
この問題はとにかく難しいのであれこれ試しながら結果見ながらやっていくしかないのかなーと思っています。
今後時間みて調べつつ触りつつでやってみようかと思っています・・・!!

hohehohe2 2009/09/23

反射率3-96%の補正はいいとして、机の上の写真にγ補正された画像を使うってのはよくわからないですねー。写真だろうが石ころだろうが変わらないんじゃないかと。仮にγが100だったと考えて、それまでの話はγ100でも(精度が無限に高い架空のレンダラの場合)通りますが机の上の写真にγ100の画像を使ってしまうと白潰れしてしまいます。

tai 2009/09/24

>hohehohe2さん
なるほど、確かにそうかも・・・?
ただこの辺の理解は若干怪しかったのでhohehoe2さんがおっしゃっていることをそのまま理解できているか不安です。
じゃあ今度呑みにでも<業務連絡ww

hohehohe2 2009/09/24

いや自分の勘違いかもしれないです。
> じゃあ今度呑みにでも<業務連絡ww
ぜひぜひ

tai 2009/09/26

>hohehohe2さん
いやいや、僕の理解が浅いのかもしれません。
それは業務報告会(!)でまた是非詳しくwww

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.taikomatsu.com/2009/08/25/%e3%83%aa%e3%83%8b%e3%82%a2%e7%a9%ba%e9%96%93%e3%81%a8%e7%89%a9%e7%90%86%e7%9a%84%e3%81%ab%e6%ad%a3%e3%81%97%e3%81%84%e3%83%a9%e3%82%a4%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0/trackback/
Listed below are links to weblogs that reference
リニア空間と物理的に正しいライティング from memlog

Home > CG > リニア空間と物理的に正しいライティング

Return to page top