【3DCG】PBR(物理ベースレンダリング)とは?

本記事では3DCGを扱う上で頻出する「PBR」という概要についてまとめていきたいと思います。

PBRとは

PRBという語は「Physically-Based Rendering」の略で、これは日本語では「物理ベースレンダリング」と訳されます。
具体的には「物理ベース」という名の通り、現実空間での光学現象を再現する描画のことを指します。

さて、「現実の光学現象」とはどのようなものを言うのでしょうか?
以下のツイートの動画をご覧ください。

こちらの動画では、ガラスの蓋の湾曲に沿って内側のオリーブが屈折して見えたり、ガラスの面の角度によって反射の違いが見えるのがわかります。

「人が物を見る」とは物体から跳ね返った光が目に届くということですが、この歪みや反射なども含めて、最終的に目に届く像は光の振る舞い(≒光学現象)によって決まります。

そして現実世界では光を屈折させる物質、吸収する物質、反射しやすい物質など、さまざまな物質が存在し、それらの性質や、見る角度によって物は歪んだり、透明に見えたり、外を反射したりさまざまな見え方をします。

PRBは、こういった現実世界での光の紆余曲折を、計算で再現する描画方法のことだと言えます。

また、PBRを実現するためのレンダリング処理のことをPBS(Physically-Based Shading/物理ベースシェーディング)といいます。

PBRで関わる変数/処理

このPBRのための計算処理に関わってくる変数や要素を見てみましょう。

この記事で紹介するもの
・アルベド(拡散反射光)
・スペキュラー(鏡面反射光)
・マイクロファセット
・メタル(金属)
・フレネル反射

アルベド(拡散反射光)

物体の「色」は、物体の表面で拡散する光(拡散反射光)の波長に由来しています。
例えば赤いリンゴは、他の色を吸収して赤の波長の光を多く拡散させるので赤く見えます。

引用: wiki – GianniG46
上図「diffuse reflection」が拡散反射光

この拡散反射する光の色と、その色の光を反射する割合(比)が「アルベド(Albedo)」です。
(「diffuse(ディフューズ)」も同義で使われます)

リンゴの例で分かるように、アルベドの指定は3Dモデルの色に強い影響を与えます。(≒色を決定する)

・光のエネルギー保存
PBRではエネルギー保存の法則を守るように調整されます。
具体的には「物体から出る光は、入射した光より明るくならない」、また「吸収される光と反射/拡散する光の総量が等しくなる」などの処理がされます。

スペキュラー(鏡面反射光)

ある光を拡散する場合もあれば、逆に全ての光を反射する素材もあります。
入射した角度に対し、反対側に反射(正反射)する光のことを「鏡面反射光」といい、この反射率を3DCGではスペキュラー値と呼びます。

スペキュラー値を大きくすると鏡のような見た目を生みます。
また前章の拡散反射光と異なり、入射した光の色をそのまま反射するのが特徴です。

マイクロファセット

今しがた鏡面反射光は入射光を正反射する…という話をしましたが、現実の物体は全ての光を正反射するのではなく、実際には表面に微細な凹凸があり、それらによって複雑に反射するとされています。

これを「マイクロファセット」といい、PBRの計算処理ではこの振る舞いを考慮した計算がされます。

引用: Basic Theory of Physically-Based Rendering
面に微細な凹凸があり、光が複雑に反射している図

マイクロファセットによって、周りの風景が映り込む鏡面/曇ったような鏡面という表現が可能になります。

メタル(金属)

アルベド・スペキュラーとは別の指標として用いられるのが「メタル(金属)」です。
3Dモデルに映りこみが発生するかどうかは、このメタルの値が大きく影響します。

金属には非金属(絶縁体)より反射率が高く、入射した光の多くは表面で散乱するという特徴があります。
また、反射光に色がついて見えることがある(例:金、銅)なども含め、「金属」であるかの変数が計算処理に加えられます。

フレネル反射

水面を覗き込むとき、真上から見ると水中がよく見えますが、角度によっては水面の向こう側の景色が映り込んで見える現象があります。
これを「フレネル反射」と言います。

引用: o-dan
湖の手前は水中がよく見えるが、奥は景色が映り込んでいる(フレネル反射)

具体的にフレネル反射とは(違う屈折率をもつ物質の)面に光が入射したときに一部を反射し、一部を屈折する現象のことですが、CGにおいては特に角度に応じて反射率が異なることを指します。

例えば、真正面から当たる光と、浅い角度(面に対して水平に近い角度)で当たる光では、後者の方が反射率が高くなります。
その例として下図では、球の中心あたりは暗く映り込みが少ないのに対して、球のエッジの部分では周りの景色の反射が強くなっているのがわかります。

PBRでは、その他の変数で定まった反射率にフレネル反射の考慮を加えて描画します。

まとめ

本メディアはWebARを中心としてAR/VRをテーマにしておりますが、3Dシーンをレンダリングする上でPBRは関わってくる概念。ということで今回は概要をまとめてご紹介しました。

次回は実際の3Dモデルの規格(glTF等)ではどういう対応がされているかなどまとめたいと思っています。

参考

Basic Theory of Physically-Based Rendering
物理ベースレンダリング入門 その① – LIGHT11