Skip to content

第11回 PBRマテリアル

前回: 第10回 スキンメッシュ基礎 / 次回: 第12回 頂点アニメーション

今回の授業内容

  • PBRが写実表現以外にも必要とされる理由を理解する
  • 光の反射を扱うBRDFモデルに触れる
  • 金属と非金属、粗い面と滑らかな面の違いを比較する
  • URP Lit Shader Graphで質感を調整する
  • 異なる照明環境でも破綻しないマテリアルを制作する

PBRとは

PBRはPhysically Based Renderingの略で、物理ベースレンダリングの意味です
現実世界の物理法則に則って物体の質感を表現する手法の総称です

PBRが必要とされる理由

あたかも現実世界のような表現をCGで実現できれば、ゲームや映像の体験はよりリアルに、より説得力のあるものになります
現代のコンピューターは高性能で、現実世界の光のふるまいをシミュレーションして実写のような映像を作ることも可能になっています

しかしながら、映像表現は必ずしも見たままの現実を再現することが目的ではありません
CGのなかった頃から、映像制作者は様々な形で実写を加工し、時にイラストレーションやアニメーションの形で直接彩色して映像を作ってきました
現代のCGには、クリエイター、アーティストの意図を載せた「必要な現実」を高い自由度で表現できることが求められます

PBRの目的

PBRは、現実世界の光のふるまいをモデル化し、一貫化されつつもアーティストが調整しやすい形で表現するための手法です
物理的な正確さを基準としており、リアリスティックな表現が可能です

また、物理的な正確さが背景にあれば、複数のアーティストが個別に調整したマテリアルを統合しても破綻しない絵作りが可能になります

たとえば、光の反射の取り扱いを勘と経験、最終的な映像の印象だけで行っていると、エネルギー保存の原則に反してしまうことがあります
つまり、物体が受け取った光より多くの光を反射してしまうと現実世界ではありえない表現になってしまいます

こうした感性優先の絵作りは、積み重なれば不自然な明るさの増加や、材質の見え方の破綻につながります
部品単位では問題なくても、統合して複雑なシーンを作り上げる際には調整の玉突き事故を起こしやすく、破綻のない映像を作ることが難しくなります

PBRは物理的な正確さを基準としているため、アーティストがそれぞれの意図で作ったマテリアルを組み合わせたり、照明条件やマテリアル設定が変更されても、映像が破綻しにくいのが特徴です
現代のCG表現において、PBRは写実的な表現を実現するだけでなく、映像制作ワークフローの基盤としても重要な役割を担っています

PBR とノンフォトリアル表現

写真や実写映像のように、現実世界の光景を忠実に再現する表現をフォトリアル表現と呼びます
一方で、イラストやアニメ調の表現など、必ずしも写実的ではないアーティストの感性の世界の表現をノンフォトリアル表現と呼びます

ノンフォトリアル表現は、現実世界の光景を忠実に再現することを目的としてはいませんが、だからといって物理的な正確さを無視しているわけではありません
イラストレーターが緻密に書き込んだイラストであっても、現実世界の光のふるまいを参考にして描かれています
アーティストが自身の目と感性を通じて現実世界の光のふるまいを観察し理解し咀嚼し、デフォルメや誇張を加えて表現しているのがノンフォトリアル表現です

こうしたノンフォトリアル表現をコンピューター上で扱う際は、アーティストの表現意図と現実の物理法則の間で折り合いをつける必要があります
具体的には、現実の反射を簡略化したり、段階化したり、色を誇張したりして、目的に応じた表現を作ります

例えばアニメ調の表現を扱うトゥーンシェーダーでは、陰影を滑らかなグラデーションではなくセル着色由来の2段階や3段階に分けて扱う場合があります
色の分割に限れば物理法則とは異なる表現ですが、光の入射方向や面の向き、ライトの位置などを物理法則に従って計算できれば、自然背景との整合性も保ちやすくなります
特にゲームキャラクターは屋内、屋外、都市、山野など様々な環境で描画されるため、照明環境の変化に応じて意図した表現を保てることに大きな意味があります

時間経過による日照の変化や屋内外の照明の変化など、現実世界の光のふるまいを基準とした表現をノンフォトリアルなキャラクター表現と組み合わせることができれば、現実世界の光景を超えた表現が可能になります
このダイナミクスを獲得するために、ノンフォトリアル表現においても物理的な正確さを取り込んだPBRが必要とされています

PBRとノンフォトリアル表現は排他的ではありません
デフォルメの形は様々ですが、実際の映像制作のワークフロー中ではPBRを踏まえたカスタム表現が適用される場合も多くあります

PBRの実際

現実世界の光景は、太陽や照明器具などからの光が物体に当たり、反射や透過、散乱などを経て、目に届くことで見えています
光の辿る経路は複雑です
光の反射は、物体の材質や表面の粗さ、光の入射角や波長などによって変化します
光は物体の内部に進入し、散乱したり吸収されたりして、表面から出てくる際には入射した光とは異なる色や強さになっていることもあります
これらを正確に扱えなければ、現実世界の光景をCGとして再現することはできません

「物理的な正しさ」の範囲

現実世界の光の振る舞いには、反射、透過、散乱、偏光、波長ごとの違いなど、多数の要素が関わります
現代のコンピューターがどれほど高性能であっても、そのすべてを直接計算することは現実的ではありません
毎秒数百フレームもの画面書き換えを行うゲームで扱うのであればなおのことです

多くの場合、PBRは現実の物理法則を忠実に再現すること自体は目的としていません
映像表現においてはアーティストの調整のしやすさを維持しつつ、現実的な計算時間でレンダリングできることが何より重要です
PBRは主に次の性質を保ちながら、高速にレンダリングできるよう近似計算を行うのが一般的です

性質意味
エネルギー保存反射する光が、受け取った光より不自然に増えない
マテリアルの一貫性同じマテリアルが異なる照明下でも一貫した反射特性を示す
視線依存見る角度によって反射の強さや形が変わる
調整可能性アーティストが少数の意味あるパラメーターで操作できる
実時間性対象端末の時間とメモリの予算内で描画できる

PBRモデルの多くは、総じて「物理的に正しい」ではなく物理法則に整合する制約を持つ、実用的な近似表現を扱うものとして設計、運用されています

PBRのパラメーター

現実の物質が持つ物性を厳密に指定できても、アーティストが直感的に扱えるとは限りません
現実世界が複雑だからといって、パラメーターばかり多くても表現のしやすさにはつながりません

多くのリアルタイムPBRでは、物理的な性質を少数のパラメーターにまとめています
以下はその一例です

パラメーター表す内容
Base Color基準の色
Metallic物体を非金属と金属のどちらとして扱うかの度合い
Smoothness表面の滑らかさと反射像の鋭さ
Normal細かな表面方向
Ambient Occlusion入り組んだ部分を暗くする係数
Emission自身の発光の色と強度

MetallicとSmoothnessを変更した見た目の比較
同じ形とBase Colorでも、MetallicとSmoothnessによって反射の見え方が変わる

これらのパラメーターは現実世界の光の反射に基づきつつも、アーティストが意図した表現を調整しやすいように設計されています

マテリアルと照明

PBRでは、材質の光学的性質をマテリアルのパラメーターとして設定します
その設定とシーンの照明が組み合わさることで、最終的な映像が決定されます

情報決める内容
マテリアル本体色、金属~非金属の度合い、表面の滑らかさ
ライト光の向き、色、強さ
環境周囲から届く光と映り込み
カメラ見る方向によって変わる反射

同じマテリアルを昼、夜、屋内などの異なるシーンへ置いても、その場の照明に応じて自然な見え方を保つことができます
照明が変わるたびにマテリアルを作り直す必要がないことはPBRを使う大きな利点です

BRDFと反射モデル

光沢面で入射方向に応じて反射光が分布する様子の概念図
光沢面で入射方向に応じて反射光が分布する様子の概念図
作者・出典: VonHaarberg, “BRDF glossy.svg”, Wikimedia CommonsCC0 1.0

物体の見え方は、表面へ届いた光の強さだけでは決まりません
同じ材質でも、ライトやカメラの方向が変わるとハイライトの位置や明るさが変わります
PBRはこれらを包括的に扱うアプローチですが、その中でも特に重要な要素が光の反射のモデル化です

一見平面に見える物体の表面が相手でも、微細な凹凸や材質の違いがあるため光の反射を単純に表すことはできません
だからといって、光の反射を光子ひとつひとつの挙動で計算するのは現実的ではありません
説得力のある表現を得るためには、光が物体に入射した際の反射特性を確率的に捉えるアプローチが有効です

BRDFとは

BRDFで扱う入射方向、法線、観測方向の関係
BRDFで扱う入射方向、法線、観測方向の関係
作者・出典: Meekohi, “BRDF Diagram.png”, Wikimedia Commons(著作権者によりパブリックドメインへ提供)

BRDFはBidirectional Reflectance Distribution Functionの略で、日本語では双方向反射率分布関数と呼びます
端的には、物体の表面にある方向から光が入ったとき、どの方向へどの程度の光が反射されるかを表す関数です

図では、表面へ入る光の方向、表面の法線、カメラへ向かう観測方向の関係を示しています
BRDFは、入射方向と観測方向の組み合わせに対して、どれだけ光が反射されるかを返します

反射した光は観測によって捉えられます
つまり目やカメラに届いた時点で初めて光として認識されます
強引にまとめると、BRDFは光の入射と視線の方向を入力として受け取り、観測者が受け取る光の出力を決定する関数と言えます

BRDFのバリエーション

BRDFには、物体の材質や表面の状態によって様々なモデルが提案されています
古典的なランバート反射やフォン反射、Cook-Torranceモデルなどがあり、リアルタイムPBRではGGXやDisneyモデルなどがよく使われます
粗面を扱うオーレン・ネイヤー反射モデルや、布の異方性反射を扱うWardモデルなどもあります

これらは表現の精度と計算量のバランスを取るために、用途に応じて使い分けられます
BRDFはそれ自体が物理的な性質を簡素に近似化したモデルですが、それでも高度な数学的関数であり、計算量が多くなる傾向があります
ゲームのようなリアルタイムレンダリング分野では、計算量を抑えるために更なる簡略化が行われる場合もあります

BRDFとLUT

Shader Graphで2D LUTテクスチャーを参照する構成
2D LUTテクスチャーを使用したBRDFシェーダーの例

2D LUTでのシェーディング例
2D LUTテクスチャーでのBRDF実装例
ライティング計算を大幅に省略して複雑な陰影を表現できる

BRDFの計算は非常に複雑で、リアルタイムレンダリングでは計算量を抑えるために、事前に計算した結果をテクスチャとして保存し、参照する方法も良く使われます
こうしたテクスチャをLUT(Look Up Table)と呼びます

LUTを使うことで、計算量を減らしつつ、材質の見え方を安定させることができます
また、応用例としては、LUTを使って材質の見え方を直接指定することでイラスト調のフォトリアル表現も可能です

PBRの主要パラメーター

PBRでの質感表現で特に支配的なパラメーターは、対象が金属か非金属かを表すMetallicと、対象の表面の粗さを表すSmoothnessです
これらのパラメーターを調整することで、物体の見え方を大きく変えることができます

金属と非金属の区別

光で照らされた際、金属はその大部分を表面で鋭く反射します
一方で非金属では光の一部が物質内部へ入り散乱して色を持って戻るため、ぼんやり広がって反射されます
つまり、対象が金属寄りか非金属寄りかをパラメーター化することで、光の反射の割合を操作できることになります

MetallicはPBRで特に使われるパラメーターの一つで、表面を金属として扱うか、非金属として扱うかを指定します

材質の分類Metallicの基本値
非金属、誘電体0木、石、土、プラスチック、塗料、錆
金属、導体1鉄、銅、金、アルミニウム

鏡面反射と拡散反射

光が直接反射する鏡面反射と、物体内部で散乱して広がる拡散反射は、見え方が大きく異なります
鏡面反射は、視線が反射方向に近いほど強く見え、遠くなれば弱く見えます
一方で拡散反射は広い方向へ散らばるため、視線の向きによる変化は小さくなります

この差を表現できれば、物体の質感をよりリアルに表現できます

反射見え方主に影響する入力
鏡面反射表面で直接反射するハイライトや環境像Smoothness、Fresnel、視線、ライト
拡散反射広い方向へ散らばる色Base Color、法線、ライト

同じ物体であっても、表面の位置によって金属部分と非金属部分が混在する場合があります
例えば汚れていたり、錆びていたり、塗装されていたり、その塗膜が剥がれたりしている場合です
これらはテクスチャーで金属度をマップすることで表現できます

表面の粗さ

金属質の表面でも粗い面では反射が広がり、鏡面反射になるわけではありません
また、非金属でも滑らかな面では反射が鋭く見えます

PBRでは、表面の粗さをSmoothnessというパラメーターで指定します
Smoothnessが高い表面では、微細な凹凸の向きがそろっているため、反射が鋭く見えます
低い表面では反射方向が広がり、ぼけたハイライトになります

環境によっては滑らかさを表すSmoothnessの代わりに粗さを指定するRoughnessを使う場合もありますが、いわんとすることは同じです

Smoothness=1Roughness

マイクロファセットBRDF

リアルタイムPBRでは、表面を肉眼では見えない小さな面の集合として近似するMicrofacet Modelがよく使われます
各微小面は鏡面反射を行いますが、全体としては粗い面の反射を表現します

鏡面反射BRDFは、概念的に次の3要素で構成されます

役割
D Normal Distribution微小面がどの方向を向いているか
G Geometry微小面同士の遮蔽や影をどの程度受けるか
F Fresnel入射角によって反射率がどう変わるか

第8回で扱ったFresnelは、実は演出用の輪郭発光だけでなくPBRの鏡面反射を構成する要素でもあります
実装ごとにGGX、Smith、Schlick近似などの組み合わせが使われ、品質と計算量のバランスが取られます

環境反射と材質の表現

森の風景が金属球に映り込む環境反射の例
環境反射の適用例
非現実的な映像だが、映り込みを扱うことで非現実なりの現実感は付与されている

金属や滑らかな表面は、ライトのハイライトだけでなく周囲の環境を反射します
何もない単色背景では、マテリアルで材質の特徴を設定しても十分な表現ができません

SkyboxReflection Probeを使って周囲の環境を反射に取り込むことで、材質の特徴をより説得力のある形で表現できます

実習:PBRマテリアルを比較する

実習1:同じ形状で材質表現を比較する

  1. 球を4個並べ、同じメッシュと異なるマテリアルを設定する
  2. URP Lit Shader Graphを作成する
  3. Base ColorMetallicSmoothnessをプロパティとして公開する
  4. 非金属で粗い、非金属で滑らか、金属で粗い、金属で滑らかな4種類を作る
  5. ライトとカメラを動かし、ハイライトと環境反射の違いを確認する

最初はNormal Mapや模様を追加せず、3つの基本パラメーターだけを比較します

実習2:具体的な材質を表現する

次の中から3種類以上を作成します

材質MetallicSmoothnessの傾向観察点
未塗装の金属1中〜高環境の色を反射する
粗い石0広く弱いハイライトになる
プラスチック0中〜高本体色と無色に近い反射が見える
0低〜中木目はBase Color、表面加工はSmoothnessで分ける
濡れた面0乾いた状態より高い色を暗くしすぎず、反射の変化を見る

材質の分類と表面状態から初期値を決め、照明下で調整します

実習3:照明条件を変えて材質の見え方を比較する

  1. 昼を想定した明るい照明を作る
  2. 夜を想定して環境光とライトの色、強度を変更する
  3. 演出用に色の付いたライトを追加する
  4. それぞれの条件でオブジェクトの材質の見分けがつくかを確認する
  5. 違和感のある場合はマテリアルのパラメーターと照明のどちらを直すべきか判断し、調整する

授業内課題

同じモデルに対して、性質の異なる3種類以上のPBRマテリアルを作成してください

完成条件

  • URP Lit Shader Graphを使用している
  • Base ColorMetallicSmoothnessをマテリアルから調整できる
  • 金属と非金属を少なくとも1種類ずつ作っている
  • 粗い表面と滑らかな表面を比較できる
  • 明るい環境と暗い環境の両方で確認している
  • 各マテリアルのパラメーターを選んだ理由を説明できる
  • 比較画像または短い動画を提出する

よくある問題

問題確認する場所
Metallicを上げても金属に見えないSkybox、Reflection Probe、Base Color、照明
全体が黒く見える環境反射、ライト、露出、極端に暗いBase Color
すべてプラスチックに見えるMetallicの分類、Smoothness、環境の映り込み
Normal Mapが正しく見えないTexture Type、Normal入力、Tangent Space
場面ごとに色を直す必要があるマテリアルと照明の役割が混ざっていないか
表面が不自然に光りすぎるHDR値、Emission、ポストプロセスを一度無効化する

まとめ

  • PBRは、現実世界の光のふるまいを物理法則に沿ってモデル化し、実用的に近似する手法である
  • 物理的なルールの適用により、異なる照明環境でも破綻しにくく、アーティストが調整しやすいマテリアルを制作できる
  • 写実表現だけでなく、物理法則を土台としたノンフォトリアル表現にも利用できる
  • MetallicSmoothnessにより、金属と非金属、粗い面と滑らかな面の違いを表現できるのが大きな特徴
  • 光の反射にはBRDFモデルが使われる、計算量が多いがLUTによって負荷を抑える手法もある

参考資料