Evaluate in IDL
2016年08月09日(Tue)
さて、そういうわけで宿題になっていたPoserの小ネタを拾い上げていこうかなと思う。
前々回のSuperflyで被写界深度を試してみた話。で気づいたAOノードの最下欄、いつの間にか追加されてたEvaluate in IDLという項目。どうも2014にはあったっぽい。

また、AOはノードだけでなくライトでも別枠で設定できるけど(たぶんそっちを使ってる方が多いと思う)、ライトの特性パレットにも項目が増えている。

Evaluate in light ……なんで名称が違うのかツッコミたいところだけど、たぶん同じものを指しているんだと思う。
というわけでさくっと基本小道具を並べてみる。

拡散IBLライト1灯+無限光1灯。Fireflyでガンマコレクションを使用せずにレンダリング。無限光の影になっている部分が、均一な暗さになっていることがわかる。
AOが実装されたとき、それは細かな影の計算が行き届かず、不必要に明るくなってしまう細部を黒く塗りつぶすというシェーダだった。

で、Poser 8でIDLが実装されたとき、このAOによる塗りつぶしは機能しなかった。

確かにライトの当たっている立方体の側面は暗くなってない。というか逆に照り返しを受けて明るくなっている。しかし影になっている部分でも、きちんと陰影が現れていることがわかる。
もともとIDLは二次反射光を丁寧に計算しますよ、というものだ。直接光が当たっていなくても、近くにある物体から拡散反射したわずかな光を計算し、明るいところは明るく描画する。どんな光も当たってないところは暗いまま。そういう計算をちゃんとしていたから、「狭そうだから塗りつぶしてしまえ」という、AOの擬似的な陰影描写はそもそも不必要だった。
とはいうものの、IDLを使いつつAOのオオザッパーな陰影付けはそれはそれで欲しいとか、陰影付け以外の用途で使ってた(自分のことだ)から使えるようにして欲しい……みたいな要望はやっぱりあったんだろう。
では拡散IBLと無限光、別々に効果を確認してみる。まずはライトの設定のEvaluate in lightから。

無限光では立方体の明るい部分がなくなり、ドーナツの下などにぼんやりした影が現れている。一方の拡散IBLライトでは変化は見られない。このことから、Evaluate in Lightは無限光(など)のAOを描画する機能だとわかる。
実際、無限光のIDLを計算中、赤い点の中に見慣れない黒い点が現れている。

じゃあ、ノードによるAOはどうなんだろう。

なんとこちらは、チェックを外した状態でIDLでも陰影が描画されているので、どちらも変わらないという結果になった。計算中は確かにチェックを入れた状態だと黒い点々が現れるんだけども、レンダが始まると結果はまったく同じなんである。じゃあ追加した欄の意味ないじゃん! とツッコミそうになったけど、もしかしたら自分の何かしらの設定ミスとかあるのかもしれない。なんか自信なくなってきた。
ええっと。
Fireflyでの効果はわかったけど、じゃあSuperflyでの効果はどうなんだろう。といいつつ、これはもう結果がわかっている。SuperflyではAOノードを接続してはいけないと怒られた。だからノードによるAOはそもそも描画できない。代替拡散に乗算で繋いで……というようなことも試してみたけど、どうやらAOの計算自体が行われなくなるみたいだ。で、ライトのAOもFireflyのIDLと同じく無効になる。
Superflyは基本、物理的に正直な計算を行うレンダラだから、二次反射光の計算はもちろん行われているし、むしろ計算しないという選択肢がない。したがって陰影はちゃんとついている。擬似的な陰影付けのAOは不要なのだ。というか、今のところSuperflyで従来の「嘘をつく系」シェーダは使わない方がいい、ということなんだろう。トゥーンにしろベルベットにしろ、AOにしろ。どうしても今使いたいという人は、Cyclesグループの中にBrender版のシェーダがちゃんとあるから、ぜひトライして詳細を教えて欲しい(笑)。

こちらは比較のためにFireflyでガンマコレクションを2.2にしてレンダリングしたものとSuperflyレンダ。多少の差はあるものの、だいたい同じような結果になっているのがわかる。狭い部分の描画はやっぱりSuperflyの方が正確だ。
ちなみに、Superflyでの拡散IBLライトはどうも強度にガンマコレクションがかかってるっぽい。

IBLに接続するべきhdr画像はガンマコレクションを必要としないし、そもそも本来的に「色」に補正をかけることはあっても「強度」に補正をかける必要はないはずなんだけど……。先ほどの比較画像で明るさがほぼ同じになっているのは、右側の色を調整したライトである。ややこしいから、もう諦めて強度の値を変化させた方がいいと思うけど(笑)。
まあこういう怪しい動作のところは、そのうちサイレント修正入るかもしれないけどねー。