拡散IBLライト・そしてPoserの話。 / 1996年10月16日

前回3DCGにおける一般的なIBLの説明をしたので、今回はPoserの拡散IBLライトについて。

拡散IBLライトを使用するには、ライブラリのライトのカテゴリから「IBL」または
「IBL異方性反射(←誤訳)」を開き、シーンの状況に一番近い雰囲気の絵を選んで適用する。
手動でセットするには、まずIBLにしたいライト以外のライトを全てオフにし、
特性パレットで拡散IBLを選択して影をオフにする。それからライトの色を白にして、
マテリアルルームでライトのカラーにイメージマップノードを接続すればいい。
場合によっては特性パレットの環境閉塞にチェックを入れる。

Poserの拡散IBLライトは、シーン全体を包むような巨大な球体があると考え、
そこに画像を貼り付ける。そしてその画像の色がライトの色となって、その方向を向いた
オブジェクトの面に照射される。ここまでは通常のIBLと同じである。
実際には厳密に色分けされるわけではなく、その方向の周辺にある色の影響も受けている。
画像と方角の対応は次のような感じだ。

124-1

ここでいう前後左右上下とは、シーン全体を包む球体の前後左右上下のことである。
これは固定で、前といえばZ軸の+方向、上はY軸の+方向、右はX軸の+方向になる。
ライトをどちらに向けても照射される光の方向が回転するわけではないので要注意。
光の方向を変えたいなら、画像自体を反転するなどの工夫をこらさなければならない。

ところで拡散IBLライトは「あらゆる方向から照らされるライト」なので、普通に使うならば
影をオフにしなければならない。すると当然ながらあらゆるところが照らされてしまうわけで、
その結果どこにも影のないのっぺりした絵ができてしまう。
そこで、拡散IBLライトの影を描画するには環境閉塞を使用する。環境閉塞の詳しい説明は
また別の機会に譲るが、「なんか狭いところを黒く塗りつぶす」機能だと思えばいい。
環境閉塞はレイトレース系のシェーダなので、使用する時はレンダリングオプションで
「レイトレース使用」にチェックを入れよう。

124-2

画像ファイルの形式は、Poserのイメージマップノードが対応している形式ならなんでもいい。
……ちなみにHDRIのファイル形式の一つであるHDR形式(拡張子.hdr)には対応していない。

これは、通常のIBLとPoserの拡散IBLライトの一つ目の違いである。
元々HDRIは従来の約1776万色では表現できない現実の光を表現するために考案された形式だ。
だから当然、HDRIでないファイル形式の画像を使用したIBLでは、充分な光量が得られない。

124-3
(全く同じ設定でIBLの画像だけを変更した例。画像以外の光源は使用していない)

そんなわけで、HDRIに対応していないPoserの拡散IBLライトも、単体で使用するに足る程の
クオリティは期待できないことがわかるのである(もっとも、HDRIを使用するソフトでも、
IBLのみでは直接光の成分が不十分なので別のライトを併用することが多いのだけど)。

二つ目の違いは、拡散IBLライトはあくまでもライトであって背景ではない、という点だ。

本来のIBLの利点の一つは、背景画像をライティングに使用することで
近景オブジェクトと背景のライティングを違和感なく一致させることができる点である。
ところがPoserの背景ルートノードには、プローブ画像をマッピングする機能がない。
ウィンドウを1枚の板ポリゴンに見立て、画像を(通常は)UVマッピングしているだけだ。
さらにPoserの反射は、レイトレース反射ですら背景ルートノードを参照しない。
接続されたイメージマップノードの内容を、(通常は)オブジェクト自身のUV情報に基づいて
マッピングしているだけなのだ。
(通常は、と断るのは、イメージマップノードはUV以外のマッピングも可能だからである)
ということは、拡散IBLライトでは背景とライティングの一致も、背景のリアルな写り込みも
実現できないということになる。これは大きなデメリットである。

また、拡散IBLライトはあくまでもライトであって、レンダリング方式が変わるわけでは
ないのも大きな違いの一つだ。

IBLはグローバルイルミネーションを実現する手法の一つである。
なので、IBLを使用する他の多くのソフトはGIを実現できるレンダラを備えている。
しかしFireflyはレイトレース系シェーダを使えるだけで、実質スキャンラインレンダラである。
だから他のソフトなら可能な二次反射光の計算も、Poserには計算できないのだ。
たとえば背景を遮るような大きな赤い壁に周囲を囲まれたオブジェクトがあるとき、普通なら
オブジェクトは壁の赤い色の影響を受け、遮られたIBLの画像の影響は受けないはずである。
ところがPoserでは(「集める」ノードを使えば壁の色の影響を描画することはできるものの)
そんなことはお構いなしに拡散IBLライトの画像の影響を受けてしまう。
これは人物を単体でレンダする場合などはいいが、オブジェクトが密集しているシーンなどでは
注意が必要だ。シーンの状況に合わせて、画像そのものに加工する必要があるだろう。

もう一つ、違いというわけではないが致命的な特徴がある。
拡散IBLライトでは、ライトやオブジェクトのマテリアル設定に関わらず、
鏡面反射と反射が描画されないのだ。
上2つの画像はPoserの基本小道具そのままだが、ハイライトが出ていないのがわかるだろう。
ただ拡散IBLライトを使用した画像がいまいちリアリティに欠ける、最大の理由がこれである。
特に肌や瞳の輝き、金属物のマテリアルなどは違いが顕著で、素材感が失われてしまうのだ。

124-4

もっとも、鏡面反射について言えばこの仕様(バグではない)は順当なものだ。
そもそもIBLでは鏡面反射という成分は存在しない。なぜなら鏡面反射とは物体表面の
「光源の反射像」を疑似的に表現したものであり、反射が正しくレンダリングされ、
かつ光源がちゃんと描画されるならば、鏡面反射は必要ないものだからである。
前述のShadeの画像では、壺と机の光沢(鏡面反射)は0に設定されている。
右側のHDRIフォーマットに現れている光沢は、少しだけ適用された反射値によるものだ。

しかしこれはIBL、しかもHDRIによって光源が反射像として描画される場合の話である。
HDRIに対応しておらず、さらに反射も描画されない、ではどうやっても光沢を表現できない。
仕様上の設計ミスというべきか、このあたりどうもP5→P6の開発に
奇妙な躓きがあるように思われるところだ。

とまあ、嘆くだけではPoserと自分自身の創作意欲を腐らせるだけである。
Poserの拡散IBLライトは、文字通り「拡散」色だけ「画像に基づいてライティング」する
「ライト」なのだということ。これらの特性を踏まえて、次は実践編に移りたいと思う。

ところで。
解答.答えは(ア)無限光。
拡散IBLライトはシーン内に特定の位置を持たず、また照射範囲も持たず、
どんな場所でも同じように照らし出す。物体の表面がどんな明るさ(色)になるかは、
ただオブジェクトの面の向きとライトの色(画像)によって決定する。
この特性にもっとも近い特性を持つのは無限光ライトである。
向きを持たない点では(ウ)ポイントライトも近いと言えるが、その他の特性が一致しない。
(エ)環境閉塞(AO)はライトではなく、マテリアルシェーダ(色付け機能)の一つであり、
IBLに併用することが多い機能である。

……実は、拡散IBLライトは影をオンにすると無限光と同じ影を描画する。
理屈的には影を描画してはいけないはずなのだが、このことからも拡散IBLライトが
無限光ライトを拡張した機能であることがわかるのである(笑)。

■頂いたコメント■

›› Read More

| BLOG TOP |