background

Superflyがいろん・3

2016年10月01日(Sat)

さて、パストレーシングの手法はだいたいわかった。光の経路を懇切丁寧に計算する代わりに確率で端折るから、品質を上げたければ試行回数を増やしてね、というのが前回の内容だ。ではパストレーシングの手法を用いればそれで物理ベースとやらが達成できるのだろうか。残念ながら答えはNOだ。肝心の「光は物質に衝突した時、どの方向にどれだけどんな光を反射するのか」という部分、すなわちマテリアルが物理法則に基づいている必要がある。

というわけで再登場の図。

160925-09

この図で肝心なのは、入った以上の光が出てくることはない(発光体を除く)という、ごくまっとうな物理法則だ。CG界隈ではこれをエネルギーの保存則と呼んだりする。

入射光>(拡散+鏡面+レイトレース)反射+屈折+皮下散乱など

ところが、旧来のマテリアルではこの法則に平気で逆らうことができた。分かりやすいのが人体であるにもかかわらず環境成分に値が入っていたり、拡散値に1より大きい値が入っているマテリアルなどだ。

160930-01

こういう構成になるのは、もちろん「ある程度はリアルになる」からだ。旧来のレンダリングでは暗いところが現実以上に暗くなる。IDLで間接光が回りこむこともなかったし、SSSでにゅるっと広がることもなかった。何よりリニアなんちゃらが広まる前は、光の量そのものであるレンダリング結果を、人間の目の感じる世界だと誤解していたのだから。様々な制約の中でなんとか人の目の感じる世界に近づけようという、苦肉の策だったのだ。

しかし、そういう非現実的なマテリアル、よく言えば個性的で創意工夫に満ちたマテリアルは応用が利かない。真っ暗な中で人肌が光ったりするし、専用のライトセットでないと見栄えが悪かったりするし。

理想的なマテリアルとはなんだろう? 現実世界で測った値を設定すれば、現実の質感を再現するマテリアルだ。ではどのような値を測れば、現実の質感を表現できるだろうか。

様々なパラメータが取り上げられては検討されてきたが、現在主流なのは、以下の3つのパラメータを使う方法だ。

  • アルベド
  • 粗さ、もしくはなめらかさ
  • 反射率、もしくは金属であるか否か

説明の前に、旧来の反射成分について考えてみよう。

拡散反射と鏡面反射とレイトレース反射は、最初の図に示されるように、本質的には同じものだ。物質表面の凹凸によって方向が変わっただけで、反射であることは変わらない。だとしたら、それらを別々に設定して足し合わせる旧来のマテリアルは、考え方からして物理的ではない。実際、明るめの拡散反射色を持つマテリアルでは、ライトによっては色飛びを起こしたりする。加算によって入射光より強くなってしまったからだ。

160930-02

足して1以上にしないという考えはリアル指向の人々の間では一般的で、今までにも代替拡散に代替鏡面成分を合算するような試みは広く行われてきた。海外のマテリアルではこれを実施しているものも多く、ノードが複雑化する一因にもなっている。しかし、そこまでやっても現実的なスペキュラはなかなか実現できなかった。

160930-03

ではどうすれば解決できるだろう。マテリアルを従来の拡散反射と鏡面反射で考えるのではなく、色と凹凸という二つの要素で考えるのだ。

アルベドとは入射光に対する反射光の比を表す言葉だ。ある光が入ってきた時、どんな光をどれだけ反射するか。要するに物質の色である。ひらたく「色」「Color」と表現されることもある。Poser 11付属のSuperfly用マテリアルではAlbedoと表現している。

パストレーシングも従来のレンダラと同じく光の量(エネルギー)を計算している。従って、ここでいう「物質の色」とは、人間の目に映る色ではなく、目の歪みを取り去った各スペクトルの反射率で定義される色である。とはいうものの、Superflyでは色関係にガンマ補正をかけるので、具体的にはsRGBで見た目通りになるように指定すればいいんだけど。つまり今までの(カラー)テクスチャマップをほぼ流用できる。ただし、光沢や陰影を取り除いた、本当に色だけの情報を持つのっぺりとしたマップだ。

粗さとは物質表面の状態だ。バンプやノーマルマップでは表現しきれない、ツルツルかザラザラかというところを定義する。完全にツルツルなら0、完全にザラザラなら1。レンダラによっては1と0が逆になってるものもあり、その場合は粗さではなく滑らかさというパラメータになる。

160930-04

アルベドと粗さのパラメータによって、これまで拡散反射と鏡面反射、レイトレース反射に分かれていた成分を統一的に表現することができる。たとえば石炭の反射率はsRGBにして4%程度だと言われている。

160930-05

表面の状態によって、同じ反射率を持つ物質でも反射の表れ方が大きく異なる。アルベドと粗さのパラメータは、これをうまく表すことができる。というか、表せるようにシェーダが組まれている。

金属であるかどうか、というのはこれまでにないパラメータかもしれない。実は、金属は非金属にはない特徴を持っている。金属光沢だ。これは自由電子を持つ誘導体特有の特徴なんである。金属は非金属に比べて圧倒的に反射率が高く、さらに反射光は自分自身の色となる。

160930-06

金属であるかどうかは、だいたいメタリックというパラメータ名で定義されている。非金属は0、金属は1で表し、不純物が混入したりや異物が付着すると中間の値を取る。表面に不透明な塗料が塗られたものは金属光沢を持たない。逆に、お菓子の包装紙やアルミ箔などは金属光沢を持つ。

160930-07

さて。

発光体や透過体、皮下散乱や体積などはまた別の専用シェーダを使う。しかし、大半の物質はこのアルベド・粗さ・メタリックの3種類で表現することができる。そしてこれらは従来のマテリアルよりもずっと現実的で、直感的だ。金属かどうかは考えればわかるし、粗さや色だってだいたい想像できる。もちろん何かの資料をあたったっていい。なにより、適切に設定さえすれば、誰がどんなライティングでレンダリングしたって同じような質感に見える。黄金を設定したいならsRGB (255, 225, 150)ぐらいの色でメタリック1、粗さはお好みで、というわけである。

160930-08

しかしまた当然の帰結として、物理ベースでは旧来のマテリアルは使えなくなったわけである。Poserはこのへん頑張っていて、旧来の拡散/鏡面反射設定でもそれなりに似通った見た目をある程度再現してくれている。しかしあまりにも複雑だったり、イレギュラーな計算をさせる設定はさすがにフォローしきれないし、役割を終えたシェーダのいくつかは別物として再利用されている。物理ベースの恩恵を受けるためには、それらを物理ベース的な考え方で見直さなくてはならないだろう。

っていうわけで、次はレンダ設定と簡単なマテリアル設定、どっちがいいかな?(人まかせ)



Comments

>しかし、そういう非現実的なマテリアル、よく言えば個性的で創意工夫に満ちたマテリアルは応用が利かない。
>真っ暗な中で人肌が光ったりするし、専用のライトセットでないと見栄えが悪かったりするし。

ゴフッ(吐血

金属マテリアルのハイライト色についてKyotaroさんが書かれているのを読んで、そういえば20年近く前に「3Dフォトリアリズムツールキット」という当時の3D者のバイブル本みたいな厚い本を買ったなぁ~と思い出し掘り返してみたら、本の最後のほうに汎用資料として

・金属サーフェス属性値
・プラスチックやゴムのサーフェス属性値
・透明素材の屈折率
・光源の色温度

というリストがあり、各種金属のRGB、ハイライト色の有無、拡散反射、鏡面反射などの値がずらずらと書いてありました。
当時私が使っていたレンダラがかなりしょぼいものだったので使える値はせいぜい透明素材の屈折率くらいだったんですが、むしろ今の時代の物理レンダラにこそお役立ちの資料となりそうな予感。

ていうか、今なら紙の書籍じゃなくてネットで情報拾ってくるのか当たり前なのかもしれない…

Name
ManiHoni #0ecWsDRU
Site
URL
Post Date
2016-10-01
Post Hour
09:39:17

Edit

あっ

>ManiHoniさん
しっかり、気を確かにー!!(ゆっさゆっさ)
そういう手法ももちろんアリだと思っております。一つの突き詰めた表現といいますか。まあ、その表現方法がアーティストごとに異なるのが、物理ベースが広まった背景の一つではあるみたいですね。映画やゲーム制作現場では分業が基本ですし、汎用性第一みたいな。

「3Dフォトリアリズムツールキット」、おお、この表紙は何度か立ち読みした記憶が……(懐
昔は買うよりも立ち読みした方が頭に入るから!などとうそぶいて、色んな書籍を読み漁ったものです。
今はもう体力的にできませんが(笑)。

汎用資料、いいですねえ。光源の色温度とかも役に立ちそうな気がします。いつでも参照できるまとまったデータってなかなかないですからね。ネットの情報は二次情報だったりして、イマイチ使っていいのか不安ですし。
いやまあそれでもググるんですけども(汗

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2016-10-01
Post Hour
17:03:14

Edit

待て待て待てい

頭のいい人ふたりが仲良ししているところに水を差しに参った(笑)。
いやもう「個性的で創意工夫に満ちた非現実的なマテリアル」は「現実離れした美形」を生み出すために有用ですからね!
ええ、例えば人間離れした能力を持つ美形機械人形とかにぜひとも必要ですからたぶん!(えっ催促してませんよ?)

それはともかく今日まさにSuperflyレンダに使おうとM4のとあるキャラ改造テクスチャマテリアルをいじっていて「‥‥拡散値が1.2ひょっとしてこれはまずくね?」と思って変えてみた自分はそれなりに真相の近く(2本通り挟んだ路地裏くらい)にはいたのですな!

Fireflyで有用だった設定がSuperflyでは変更を要するというのはある意味良いことのように思えますね。それだけPoserが進化したってことですもんね。4回転なしの上位進出はもはやありえず4回転2回は当たり前! 今期は全種類成功じゃねえのっていうか2年後にはアクセルもありだよね? くらいの進化だよね(笑)

途中ちょっと眠くなったけど(おいコラ)おおむね付いていってます安心してください。
ということで物理レンダ上で有効な簡単なマテリアル設定がいいな。もやもやっと理解したところを具体的な例でテストしてみたい!(もはや己のための記事扱い)
汎用性‥‥大事よね(キラキラ)

Name
rose #4SZw2tfw
Site
URL
Post Date
2016-10-02
Post Hour
02:53:26

Edit

ようやく理解できました。

キッパリ!
本当に分かったのかどうかは信じてもらうしかないですが(^^
最近難しい物理の本(自分比)を読んでいる為か、勿論kyoutaroさんの解説も分かり良く、物理ベースのレンダリングの正体が理解できました。

>っていうわけで、次はレンダ設定と簡単なマテリアル設定、どっちがいいかな?(人まかせ

これは順を追って両方ともと言う事で(^_^;)
今の所、Superflyで人肌を使うときは、なるべく初期のV3V4辺りの単純なマテリアルを使っています。
それでも自分の目からすると、綺麗にレンダリング出来る様に思うのですが、自分でそれに付加してSSSを使ったマテリアルが出来たら良いなと思っています。

Name
sannzi #u2lyCPR2
Site
URL
Post Date
2016-10-02
Post Hour
22:15:46

Edit

では簡単なマテリアル例から~

>roseさん
えーと、ヤツの抱えてる問題は顔じゃなくてボディだから……まあ顔も調整は必要なんですけども(笑)

そうそう、今や4Fとか4Loとかが実戦に組み込まれる時代ですからねえ。進化のために多大な努力を払った世代があっての今の躍進の世代というか、何かしら移り変わるためのキッカケみたいなのは必要だと思います。
>拡散値1.2
説明の前に気づかれるとは、流石の勘というかシンクロニシティといいますか(笑)
FireflyにはFireflyの長所や良さがあるので、状況によって使い分けていきたいですね。

>sannziさん
なんとか伝わりましたでしょうか。物理ベースは概念から入った方が把握しやすいだろうと思って、ちょっと遠回りした感じはありますが目指すところなどを書いてみました。相変わらず文章書くと長くなっちゃう病が発症してどうしようもないですね(笑)

一応マテリアルもレンダ設定も両方やるつもりですので安心くださいませ(笑)

物理ベースの考え方からすると、人体もそんなに複雑なマテリアルツリーは組まなくていいと思うんですよね。というわけで自分のノードはものすごく単純ですので、あまり期待しないでお待ちくださいませ(^^;

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2016-10-03
Post Hour
21:55:48

Edit

Post Comment

管理者にだけ表示を許可する


Trackback

※このブログにトラックバックを送信する場合、お手数ですが本文中にブログ該当記事へのリンクを含めてください。

トラックバックURL:http://rutenshikai.blog63.fc2.com/tb.php/525-91e4c31b



Menu

Profile

Kyotaro

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

Categories

Calendar

07 | 2017/08 | 09
- - 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非推奨。