レイトレースシャドウ。 / 1996年10月29日
環境閉塞(AO)の、その前に。
忘れていたわけではないけれど、実は忘れたかったりするレイトレースシャドウ。
何故なら未だよく分からない部分があったりするからで(笑)。
Poserでの名称はレイトレース影だが、そのセンスがやっぱり自分的にアレなので(笑)
以降統一してレイトレースシャドウと呼ぶことにする。
レイトレースシャドウはシャドウマップと並んで、影を描画する手法の一つだ。
レイトレースシャドウを使用するには、ライトの特性パレットで「レイトレース影」を選択し、
さらにレンダリングオプションで「影を投影」と「レイトレーシング」にチェックを入れる。
その原理は以前シャドウマップの回で説明したように、視点からレイ(光線)を飛ばし、
レイが物体表面に衝突したところでその地点と光源との間の障害物の有無を調べる。
計算はピクセル毎(本当はシェーディングレートによって分割されたマイクロポリゴン毎)に
行われるので、シャドウマップより時間はかかるものの、より精密な描画が可能だ。

レイトレースシャドウの品質がいまいちだと思う時は、パラメータを調節してみよう。
まずはパラメータパレットにある影の精度。
これは当然のごとくレイトレースシャドウでは使用しない。
なぜならこれはシャドウマップを生成するときの縦横のピクセル数だからである。
ちなみにレイトレースシャドウはレンダリング中に計算されるので、レイトレースシャドウに
切り替えるとレンダリング開始時の「影の計算中…」というダイアログが表示されなくなる。
次に特性パレットにある影のにじみ半径。
これはシャドウマップとは異なりデフォルトでは0になっているが、
値を入れるとシャドウマップと同様にソフトシャドウを描画することができる。
シャドウマップにおけるソフトシャドウはZ値にぼかしフィルタをかけることで実現するが、
レイトレースシャドウの場合は、物体表面から光源が見えるかどうかを調べる時に、
その光源の存在する方角に設定しただけの誤差を持たせることで曖昧さを実現する。
これによってシャドウマップの均一なぼかしとは異なり、影の発生源との距離によって
にじみ具合が変化するような、よりリアルな影を描画できる。

従って、このにじみ半径の設定単位は角度だと推測される。
影のぼけ方がざらざらしている時に調整するのは、シェーディングレートだ。
レイトレースシャドウはマイクロポリゴン毎に影かどうかの判定を行っているので、
単純にマイクロポリゴンの分割を小さくしてサンプリング数を増やせば品質は向上する。
(ちょっと怪しい話だが、ピクセルサンプリングではソフトシャドウの品質は向上しない)
ただし、シェーディングレートはレンダリング速度にがっつりと影響するので、
PCの能力と相談しながら設定するようにしよう。品質に関わるのは影を受けるオブジェクトの
シェーディングレートなので、そのオブジェクトだけ設定を小さくしてみるのもいいだろう。
(詳細は本宅Tips「レンダリング設定について」参照)
影のにじみ半径を0にしている場合でも、影の輪郭にノイズが発生することがある。
これを調整するのが「影の偏り」だ。
シャドウマップの場合、「影の偏り」は階段状のノイズを抑制するための
Z値抽出時のオブジェクトをオフセットさせるパラメータだった。
レイトレースシャドウでは、これは「レイバイアス」というパラメータとなる。
(同一パラメータに全く異なる複数の意味を与えるのはUI上どうかと思うのだが……)
レイバイアスはレイトレースの重要なパラメータの一つで、レイが物体表面に衝突したときに、
「そこから一定距離進むまではあらゆる計算を行わない」という距離を設定する。
なので、この値を小さくするとよりタイトに影の描画をすることができるのだ。
大きくすると障害物を判定する基準位置がオブジェクト表面からズレてしまうため、
輪郭が不正確になるだけでなく、シャドウマップと同じように
接地しているはずのオブジェクトの影が浮いてしまうことになる。

だったらレイバイアスはいつも小さく設定すればいいのかというと、そうでもない。
(ちなみにレイバイアスを0にすると地獄絵図が展開される)
オブジェクトによっては、レイバイアスを大きく設定しなければならない状況も存在する。
それは「非平面ポリゴン」がある場合だ。
非平面ポリゴンとは文字通り、4つの頂点が同一平面上にないポリゴンのことだ。
これが実は3DCG的に、非常に厄介な存在なんである。
普段Poserを使っている時にはこの非平面ポリゴンを意識することはあまりないが、
それはスムースシェーディングによってなだらかな陰影付けをされているからであって、
内部的には非平面ポリゴンは三角ポリゴン2枚に分割され、くっきりと折れ曲がっている。

これが問題になるのがレイトレースを使用した時だ。レイトレースの機能はそのほとんどが、
レイが物体の表面に衝突してから周囲の状況を調べることで実現している。
ところが非平面ポリゴンの場合、レイが非平面ポリゴン自身の陰に入ってしまい
そこを「障害物あり」だと判断してしまうのだ。

レイトレース系の機能を使用した時に時々現れる、奇妙な斑点の正体がこれだ。
反射ならその部分だけ反射像が異なってしまい、環境閉塞やレイトレースシャドウなら
そこだけ完全な影として真っ黒に描画してしまうのである。

というわけで、これを回避する為にはレイバイアスを大きく設定し、
レイが非平面ポリゴンの陰の領域を脱出するまで判定を行わないようにしなければならない。
設定値自体はその非平面ポリゴンの大きさや非平面具合によるので、
テストレンダしながら最適値を探るしかないのである。
ほかにも、レイトレースシャドウはスムースポリゴンによる変形を描画できなかったり、
トリムマップの解釈に微妙なバグがあったりと、やや扱いにコツが要る点も多い。
が、その精密さやシーン内のオブジェクトサイズに依存せずに同品質の影を落とせる点など
シャドウマップでは実現できないメリットも大きい。
自分の作りたい影の内容に応じて、シャドウマップと使い分けるようにするといいだろう。
■頂いたコメント■
忘れていたわけではないけれど、実は忘れたかったりするレイトレースシャドウ。
何故なら未だよく分からない部分があったりするからで(笑)。
Poserでの名称はレイトレース影だが、そのセンスがやっぱり自分的にアレなので(笑)
以降統一してレイトレースシャドウと呼ぶことにする。
レイトレースシャドウはシャドウマップと並んで、影を描画する手法の一つだ。
レイトレースシャドウを使用するには、ライトの特性パレットで「レイトレース影」を選択し、
さらにレンダリングオプションで「影を投影」と「レイトレーシング」にチェックを入れる。
その原理は以前シャドウマップの回で説明したように、視点からレイ(光線)を飛ばし、
レイが物体表面に衝突したところでその地点と光源との間の障害物の有無を調べる。
計算はピクセル毎(本当はシェーディングレートによって分割されたマイクロポリゴン毎)に
行われるので、シャドウマップより時間はかかるものの、より精密な描画が可能だ。

レイトレースシャドウの品質がいまいちだと思う時は、パラメータを調節してみよう。
まずはパラメータパレットにある影の精度。
これは当然のごとくレイトレースシャドウでは使用しない。
なぜならこれはシャドウマップを生成するときの縦横のピクセル数だからである。
ちなみにレイトレースシャドウはレンダリング中に計算されるので、レイトレースシャドウに
切り替えるとレンダリング開始時の「影の計算中…」というダイアログが表示されなくなる。
次に特性パレットにある影のにじみ半径。
これはシャドウマップとは異なりデフォルトでは0になっているが、
値を入れるとシャドウマップと同様にソフトシャドウを描画することができる。
シャドウマップにおけるソフトシャドウはZ値にぼかしフィルタをかけることで実現するが、
レイトレースシャドウの場合は、物体表面から光源が見えるかどうかを調べる時に、
その光源の存在する方角に設定しただけの誤差を持たせることで曖昧さを実現する。
これによってシャドウマップの均一なぼかしとは異なり、影の発生源との距離によって
にじみ具合が変化するような、よりリアルな影を描画できる。

従って、このにじみ半径の設定単位は角度だと推測される。
影のぼけ方がざらざらしている時に調整するのは、シェーディングレートだ。
レイトレースシャドウはマイクロポリゴン毎に影かどうかの判定を行っているので、
単純にマイクロポリゴンの分割を小さくしてサンプリング数を増やせば品質は向上する。
(ちょっと怪しい話だが、ピクセルサンプリングではソフトシャドウの品質は向上しない)
ただし、シェーディングレートはレンダリング速度にがっつりと影響するので、
PCの能力と相談しながら設定するようにしよう。品質に関わるのは影を受けるオブジェクトの
シェーディングレートなので、そのオブジェクトだけ設定を小さくしてみるのもいいだろう。
(詳細は本宅Tips「レンダリング設定について」参照)
影のにじみ半径を0にしている場合でも、影の輪郭にノイズが発生することがある。
これを調整するのが「影の偏り」だ。
シャドウマップの場合、「影の偏り」は階段状のノイズを抑制するための
Z値抽出時のオブジェクトをオフセットさせるパラメータだった。
レイトレースシャドウでは、これは「レイバイアス」というパラメータとなる。
(同一パラメータに全く異なる複数の意味を与えるのはUI上どうかと思うのだが……)
レイバイアスはレイトレースの重要なパラメータの一つで、レイが物体表面に衝突したときに、
「そこから一定距離進むまではあらゆる計算を行わない」という距離を設定する。
なので、この値を小さくするとよりタイトに影の描画をすることができるのだ。
大きくすると障害物を判定する基準位置がオブジェクト表面からズレてしまうため、
輪郭が不正確になるだけでなく、シャドウマップと同じように
接地しているはずのオブジェクトの影が浮いてしまうことになる。

だったらレイバイアスはいつも小さく設定すればいいのかというと、そうでもない。
(ちなみにレイバイアスを0にすると地獄絵図が展開される)
オブジェクトによっては、レイバイアスを大きく設定しなければならない状況も存在する。
それは「非平面ポリゴン」がある場合だ。
非平面ポリゴンとは文字通り、4つの頂点が同一平面上にないポリゴンのことだ。
これが実は3DCG的に、非常に厄介な存在なんである。
普段Poserを使っている時にはこの非平面ポリゴンを意識することはあまりないが、
それはスムースシェーディングによってなだらかな陰影付けをされているからであって、
内部的には非平面ポリゴンは三角ポリゴン2枚に分割され、くっきりと折れ曲がっている。

これが問題になるのがレイトレースを使用した時だ。レイトレースの機能はそのほとんどが、
レイが物体の表面に衝突してから周囲の状況を調べることで実現している。
ところが非平面ポリゴンの場合、レイが非平面ポリゴン自身の陰に入ってしまい
そこを「障害物あり」だと判断してしまうのだ。

レイトレース系の機能を使用した時に時々現れる、奇妙な斑点の正体がこれだ。
反射ならその部分だけ反射像が異なってしまい、環境閉塞やレイトレースシャドウなら
そこだけ完全な影として真っ黒に描画してしまうのである。

というわけで、これを回避する為にはレイバイアスを大きく設定し、
レイが非平面ポリゴンの陰の領域を脱出するまで判定を行わないようにしなければならない。
設定値自体はその非平面ポリゴンの大きさや非平面具合によるので、
テストレンダしながら最適値を探るしかないのである。
ほかにも、レイトレースシャドウはスムースポリゴンによる変形を描画できなかったり、
トリムマップの解釈に微妙なバグがあったりと、やや扱いにコツが要る点も多い。
が、その精密さやシーン内のオブジェクトサイズに依存せずに同品質の影を落とせる点など
シャドウマップでは実現できないメリットも大きい。
自分の作りたい影の内容に応じて、シャドウマップと使い分けるようにするといいだろう。
■頂いたコメント■
›› Read More
拡散IBLライト・ようやくライティング / 1996年10月19日
またの名を当たって砕けろ編・りたーんず。
例によって、以下のやり方は自分なりのやり方であって、決してこれが正解というわけでも
この通りにやれば必ずうまくいくというわけでもないので、そのへんは予めご了承頂きたい。
前回まとめた拡散IBLライトの特徴は、
・IBLとは背景画像を使って周囲から受ける光(環境光)を表現するもの
・HDRIではないので、単独でライティングするには光量が足りない
・背景は描画できない
・鏡面反射や反射が描画できない
ということだった。これらのポイントから、拡散IBLライトは
「主に環境光成分だけに使用し、メインの光源としては別のライトを使う」
ようにすればいいということがわかる。
■晴天の屋外
晴れた日の屋外は光に満ちている。メインの光源となる太陽だけではなく、
大気中で乱反射した青い光や地面からの照り返しだけでも、室内より明るいことが多い。
これらの環境光成分を拡散IBLライトに担当させることにして、
まずはメインの光源である太陽を無限光ライトで設定する。
ライト1かライト3を選択して他のライトを消し、色は白、明るさを100%にして角度を決める。
影の濃さはもちろん1で、できればくっきりした影が描画できるレイトレース影を使う。

太陽が決まったら、ライブラリの「ライト>IBL異方性反射(くどいけど誤訳)」の中から
地面や空などがシーンに合うものを選んで適用する。
このプリセットを使うとライト2が拡散IBLライトになり、他のライトはオフになるので、
まずは太陽のライトをオンにして、軽くテストレンダしてみよう。
まだ環境閉塞は必要ないので、ライト2の「環境閉塞」のチェックは外しておくといい。
レンダリングすると、眩しすぎて話にならない結果になるはずだ。

そこで、太陽と環境光のライトのそれぞれの明るさを調整する。
目安となるのは、影が落ちた部分の明るさだ。この部分が適切な明るさになるように、
環境光にしたライト2の明るさを下げる。だいたい50〜60%あたりが目安だろう。

次に太陽の明るさを調整する。全体の調子を見渡して、色飛びが発生しないようにすればいい。
全体の明るさが決まったら、ライト2(拡散IBL)の環境閉塞を調整する(詳細は後日)。
レンダリングオプションで「影のレンダリング」をオフにすると調整しやすいだろう。
(環境閉塞を調整したところ)
ちなみに太陽にレイトレース影を使用している場合、そのライトに環境閉塞を使う必要はない。
晴れた日の太陽のような強烈な光源は狭いところにもしっかり光が届くし、
レイトレース影はシャドウマップに比べて遥かに正確に影を描画するからだ。
■曇天の屋外
空が完全に白い雲で覆われている日は全体に薄暗く、また影もぼんやりとしか落ちない。
このときメインとなる光源は、太陽光を内部で乱反射してうっすら輝く雲全体となる。
その光は地平に近いほど弱く、天頂に近付くほど強くなる。また、太陽のある位置は明るい。
全体の照度が低い為、地面や周囲からの照り返しはほとんどない。
この場合、空全体の中でも「主に太陽方向から届く光」を無限光ライト1つに割り当て、
その他の空全体と周囲の環境光を拡散IBLライトに担当させる。
そして太陽光を弱めに、環境光を強めに調整する。
影はほとんどを環境閉塞で描画させ、足りない部分は太陽光の影をシャドウマップにし、
ぼかしを強めにかけることで対応する。
手順は晴天時のライティングとほぼ同じだ。まず太陽方向の成分を調整し、
できればうまく影がぼけるようにシャドウマップサイズと影のにじみ半径を調整する。

次に拡散IBLライトを適用する。曇りの日なので、できれば彩度の低い画像がいい。
適当な画像がない場合は、今ある画像を加工してしまおう。

で、各ライトの調整に入るのだが、今度は拡散IBLライトの明るさを先に決めてしまおう。
基準は、拡散IBLライト単独で、最終的に狙った明るさよりもやや暗くなるぐらいがいい。
ここではだいたい70%ぐらいにする。
それから無限光をオンにして明るさを落とす。拡散IBLライト単独のときよりも、
ややメリハリが出るような感じにするといいだろう。ここでは30%ぐらいの値にしている。

環境閉塞の調整は晴天のライティングとは異なり、ほとんどの影をこれでまかなう為、
最大距離を大きめに取るといいだろう。また太陽の無限光も、シャドウマップを使用するので
環境閉塞にチェックを入れて適用しておく。
■室内
室内にも色々あるが、蛍光灯がメインの照明である一般家屋の夜のシーンを考えてみよう。
夜なので、外から入ってくる光はほとんどない。環境光となるのは蛍光灯などによる
照り返しで、色は家具や壁紙などに大きく左右されるが、蛍光灯のやや緑を帯びた光で
黄色〜茶色っぽい色味になるだろう。
夜は絶対的な光量が少く全体に暗いはずなのだが、人間の目には補正機能がついているので
暗いとは感じない。その分メインの照明と環境光の明度差が少なく、日中より平坦な調子になる。
厄介なのはメインの照明である蛍光灯のライトを何にするかだ。
Poserには面光源に該当するものはないので、背景を合成でなく小道具で表現するなら
ポイントライトで影をぼかすか、スポットライトの角度を広げて部屋全体に光が回るようにする。
いっそ背景小道具だけ別にライティングした方が手間が少ないかもしれない。
人物など近景を撮るだけなら無限光を使用できる。照明はできるだけ現実的な配置にし、
部屋によっては隣室の照明やスタンドライトなど複数の光源を置くといいだろう。

■応用
シーンの状況にピッタリ合うものがプリセットの中にない場合は、思い切って自分で
作ってしまうのもいいだろう。簡単なのは、既存の画像に着色することだ。
例えば夕暮れなら、昼間の画像を使用してライトを青紫にする。すると投影される色は
青紫を乗算した色になるので、太陽のライトに赤みをつけて調整すれば夕暮れになる。

また、ペイントソフトでイチから書き起こすのもそれほど難しいことではない。
前回の画像と方角の対照図で示したように、だいたいの方角と色さえ合っていれば
厳密に塗り分けたりする必要はないので、写真や絵を切り貼りしただけでも充分使用に堪える。
ところで、拡散IBLライトを使って撮った絵は、当然ながらやや色かぶりしている。
晴天の画像を使ったなら青っぽいし、室内の画像を使ったなら黄緑っぽい。
画像処理の分野では嫌われる色かぶりだが、3DCGでは逆にそれっぽく見えたりするので
レンダ後に画像処理ソフトで補正をかける時も、それを活かすように補正するといいだろう。
晴れの日ならよりオーバー気味に、曇りの日ならより眠たく補正するのも効果的だ。
やり過ぎはよくないが、ほどよく強調したほうがそれらしい。

拡散IBLライトを使う時のコツは、そのシーンにどんな光が存在するかをできるだけ具体的
(どれぐらいの強さで、どんな色なのか、また影はどう現れているか)にイメージし、
それを適切に各ライトに役割分担することだ。
そのためには、普段から身の回りを意識して観察することが役に立つだろう。
果たして。
あと環境閉塞のことをチラっと書いたら、ライティングTipsも終わりかな〜。
■頂いたコメント■
例によって、以下のやり方は自分なりのやり方であって、決してこれが正解というわけでも
この通りにやれば必ずうまくいくというわけでもないので、そのへんは予めご了承頂きたい。
前回まとめた拡散IBLライトの特徴は、
・IBLとは背景画像を使って周囲から受ける光(環境光)を表現するもの
・HDRIではないので、単独でライティングするには光量が足りない
・背景は描画できない
・鏡面反射や反射が描画できない
ということだった。これらのポイントから、拡散IBLライトは
「主に環境光成分だけに使用し、メインの光源としては別のライトを使う」
ようにすればいいということがわかる。
■晴天の屋外
晴れた日の屋外は光に満ちている。メインの光源となる太陽だけではなく、
大気中で乱反射した青い光や地面からの照り返しだけでも、室内より明るいことが多い。
これらの環境光成分を拡散IBLライトに担当させることにして、
まずはメインの光源である太陽を無限光ライトで設定する。
ライト1かライト3を選択して他のライトを消し、色は白、明るさを100%にして角度を決める。
影の濃さはもちろん1で、できればくっきりした影が描画できるレイトレース影を使う。

太陽が決まったら、ライブラリの「ライト>IBL異方性反射(くどいけど誤訳)」の中から
地面や空などがシーンに合うものを選んで適用する。
このプリセットを使うとライト2が拡散IBLライトになり、他のライトはオフになるので、
まずは太陽のライトをオンにして、軽くテストレンダしてみよう。
まだ環境閉塞は必要ないので、ライト2の「環境閉塞」のチェックは外しておくといい。
レンダリングすると、眩しすぎて話にならない結果になるはずだ。

そこで、太陽と環境光のライトのそれぞれの明るさを調整する。
目安となるのは、影が落ちた部分の明るさだ。この部分が適切な明るさになるように、
環境光にしたライト2の明るさを下げる。だいたい50〜60%あたりが目安だろう。

次に太陽の明るさを調整する。全体の調子を見渡して、色飛びが発生しないようにすればいい。
全体の明るさが決まったら、ライト2(拡散IBL)の環境閉塞を調整する(詳細は後日)。
レンダリングオプションで「影のレンダリング」をオフにすると調整しやすいだろう。
(環境閉塞を調整したところ)ちなみに太陽にレイトレース影を使用している場合、そのライトに環境閉塞を使う必要はない。
晴れた日の太陽のような強烈な光源は狭いところにもしっかり光が届くし、
レイトレース影はシャドウマップに比べて遥かに正確に影を描画するからだ。
■曇天の屋外
空が完全に白い雲で覆われている日は全体に薄暗く、また影もぼんやりとしか落ちない。
このときメインとなる光源は、太陽光を内部で乱反射してうっすら輝く雲全体となる。
その光は地平に近いほど弱く、天頂に近付くほど強くなる。また、太陽のある位置は明るい。
全体の照度が低い為、地面や周囲からの照り返しはほとんどない。
この場合、空全体の中でも「主に太陽方向から届く光」を無限光ライト1つに割り当て、
その他の空全体と周囲の環境光を拡散IBLライトに担当させる。
そして太陽光を弱めに、環境光を強めに調整する。
影はほとんどを環境閉塞で描画させ、足りない部分は太陽光の影をシャドウマップにし、
ぼかしを強めにかけることで対応する。
手順は晴天時のライティングとほぼ同じだ。まず太陽方向の成分を調整し、
できればうまく影がぼけるようにシャドウマップサイズと影のにじみ半径を調整する。

次に拡散IBLライトを適用する。曇りの日なので、できれば彩度の低い画像がいい。
適当な画像がない場合は、今ある画像を加工してしまおう。

で、各ライトの調整に入るのだが、今度は拡散IBLライトの明るさを先に決めてしまおう。
基準は、拡散IBLライト単独で、最終的に狙った明るさよりもやや暗くなるぐらいがいい。
ここではだいたい70%ぐらいにする。
それから無限光をオンにして明るさを落とす。拡散IBLライト単独のときよりも、
ややメリハリが出るような感じにするといいだろう。ここでは30%ぐらいの値にしている。

環境閉塞の調整は晴天のライティングとは異なり、ほとんどの影をこれでまかなう為、
最大距離を大きめに取るといいだろう。また太陽の無限光も、シャドウマップを使用するので
環境閉塞にチェックを入れて適用しておく。
■室内
室内にも色々あるが、蛍光灯がメインの照明である一般家屋の夜のシーンを考えてみよう。
夜なので、外から入ってくる光はほとんどない。環境光となるのは蛍光灯などによる
照り返しで、色は家具や壁紙などに大きく左右されるが、蛍光灯のやや緑を帯びた光で
黄色〜茶色っぽい色味になるだろう。
夜は絶対的な光量が少く全体に暗いはずなのだが、人間の目には補正機能がついているので
暗いとは感じない。その分メインの照明と環境光の明度差が少なく、日中より平坦な調子になる。
厄介なのはメインの照明である蛍光灯のライトを何にするかだ。
Poserには面光源に該当するものはないので、背景を合成でなく小道具で表現するなら
ポイントライトで影をぼかすか、スポットライトの角度を広げて部屋全体に光が回るようにする。
いっそ背景小道具だけ別にライティングした方が手間が少ないかもしれない。
人物など近景を撮るだけなら無限光を使用できる。照明はできるだけ現実的な配置にし、
部屋によっては隣室の照明やスタンドライトなど複数の光源を置くといいだろう。

■応用
シーンの状況にピッタリ合うものがプリセットの中にない場合は、思い切って自分で
作ってしまうのもいいだろう。簡単なのは、既存の画像に着色することだ。
例えば夕暮れなら、昼間の画像を使用してライトを青紫にする。すると投影される色は
青紫を乗算した色になるので、太陽のライトに赤みをつけて調整すれば夕暮れになる。

また、ペイントソフトでイチから書き起こすのもそれほど難しいことではない。
前回の画像と方角の対照図で示したように、だいたいの方角と色さえ合っていれば
厳密に塗り分けたりする必要はないので、写真や絵を切り貼りしただけでも充分使用に堪える。
ところで、拡散IBLライトを使って撮った絵は、当然ながらやや色かぶりしている。
晴天の画像を使ったなら青っぽいし、室内の画像を使ったなら黄緑っぽい。
画像処理の分野では嫌われる色かぶりだが、3DCGでは逆にそれっぽく見えたりするので
レンダ後に画像処理ソフトで補正をかける時も、それを活かすように補正するといいだろう。
晴れの日ならよりオーバー気味に、曇りの日ならより眠たく補正するのも効果的だ。
やり過ぎはよくないが、ほどよく強調したほうがそれらしい。

拡散IBLライトを使う時のコツは、そのシーンにどんな光が存在するかをできるだけ具体的
(どれぐらいの強さで、どんな色なのか、また影はどう現れているか)にイメージし、
それを適切に各ライトに役割分担することだ。
そのためには、普段から身の回りを意識して観察することが役に立つだろう。
果たして。
あと環境閉塞のことをチラっと書いたら、ライティングTipsも終わりかな〜。
■頂いたコメント■
›› Read More
拡散IBLライト・そしてPoserの話。 / 1996年10月16日
前回3DCGにおける一般的なIBLの説明をしたので、今回はPoserの拡散IBLライトについて。
拡散IBLライトを使用するには、ライブラリのライトのカテゴリから「IBL」または
「IBL異方性反射(←誤訳)」を開き、シーンの状況に一番近い雰囲気の絵を選んで適用する。
手動でセットするには、まずIBLにしたいライト以外のライトを全てオフにし、
特性パレットで拡散IBLを選択して影をオフにする。それからライトの色を白にして、
マテリアルルームでライトのカラーにイメージマップノードを接続すればいい。
場合によっては特性パレットの環境閉塞にチェックを入れる。
Poserの拡散IBLライトは、シーン全体を包むような巨大な球体があると考え、
そこに画像を貼り付ける。そしてその画像の色がライトの色となって、その方向を向いた
オブジェクトの面に照射される。ここまでは通常のIBLと同じである。
実際には厳密に色分けされるわけではなく、その方向の周辺にある色の影響も受けている。
画像と方角の対応は次のような感じだ。

ここでいう前後左右上下とは、シーン全体を包む球体の前後左右上下のことである。
これは固定で、前といえばZ軸の+方向、上はY軸の+方向、右はX軸の+方向になる。
ライトをどちらに向けても照射される光の方向が回転するわけではないので要注意。
光の方向を変えたいなら、画像自体を反転するなどの工夫をこらさなければならない。
ところで拡散IBLライトは「あらゆる方向から照らされるライト」なので、普通に使うならば
影をオフにしなければならない。すると当然ながらあらゆるところが照らされてしまうわけで、
その結果どこにも影のないのっぺりした絵ができてしまう。
そこで、拡散IBLライトの影を描画するには環境閉塞を使用する。環境閉塞の詳しい説明は
また別の機会に譲るが、「なんか狭いところを黒く塗りつぶす」機能だと思えばいい。
環境閉塞はレイトレース系のシェーダなので、使用する時はレンダリングオプションで
「レイトレース使用」にチェックを入れよう。

画像ファイルの形式は、Poserのイメージマップノードが対応している形式ならなんでもいい。
……ちなみにHDRIのファイル形式の一つであるHDR形式(拡張子.hdr)には対応していない。
これは、通常のIBLとPoserの拡散IBLライトの一つ目の違いである。
元々HDRIは従来の約1776万色では表現できない現実の光を表現するために考案された形式だ。
だから当然、HDRIでないファイル形式の画像を使用したIBLでは、充分な光量が得られない。

(全く同じ設定で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ライトを使用した画像がいまいちリアリティに欠ける、最大の理由がこれである。
特に肌や瞳の輝き、金属物のマテリアルなどは違いが顕著で、素材感が失われてしまうのだ。

もっとも、鏡面反射について言えばこの仕様(バグではない)は順当なものだ。
そもそもIBLでは鏡面反射という成分は存在しない。なぜなら鏡面反射とは物体表面の
「光源の反射像」を疑似的に表現したものであり、反射が正しくレンダリングされ、
かつ光源がちゃんと描画されるならば、鏡面反射は必要ないものだからである。
前述のShadeの画像では、壺と机の光沢(鏡面反射)は0に設定されている。
右側のHDRIフォーマットに現れている光沢は、少しだけ適用された反射値によるものだ。
しかしこれはIBL、しかもHDRIによって光源が反射像として描画される場合の話である。
HDRIに対応しておらず、さらに反射も描画されない、ではどうやっても光沢を表現できない。
仕様上の設計ミスというべきか、このあたりどうもP5→P6の開発に
奇妙な躓きがあるように思われるところだ。
とまあ、嘆くだけではPoserと自分自身の創作意欲を腐らせるだけである。
Poserの拡散IBLライトは、文字通り「拡散」色だけ「画像に基づいてライティング」する
「ライト」なのだということ。これらの特性を踏まえて、次は実践編に移りたいと思う。
ところで。
解答.答えは(ア)無限光。
拡散IBLライトはシーン内に特定の位置を持たず、また照射範囲も持たず、
どんな場所でも同じように照らし出す。物体の表面がどんな明るさ(色)になるかは、
ただオブジェクトの面の向きとライトの色(画像)によって決定する。
この特性にもっとも近い特性を持つのは無限光ライトである。
向きを持たない点では(ウ)ポイントライトも近いと言えるが、その他の特性が一致しない。
(エ)環境閉塞(AO)はライトではなく、マテリアルシェーダ(色付け機能)の一つであり、
IBLに併用することが多い機能である。
……実は、拡散IBLライトは影をオンにすると無限光と同じ影を描画する。
理屈的には影を描画してはいけないはずなのだが、このことからも拡散IBLライトが
無限光ライトを拡張した機能であることがわかるのである(笑)。
■頂いたコメント■
拡散IBLライトを使用するには、ライブラリのライトのカテゴリから「IBL」または
「IBL異方性反射(←誤訳)」を開き、シーンの状況に一番近い雰囲気の絵を選んで適用する。
手動でセットするには、まずIBLにしたいライト以外のライトを全てオフにし、
特性パレットで拡散IBLを選択して影をオフにする。それからライトの色を白にして、
マテリアルルームでライトのカラーにイメージマップノードを接続すればいい。
場合によっては特性パレットの環境閉塞にチェックを入れる。
Poserの拡散IBLライトは、シーン全体を包むような巨大な球体があると考え、
そこに画像を貼り付ける。そしてその画像の色がライトの色となって、その方向を向いた
オブジェクトの面に照射される。ここまでは通常のIBLと同じである。
実際には厳密に色分けされるわけではなく、その方向の周辺にある色の影響も受けている。
画像と方角の対応は次のような感じだ。

ここでいう前後左右上下とは、シーン全体を包む球体の前後左右上下のことである。
これは固定で、前といえばZ軸の+方向、上はY軸の+方向、右はX軸の+方向になる。
ライトをどちらに向けても照射される光の方向が回転するわけではないので要注意。
光の方向を変えたいなら、画像自体を反転するなどの工夫をこらさなければならない。
ところで拡散IBLライトは「あらゆる方向から照らされるライト」なので、普通に使うならば
影をオフにしなければならない。すると当然ながらあらゆるところが照らされてしまうわけで、
その結果どこにも影のないのっぺりした絵ができてしまう。
そこで、拡散IBLライトの影を描画するには環境閉塞を使用する。環境閉塞の詳しい説明は
また別の機会に譲るが、「なんか狭いところを黒く塗りつぶす」機能だと思えばいい。
環境閉塞はレイトレース系のシェーダなので、使用する時はレンダリングオプションで
「レイトレース使用」にチェックを入れよう。

画像ファイルの形式は、Poserのイメージマップノードが対応している形式ならなんでもいい。
……ちなみにHDRIのファイル形式の一つであるHDR形式(拡張子.hdr)には対応していない。
これは、通常のIBLとPoserの拡散IBLライトの一つ目の違いである。
元々HDRIは従来の約1776万色では表現できない現実の光を表現するために考案された形式だ。
だから当然、HDRIでないファイル形式の画像を使用したIBLでは、充分な光量が得られない。

(全く同じ設定で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ライトを使用した画像がいまいちリアリティに欠ける、最大の理由がこれである。
特に肌や瞳の輝き、金属物のマテリアルなどは違いが顕著で、素材感が失われてしまうのだ。

もっとも、鏡面反射について言えばこの仕様(バグではない)は順当なものだ。
そもそもIBLでは鏡面反射という成分は存在しない。なぜなら鏡面反射とは物体表面の
「光源の反射像」を疑似的に表現したものであり、反射が正しくレンダリングされ、
かつ光源がちゃんと描画されるならば、鏡面反射は必要ないものだからである。
前述のShadeの画像では、壺と机の光沢(鏡面反射)は0に設定されている。
右側のHDRIフォーマットに現れている光沢は、少しだけ適用された反射値によるものだ。
しかしこれはIBL、しかもHDRIによって光源が反射像として描画される場合の話である。
HDRIに対応しておらず、さらに反射も描画されない、ではどうやっても光沢を表現できない。
仕様上の設計ミスというべきか、このあたりどうもP5→P6の開発に
奇妙な躓きがあるように思われるところだ。
とまあ、嘆くだけではPoserと自分自身の創作意欲を腐らせるだけである。
Poserの拡散IBLライトは、文字通り「拡散」色だけ「画像に基づいてライティング」する
「ライト」なのだということ。これらの特性を踏まえて、次は実践編に移りたいと思う。
ところで。
解答.答えは(ア)無限光。
拡散IBLライトはシーン内に特定の位置を持たず、また照射範囲も持たず、
どんな場所でも同じように照らし出す。物体の表面がどんな明るさ(色)になるかは、
ただオブジェクトの面の向きとライトの色(画像)によって決定する。
この特性にもっとも近い特性を持つのは無限光ライトである。
向きを持たない点では(ウ)ポイントライトも近いと言えるが、その他の特性が一致しない。
(エ)環境閉塞(AO)はライトではなく、マテリアルシェーダ(色付け機能)の一つであり、
IBLに併用することが多い機能である。
……実は、拡散IBLライトは影をオンにすると無限光と同じ影を描画する。
理屈的には影を描画してはいけないはずなのだが、このことからも拡散IBLライトが
無限光ライトを拡張した機能であることがわかるのである(笑)。
■頂いたコメント■
›› Read More
拡散IBLライト・まずはCGの話 / 1996年10月05日
問題.
次の(ア)〜(エ)のうち、拡散IBLライトにもっとも近い性質を持つと思われるものを
一つだけ選びなさい。
(ア)無限光 (イ)スポットライト (ウ)ポイントライト (エ)環境閉塞(AO)
というわけで、多少間が開いてしまったがようやく拡散IBLライトである。
といっても、拡散IBLライトについては既に優れたテキストがネット上に存在する。
原理的なところはほげほげさんのブログが詳しいし、
http://reviewgames.cocolog-nifty.com/trashcan/2005/09/ibl_0a1b.html
T2さんのフォーラムには、本格的なIBLを使用する為のPythonスクリプトの紹介がある。
http://www.teatwo.com/forum/viewtopic.php?t=2
というわけで実は改めて自分が特筆するようなことはほとんどなかったりする(おいおい)。
とまあ、それだけでは手抜き臭い(笑)ので、自分なりのアプローチで「Poserでの」
拡散IBLライトとそのライティング手法をまとめてみようと思う。
IBLはCG業界の中でもまだ比較的新しい技術だ。それを説明するためには、まず
グローバルイルミネーション(Global Illumination、以下略GI)を説明しなければならない。
GIは日本では大域照明とも訳される。その意味を一言で表すなら、
「ライト(光源)以外の光も、より現実的に計算(=レンダリング)しよう」というものだ。
現実の世界は、ライトから発せられたもの以外にも様々な光に満ちている。
窓から差し込む光の、床や壁からの照り返しで明るくなった室内。
よく晴れた昼下がり、直射日光が当たらなくても充分に明るいビルの谷間。
赤い傘を差せば顔が赤みがかって見え、カクテルの入ったグラスは複雑な光模様を描き出す。

照り返しとは拡散反射のことだ。Poserでも物質の色のことを拡散色・拡散値などと表すが、
それは物質に吸収されずに、表面の微細な凹凸で乱反射した光の事を指す。
(凹凸がなくてただ真っ直ぐに反射したら、それは鏡面反射や反射光そのものだ)
物質に色があるということは、つまりその色の光を乱反射しているということで、
その物質表面で拡散した光も微弱ながら周囲を照らしているのである。
それは頭上に広がる空も同じだ。
空が青く見えるのは、太陽の光が大気中で乱反射し、青以外の光の波長が吸収されるからだ。
言い換えれば日中は太陽の光以外に、空全体から空色の光が降り注いでいるのである。
グラスの光模様はどうだろう? レイトレースが使えるレンダラでは、光の反射や屈折で
ものの見え方が変わるところ、反射像や屈折像は描画することができる。
が、実は反射・屈折する「光そのもの」を描画することはできないのだ。
Poserのキャラクタに手鏡を持たせて、角度をつけて強い光を当ててみよう。
手鏡で反射されたはずの光の輪は、どこを探しても見つからない。
レイトレースは虫眼鏡で黒い紙を燃やすことができないのである(当たり前だって!)。
これら拡散反射光(間接光)や天空光、コースティクスなどは
ライトとその光を受けるオブジェクトだけを計算する従来のレンダラでは表現できない。
疑似的に、フィルライトをいくつも用意して柔らかな間接光を表現するのが関の山だ。
それに対して、周囲のオブジェクトも含めて二次反射光をとことん計算するのがGIだ。
GIレンダリングの手法にはいくつか種類がある。古くからメジャーなラジオシティ、
Shadeでおなじみのパストレーシング、フォトンマッピングなど。
パストレーシングとフォトンマッピングの特徴を組み合わせたものもあって、
3ds MaxやMAYAにも使用されているmental rayのファイナルギャザリングや、
Shade Proに付属する外部レンダラCALLISTOなどがそれにあたる。
GIレンダラの特徴は、リアルな絵が仕上がるかわりに、どれも時間がかかるということだ(笑)
光の特性をよりリアルにシミュレーションするわけだから、まあ当然である。
さらにライティングやレンダリングの設定項目を適切にコントロールしないと、
時間はかかるけれども品質はいっこうに向上しない。ある意味シビアな世界なんである。
IBLはそんなGIにおいて、ライティングの手間を一気に引き受ける画期的な技術だ。
IBLはイメージベースドライティング(Image Based Lighting)の略で、その名の通り
画像ファイルの色や輝度情報に基づいてシーン内のライトと周囲からの照り返しを決定する。
イメージ的には、シーン全体を覆う大きな球体があって、そこに画像が張り付いていると
考えればいい。そしてその球体から、画像の色と輝度を持った光がシーンに降り注ぐ。

この手法の何が画期的かというと、
メインのオブジェクト以外の周囲の環境を作り込む必要がないこと、
画像を取り換えるだけでライティングを一変できること、
そして張り込んだ画像をそのまま、背景画像としても使用できることである。
背景とライティングの不一致に悩む必要はもうないのだ。
(本当に実用的な背景を得るには、かなり大きなサイズの画像が必要なのだけれども)
ところが一つ問題があって、画像から色の情報を得ることはできたものの、
画像自体の光量がライティングに代用できるほどには足りなかったのである。
もともと通常の画像形式では赤緑青各色8bit256階調、16,777,216色しか表現できない。
たったこれだけで現実世界の豊かな光を表現しきるのは、とても無理な話だったのだ。
そこで、通常の24bit・16,777,216色を遥かに越え、階調を可変的に記録することができる
HDRI(Hyper Dynamic Range Image)という画像形式が新たに考案された。
このフォーマットを使うと、露光のアンダーな情報もオーバーな情報も一緒に格納できる。
それでもってIBLはより繊細な表現が可能になったのである。
と、ここまでが本来のIBLの話。
Poserの拡散IBLライトは、このIBLの「画像から周囲の光を求める」という部分を
疑似的に再現したものである。
どのへんがどのように疑似的なのか。というところで、長くなったので続きはまた次回。
ついでに解答も次回(笑)
*
えー、業務連絡ー。業務連絡ー。
今晩からいよいよ翼ある者展が始まります。
投稿期間は日曜の晩23時59分までですので、皆さん奮ってご参加下さい〜。
■頂いたコメント■
次の(ア)〜(エ)のうち、拡散IBLライトにもっとも近い性質を持つと思われるものを
一つだけ選びなさい。
(ア)無限光 (イ)スポットライト (ウ)ポイントライト (エ)環境閉塞(AO)
というわけで、多少間が開いてしまったがようやく拡散IBLライトである。
といっても、拡散IBLライトについては既に優れたテキストがネット上に存在する。
原理的なところはほげほげさんのブログが詳しいし、
http://reviewgames.cocolog-nifty.com/trashcan/2005/09/ibl_0a1b.html
T2さんのフォーラムには、本格的なIBLを使用する為のPythonスクリプトの紹介がある。
http://www.teatwo.com/forum/viewtopic.php?t=2
というわけで実は改めて自分が特筆するようなことはほとんどなかったりする(おいおい)。
とまあ、それだけでは手抜き臭い(笑)ので、自分なりのアプローチで「Poserでの」
拡散IBLライトとそのライティング手法をまとめてみようと思う。
IBLはCG業界の中でもまだ比較的新しい技術だ。それを説明するためには、まず
グローバルイルミネーション(Global Illumination、以下略GI)を説明しなければならない。
GIは日本では大域照明とも訳される。その意味を一言で表すなら、
「ライト(光源)以外の光も、より現実的に計算(=レンダリング)しよう」というものだ。
現実の世界は、ライトから発せられたもの以外にも様々な光に満ちている。
窓から差し込む光の、床や壁からの照り返しで明るくなった室内。
よく晴れた昼下がり、直射日光が当たらなくても充分に明るいビルの谷間。
赤い傘を差せば顔が赤みがかって見え、カクテルの入ったグラスは複雑な光模様を描き出す。

照り返しとは拡散反射のことだ。Poserでも物質の色のことを拡散色・拡散値などと表すが、
それは物質に吸収されずに、表面の微細な凹凸で乱反射した光の事を指す。
(凹凸がなくてただ真っ直ぐに反射したら、それは鏡面反射や反射光そのものだ)
物質に色があるということは、つまりその色の光を乱反射しているということで、
その物質表面で拡散した光も微弱ながら周囲を照らしているのである。
それは頭上に広がる空も同じだ。
空が青く見えるのは、太陽の光が大気中で乱反射し、青以外の光の波長が吸収されるからだ。
言い換えれば日中は太陽の光以外に、空全体から空色の光が降り注いでいるのである。
グラスの光模様はどうだろう? レイトレースが使えるレンダラでは、光の反射や屈折で
ものの見え方が変わるところ、反射像や屈折像は描画することができる。
が、実は反射・屈折する「光そのもの」を描画することはできないのだ。
Poserのキャラクタに手鏡を持たせて、角度をつけて強い光を当ててみよう。
手鏡で反射されたはずの光の輪は、どこを探しても見つからない。
レイトレースは虫眼鏡で黒い紙を燃やすことができないのである(当たり前だって!)。
これら拡散反射光(間接光)や天空光、コースティクスなどは
ライトとその光を受けるオブジェクトだけを計算する従来のレンダラでは表現できない。
疑似的に、フィルライトをいくつも用意して柔らかな間接光を表現するのが関の山だ。
それに対して、周囲のオブジェクトも含めて二次反射光をとことん計算するのがGIだ。
GIレンダリングの手法にはいくつか種類がある。古くからメジャーなラジオシティ、
Shadeでおなじみのパストレーシング、フォトンマッピングなど。
パストレーシングとフォトンマッピングの特徴を組み合わせたものもあって、
3ds MaxやMAYAにも使用されているmental rayのファイナルギャザリングや、
Shade Proに付属する外部レンダラCALLISTOなどがそれにあたる。
GIレンダラの特徴は、リアルな絵が仕上がるかわりに、どれも時間がかかるということだ(笑)
光の特性をよりリアルにシミュレーションするわけだから、まあ当然である。
さらにライティングやレンダリングの設定項目を適切にコントロールしないと、
時間はかかるけれども品質はいっこうに向上しない。ある意味シビアな世界なんである。
IBLはそんなGIにおいて、ライティングの手間を一気に引き受ける画期的な技術だ。
IBLはイメージベースドライティング(Image Based Lighting)の略で、その名の通り
画像ファイルの色や輝度情報に基づいてシーン内のライトと周囲からの照り返しを決定する。
イメージ的には、シーン全体を覆う大きな球体があって、そこに画像が張り付いていると
考えればいい。そしてその球体から、画像の色と輝度を持った光がシーンに降り注ぐ。

この手法の何が画期的かというと、
メインのオブジェクト以外の周囲の環境を作り込む必要がないこと、
画像を取り換えるだけでライティングを一変できること、
そして張り込んだ画像をそのまま、背景画像としても使用できることである。
背景とライティングの不一致に悩む必要はもうないのだ。
(本当に実用的な背景を得るには、かなり大きなサイズの画像が必要なのだけれども)
ところが一つ問題があって、画像から色の情報を得ることはできたものの、
画像自体の光量がライティングに代用できるほどには足りなかったのである。
もともと通常の画像形式では赤緑青各色8bit256階調、16,777,216色しか表現できない。
たったこれだけで現実世界の豊かな光を表現しきるのは、とても無理な話だったのだ。
そこで、通常の24bit・16,777,216色を遥かに越え、階調を可変的に記録することができる
HDRI(Hyper Dynamic Range Image)という画像形式が新たに考案された。
このフォーマットを使うと、露光のアンダーな情報もオーバーな情報も一緒に格納できる。
それでもってIBLはより繊細な表現が可能になったのである。
と、ここまでが本来のIBLの話。
Poserの拡散IBLライトは、このIBLの「画像から周囲の光を求める」という部分を
疑似的に再現したものである。
どのへんがどのように疑似的なのか。というところで、長くなったので続きはまた次回。
ついでに解答も次回(笑)
*
えー、業務連絡ー。業務連絡ー。
今晩からいよいよ翼ある者展が始まります。
投稿期間は日曜の晩23時59分までですので、皆さん奮ってご参加下さい〜。
■頂いたコメント■
›› Read More