background

拡散IBLライト・まずはCGの話

2006年10月05日(Thu)

問題.
次の(ア)~(エ)のうち、拡散IBLライトにもっとも近い性質を持つと思われるものを一つだけ選びなさい。

(ア)無限光 (イ)スポットライト (ウ)ポイントライト (エ)環境閉塞(AO)

というわけで、多少間が開いてしまったがようやく拡散IBLライトである。といっても、拡散IBLライトについては既に優れたテキストがネット上に存在する。原理的なところはほげほげさんのブログが詳しいし、T2さんのフォーラムには、本格的なIBLを使用する為のPythonスクリプトの紹介がある。 というわけで実は改めて自分が特筆するようなことはほとんどなかったりする(おいおい)。
とまあ、それだけでは手抜き臭い(笑)ので、自分なりのアプローチで「Poserでの」拡散IBLライトとそのライティング手法をまとめてみようと思う。

IBLはCG業界の中でもまだ比較的新しい技術だ。それを説明するためには、まずグローバルイルミネーション(Global Illumination、以下略GI)を説明しなければならない。GIは日本では大域照明とも訳される。その意味を一言で表すなら、「ライト(光源)以外の光も、より現実的に計算(=レンダリング)しよう」というものだ。

現実の世界は、ライトから発せられたもの以外にも様々な光に満ちている。窓から差し込む光の、床や壁からの照り返しで明るくなった室内。よく晴れた昼下がり、直射日光が当たらなくても充分に明るいビルの谷間。赤い傘を差せば顔が赤みがかって見え、カクテルの入ったグラスは複雑な光模様を描き出す。

123-1

照り返しとは拡散反射のことだ。Poserでも物質の色のことを拡散色・拡散値などと表すが、それは物質に吸収されずに、表面の微細な凹凸で乱反射した光の事を指す。(凹凸がなくてただ真っ直ぐに反射したら、それは鏡面反射や反射光そのものだ)

物質に色があるということは、つまりその色の光を乱反射しているということで、その物質表面で拡散した光も微弱ながら周囲を照らしているのである。それは頭上に広がる空も同じだ。空が青く見えるのは、太陽の光が大気中で乱反射し、青以外の光の波長が吸収されるからだ。言い換えれば日中は太陽の光以外に、空全体から空色の光が降り注いでいるのである。

グラスの光模様はどうだろう? レイトレースが使えるレンダラでは、光の反射や屈折でものの見え方が変わるところ、反射像や屈折像は描画することができる。が、実は反射・屈折する「光そのもの」を描画することはできないのだ。Poserのキャラクタに手鏡を持たせて、角度をつけて強い光を当ててみよう。手鏡で反射されたはずの光の輪は、どこを探しても見つからない。レイトレースは虫眼鏡で黒い紙を燃やすことができないのである(当たり前だって!)。

これら拡散反射光(間接光)や天空光、コースティクスなどはライトとその光を受けるオブジェクトだけを計算する従来のレンダラでは表現できない。疑似的に、フィルライトをいくつも用意して柔らかな間接光を表現するのが関の山だ。それに対して、周囲のオブジェクトも含めて二次反射光をとことん計算するのがGIだ。

GIレンダリングの手法にはいくつか種類がある。古くからメジャーなラジオシティ、Shadeでおなじみのパストレーシング、フォトンマッピングなど。パストレーシングとフォトンマッピングの特徴を組み合わせたものもあって、3ds MaxやMAYAにも使用されているmental rayのファイナルギャザリングや、Shade Proに付属する外部レンダラCALLISTOなどがそれにあたる。

GIレンダラの特徴は、リアルな絵が仕上がるかわりに、どれも時間がかかるということだ(笑)光の特性をよりリアルにシミュレーションするわけだから、まあ当然である。さらにライティングやレンダリングの設定項目を適切にコントロールしないと、時間はかかるけれども品質はいっこうに向上しない。ある意味シビアな世界なんである。

IBLはそんなGIにおいて、ライティングの手間を一気に引き受ける画期的な技術だ。IBLはイメージベースドライティング(Image Based Lighting)の略で、その名の通り画像ファイルの色や輝度情報に基づいてシーン内のライトと周囲からの照り返しを決定する。

イメージ的には、シーン全体を覆う大きな球体があって、そこに画像が張り付いていると考えればいい。そしてその球体から、画像の色と輝度を持った光がシーンに降り注ぐ。

123-2

この手法の何が画期的かというと、メインのオブジェクト以外の周囲の環境を作り込む必要がないこと、画像を取り換えるだけでライティングを一変できること、そして張り込んだ画像をそのまま、背景画像としても使用できることである。背景とライティングの不一致に悩む必要はもうないのだ。(本当に実用的な背景を得るには、かなり大きなサイズの画像が必要なのだけれども)

ところが一つ問題があって、画像から色の情報を得ることはできたものの、画像自体の光量がライティングに代用できるほどには足りなかったのである。もともと通常の画像形式では赤緑青各色8bit256階調、16,777,216色しか表現できない。たったこれだけで現実世界の豊かな光を表現しきるのは、とても無理な話だったのだ。

そこで、通常の24bit・16,777,216色を遥かに越え、階調を可変的に記録することができるHDRI(Hyper Dynamic Range Image)という画像形式が新たに考案された。このフォーマットを使うと、露光のアンダーな情報もオーバーな情報も一緒に格納できる。それでもってIBLはより繊細な表現が可能になったのである。

と、ここまでが本来のIBLの話。

Poserの拡散IBLライトは、このIBLの「画像から周囲の光を求める」という部分を疑似的に再現したものである。どのへんがどのように疑似的なのか。というところで、長くなったので続きはまた次回。

ついでに解答も次回(笑)


えー、業務連絡ー。業務連絡ー。
今晩からいよいよ翼ある者展が始まります。
投稿期間は日曜の晩23時59分までですので、皆さん奮ってご参加下さい~。

■頂いたコメント■


コメント:(sannzi) 今晩は。
まずクイズの答えは(エ)環境閉塞ではないでしょうか。
・・・
え~単なる消去法と言うか一番謎めいているからで根拠は無いですけど。
VueではいつもGIに近いチョット低級なクラスの設定を使っています。
早いからですがそれでも普通のレンダとは明らかに違います。
IBLもこうして理屈が分かると良さそうですね。
自分のイメージにピッタリのHDRI画像を手に入れるのが大変そうですけど、プリセットされているのもあるし試してみます。
Poserで使うとどうなるのか、続き楽しみにしています。
有難うございました。


コメント:(Kyotaro)
>sannziさん
こんばんは~(^^
問題の答えは、次回をお楽しみということで…(^^;
肝心な点は、特徴が似通っているもの、というところでしょうか。

GIレンダは本当に時間がかかりますね~。
なかなか気軽にテストするのも難しいですが、やはり普通の局部照明(Local Illumination:大域照明の対義語です)とは全然仕上がりが違いますよね。
Poserの拡散IBLライトも、「それがどんな働きをしているか」がわかれば自分で画像を作ったり、細かい調整をすることができるようになると思います。
次はなるべく間をおかずに更新したいと思います。


コメント:(pines)
待ってました~
拡散IBLライトは、よくわからなくて、肌の色とかうまくいかないので、あんまり使ってなかったんです。実践編が待ち遠しいなぁ


コメント:(Kyotaro)
>pinesさん
あわわわ、超遅レスですみません~!
拡散IBLライト、お待ちの方が結構いらっしゃるみたいで(汗)
翼展も終わったので、気合いいれて実践編を書きたいと思います~。





Menu

Profile

Kyotaro

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

Categories

Calendar

09 | 2017/10 | 11
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非推奨。