ラベル PBR の投稿を表示しています。 すべての投稿を表示
ラベル PBR の投稿を表示しています。 すべての投稿を表示

2015年10月31日土曜日

Youtube動画「Physically Based Rendering In Substance」の英語トランスクリプトしてみた

はじめに

PBRとSubstanceに興味始めたころから気になっていたAllegorithmicが公開している「Physically Based Rendering in Substance」を英語トランスクリプトしてみました。全編50分あるので時間かかりましたが、4つのパートに分けて例の如くYoutubeの自動字幕機能+自分の耳を使って全英文を起こしてみました。

講演者の口癖「you know, kind of, I guess」等の書き起こしても意味がないフレーズはカットしていますができるだけ再現したつもりです。Substance(Designer, Painter共に)を使用したPBRワークフローおよび英語に興味ある方は(Youtube右下のSubtitles/CC機能をEnglish:ONにして)シャドーイング教材としてご活用ください。

各トランスクリプトした動画

Physically Based Rendering In Substance Vol.1/4(英語字幕付き)

Vol.1は、スライドを使ったPBR基礎に関する説明がSubstance Designer/Painterの実例も交えて行われています。具体的には「PBRって何?(基礎理論、利点、新たにアーティストが行う事)」、「PBRのキー要素(エネルギー保存則、フレネル、ラフネスは一番重要)」、「反射性輝度(Intensity of Reflectivity)を制御する3要素(フレネル角度、ラフネス(エネルギー保存則)、F-Zero(反射性))」の説明がされています。


Physically Based Rendering In Substance Vol.2/4(英語字幕付き)

Vol.2は、まずSpecular / Glossiness⇔ Metallic / Roughnessの2つの手法をそれぞれ説明し、その後Algorithmic推奨のMetallic / Roughness手法にフォーカスしてCrossbowのサンプルを使用してSubstance Designer上でフローの説明を行っています。 (まだ途中段階)


Physically Based Rendering In Substance Vol.3/4(英語字幕付き)

Vol.3は、Texture Guidelinesの説明(Base Color/Diffuse/AlbedoおよびMetal)をしながらSubstance Painter, Substance Designer(Crossbow)の実践を交えてPBRワークフローの説明をしています。主にスライドを使ったPBR基礎に関する説明が行われています。


Physically Based Rendering In Substance Vol.4/4(英語字幕付き)

Vol.4は、前半は「マテリアル表面がメタルか非メタルか?」で分類して、メタル(銅、鉄)⇔非メタル(プラスティック)をSebastian Lagarde氏のブログ情報「Feeding a physically based workflow」を参考にSubstance Painter上でデモをして、後半はSubstance Designer上でCrossbowの幾つかのマテリアル(Wood, Iron、Burlap)を紹介し、Woodのノード構成に焦点を当てて細かな解説をしてくれてます。主にスライドを使ったPBR基礎に関する説明が行われています。

2015年2月23日月曜日

Marmoset Toolbat2の「Tutorial: PBR Texture Conversion」を訳してみた

相変わらず、Physically-Based Rendering(以下PBR)について興味は持っているものの良く理解できてないのですが、Marmoset Toolbag2の公式サイトに久しぶりにPBRチュートリアルの新作「Tutorial: PBR Texture Conversion」が上がっていたので英語の勉強も兼ねて全訳してみました。上述したようにPBRよく分かってない人が訳してるので変な訳があったら突っ込んでいただけると幸いです。※特に不明な部分は(?)としてます。




目次

  • PBR:誤解と虚像
  • PBR:何が変わったのか?
  • 従来のコンテンツフローの復習
  • テクスチャ変換:従来手法→PBRスペキュラー
  • メタルネスワークフロー vs スペキュラーワークフロー
  • テクスチャ変換:スペキュラー→メタルネス
  • テクスチャ変換:メタルネス→スペキュラー
  • 比較と否定
  • マテリアルロジック


チュートリアル:PBRテクスチャ変換

本チュートリアルでは「従来のシェーダー用に作られたコンテンツをどのようにPBRシェーダー用に変換できるか」また「あるPBRフローから別のPBRフローに変換する方法」、そして「従来のワークフローとの様々な差異」について説明していきたいと思います。本チュートリアルは中級~上級者を対象にしているので、基本的な概念は簡潔に述べるのみにとどめたいと思います。PBR初級者の方は、まずJeff Russelと私が書いたPBR基礎理論とPBRチュートリアルを読んでみてください。これらのチュートリアルはPBRの基本的な概念が詳細に説明されています。

PBR:誤解と虚像

本格的に始める前に、幾つかの要素をクリアーにしておきたいと思います。なぜなら「PBRって何?」とか「PBRシステムに必要とされるテクスチャの入力タイプ」の観点において多くの混乱が存在するからです。

まず「メタルネスマップを使用することはPBRシステムで必須ではありません」。そして「スペキュラーマップを使用することはアセットがPBRではない」事を必ずしも意味しません。私はPBR関連のフォーラムで、スペキュラーマップやグロスマップを作成するアーティストを見かけると「なぜPBRを使用しないのですか?」と質問してる書き込みを良く見かけます。なので、まずは「PBRって実際何なの?」という点について分析してみましょう。

PBRの基本的な考え方は「物理的に正しいライトと物質を表現する洗練されたシェーダーと現実世界のマテリアルを表現するためのもっともららしい計測値を持つアートコンテンツとの組み合わせ」です。PBRは本質的に「コンテンツ生成とレンダリングの全体論的なシステム」であり、実装レベルや使用しているツールやエンジンに依存して、しばしば複数の流儀に分かれがちです(一般的にシェーダーモデルやテクスチャの入力タイプにおいて)。

さらに「従来のいかなるコンテンツをPBRシェーダーに読み込む事は物理的に正しい結果を保証できない」という誤解した書き込みも先ほどの「なぜPBRを使用しない」と同様に良く見かけます。空想的なシェーダーをPBRで表現するのは「half of the equation」に過ぎません、論理的にアートコンテントを計測する必要があります(?)。

最後にもう一つ「ディフューズとアルベドの定義」についても述べておきます。これら2つの用語は本質的には同じもので、"オブジェクトのベースカラー"を意味して、しばしば互換性をもって使用されています。

PBR:何が変わったのか?




図:従来のシェーダーコンテンツ/PBRシェーダーコンテンツの比較図


PBRシステム用のコンテンツを生成したりコンバートする方法を深く理解するためには「シェーダーがどのように変化したかを確認する」のが重要です。最も大きな違いの一つは「現在のシェーダーにおけるライティングの計算がどのように先進的になったか」でしょう。現在では、我々はリアルな影を投影する動的な光源や正確な環境ディフューズやスペキュラー反射を提供するイメージベースドライティングを使う事ができます。これは「テクスチャに直接ライティングや反射あるいは影の要素をもはやペイントする必要がない」ことを意味します。今後はますます我々は「特定のライティング状況をベイキングするよりもマテリアルプロパティの再現に注力できる」事も意味します。

さらに、リニアスペースレンダリングは「もはやニュートラルな白いハイライトを得るためにスペキュラマップにディフューズと反対色を書く必要がない」ことを意味し、マイクロサーフェス関数におけるエネルギー保存則(ライトは幅広い領域ほど分散するため、荒いサーフェースほど鈍い光を放つ幅広いハイライトを持つ)は、「手動でスペキュラーマップに荒い領域は暗く、光沢のある領域は明るくする必要がない」ことも意味します。これは「スペキュラーマップは一般的に各マテリアルタイプ用にほぼ均一の値(絶縁体用のグレースケール値、金属用のカラー値)を持ち、マイクロサーフェスマップがほとんどの表面の変化を定義すべき」事を意味します(?)。

従来のコンテンツフローの復習




図:従来のシェーダーコンテンツの例


従来のシェーダーと現代のシェーダの違いを示すために、Darkest of Daysで私が作成したガンモデルを使用して説明しようと思います。このアセットは非常に良いサンプルです。なぜならこのアセットは、PBRパイプラインにおいて通常使われない多くのテクニックを紹介できるからです。例えば以下のような感じです。
  1. ディフューズマップがとても暗いですね。これは特定のライティング環境下でよい結果を得るために微調整をする必要があるからです。
  2. アンビエントオクルージョンやキャビティ詳細は直接ディフューズマップやスペキュラマップの双方に直接ベイクされています。これらのコンテンツは分離した入力経由で追加されるべきで、そうする事でシェーダーはよりインテリジェントな方法でそれらを使用することができます。
  3. グラディエントマップ(勾配マップ)は同様にディフューズマップとスペキュラマップ双方にベイクされます。グラディエントマップはローカルのエフェクト用のマスクを作成するのに便利なツールですが、それらは(既存の)テクスチャに直接乗算するべきではないです。
  4. このアセットがもともと使用しているシェーダーは、グロスマップをサポートしていませんでした。これは「スペキュラーマップが反射とマイクロサーフェースの双方を表現するというダブルの義務を果たす必要があり、その上全体のマテリアルに対して均一の光沢値を使用する」ことを意味します。
  5. スペキュラーの値は、現実世界のマテリアルプロパティを説明するよりも(?)目によってセットアップされていました。結果として、黒くペイントされた金属はとても反射し、明らかな理由はないですが、わずかに黄色の輝きを持ち、プラスティックやゴムのマテリアルは十分に反射されませんでした。


テクスチャ変換:従来の手法→PBRスペキュラー

ここまでで、従来のシェーダーとPBRシェーダーの共通の違いを理解できたので、物理ベースのスペキュラーワークフロー用に各コンテンツをアップデートする事ができます。


図:従来のワークフローからPBRスペキュラーワークフローへの変換


まず、アルベドマップとスペキュラーマップからベイクしたライティング情報とグラディエント情報を削除しました。次に、全ての表面の偏角情報(surface variation)を古いスペキュラーマップから新しく生成したグロスマップに移動して各マテリアルのマイクロサーフェス構造を表すためにその基本の値を更新しました。もし既にグロスマップを持っている場合は、その値およびそれらがつじつまが合っているかのダブルチェックをすべきでしょう。例えば、ライフルの基本的な生の金属は一般的にコーティングの艶消し仕上げしたものよりもスムーズで光沢があるでしょう。逆に光沢仕上げにおいて傷ついた表面はより粗い下塗り状態が現れるでしょう。

スペキュラーマップからグロスマップへのテクスチャの変化によって、我々は反射性の値に注力できます。この時点で「対象が金属かそうでないかを特定する」のはとても重要です。(たとえあなたがメタルネスのワークフローを使用していない場合でも、です)。この理由はシンプルで「絶縁体は4%(あるいはsRGBの#383838)周辺の着色していない反射率の値を持ち、最小2%~最大16%の範囲を持つ(ただし宝石以外の幾つかの絶縁体は4%以上の値を持ちます)傾向があるから」です。一方で「純粋な金属はより高い反射率の値を持ち一般的に70%~100%の範囲の値を持つ」傾向があります。このように「マテリアルが何のタイプである事を明確に理解する」事は正しい反射率の値を探索する場合にとても重要です。

PROTIP: 異なる材料でペイントあるいはコーティングされた金属オブジェクトは値を参照する場合は絶縁体と考慮されます。ただし表面が磨り減った部分は金属と考慮します。

メタルネスワークフロー vs スペキュラーワークフロー

より詳細な説明に入る前に、メタルネスワークフローとスペキュラーワークフローの主要な違いについて理解しておく事は重要です。大半のゲームエンジンはいずれか一方をサポートしています。Toolbag2はどちらの手法もサポートしているので、それらのメリットを直接比較する事ができます。


図:メタルネスシェーダー用コンテンツ


2つのワークフローの最も大きな違いは「ディフューズと反射性がどのようにテクスチャ内で定義されているか」です。スペキュラーワークフローでは、これらの値は明確に2つのユニークなテクスチャにセットされています。

一方で、メタルネスワークフローはディフューズと反射性を定義するためにアルベドマップを使っていて、そのマテリアルが金属か絶縁体を定義するためにメタルネスマップを使用しています。この理由は「電気を通す金属は多くの光子(電磁波)が表面上で反射する」事を意味していて、表面を通過した多くの光子は拡散するより吸収されます。よって、金属は通常、拡散要素を持ちません。一方で絶縁体はとても少ない量の光(4%以内)を反射し、マテリアルにヒットしたほとんどのライト情報は拡散あるいは表面を跳ね返って、表面色の色の分散が発生します(?)。

実際には、これはほとんどあるいは全て(もしテクスチャが金属あるいは絶縁体であるがどちらも持たない場合)のディフューズマップあるいはスペキュラマップが無駄な情報になるでしょう。よって、メタルネスワークフローは普通より効率的になります。ですが、同じテクスチャ内にディフューズ要素とスペキュラー要素を格納する欠点の一つはマテリアルの変化によるアーティファクトの発生です。


図:スペキュラーワークフローとメタルネスワークフローの比較図


グロスマップとラフネスマップは同じ情報を定義します、ですが通常互いに逆のスケール値を持ちます。「グロスマップは明るい値ほどスムーズで光沢な表面」を意味しますが、「ラフネスマップは明るい値ほど荒く艶のない(くすんだ)表面」を意味します。幾つかの分野では、"glossiness"という用語は反射性(reflectivity)と同意語とされているので、"roguness"を使う方が混乱を少なくするのではないかと考えてる人もいるようです。ただし、ここで重要な事は「テクスチャをなんと呼ぶか」ではなく「その値が何を表すか」です。もし、まだもやもやしてる場合は、近くのTAやエンジニアと話し合ってみてください。

スペキュラーワークフローの強み
  1. 拡散と反射率が2つの明確な入力に直接セットされていて、従来のシェーダーで作業経験のあるアーティストにとって理解しやすい。
  2. 絶縁体の反射性の制御がフルカラー入力で行う事ができる。
スペキュラーワークフローの弱み
  1. 不正確な結果を引き起こす不合理な反射率を使いやすい(うっかり使ってしまう)
  2. メタルネスワークフローよりテクスチャメモリを消費する。
メタルネスワークフローの強み
  1. アルベドマップがどのマテリアルであろうがオブジェクトのカラーとして定義されていて、これはアーティストにとって理論的に理解しやすい。
  2. マテリアルを2つのカテゴリー「絶縁体」と「金属」に分離して簡略化していて、これは非現実なテクスチャ値でコンテンツを表現する際に難易度を下げている(?)
  3. フルカラーのスペキュラーワークフローよりテクスチャメモリを節約できる。
メタルネスワークフローの弱み
  1. マテリアルの遷移点(material transition points?)で白いラインのアーティファクトを引き起こす事がある。
  2. 絶縁体の反射性を制御しにくい(※1)
  3. アーテイストがそのワーフフローを理解していない場合、メタルネスマップにおいて容易に不合理な値を使用して、システムを破壊できる。
※1:幾つかのメタルネスワークフローはメタルネスマップと絶縁体の反射性を制御するための第2のスペキュラーマップを提供している場合もある。

メタルネスワークフローの方が理解しやすいと主張する人もいますが、個人的には今の所イーブンな印象です。各ワークフロー共にアーティストが不合理なコンテンツを使用した場合、フローが破綻しますし、各アーティストの経験にも依存する所があります。本質的には客観的にどちらが良い手法かと断言する事は難しいと思います。それらは純粋に異なるものなので。

テクスチャ変換:スペキュラー→メタルネス

既に我々は適切にコンテンツを計測できるようになり、2つのワークフロー間の違いも抑える事ができたので、各ワークフロー用のテクスチャに変換する事は実はとてもシンプルです。


図:メタルネスマップの作成


まず全てのマテリアルに対してそれらの表面が非金属(黒)か金属(白)かをアサインする事によりメタルネスマスクを作成してください。もしPSDテクスチャを持っている場合は、このメタルネス情報を構築する作業は様々なレイヤーからマスクコンテンツを使用することによって素早く実現できるでしょう。メタルネスマップはほとんどが白か黒の情報を持ち、汚れやほこりそしてさび等のソフトな変遷のエフェクトの場合のみグレー値を持つべきです。ここでのグレー値は部分的にメタリックなマテリアルにも使用できますが、これらは一般的に極めてレアケースです。通常は金属オブジェクトは幾つかのコーティングを持っていて、絶縁体として振舞います。


図:スペキュラーワークフローからメタルネスワークフローへの変換


一旦メタルネスマップを作ったら、Photoshopにおいて新しいファイルを生成して、ディフューズマップを背景レイヤーとして追加してください。そしてTOPにスペキュラーレイヤーを追加してさらにレイヤーマスクを追加してください。次にメタルネスマップをスペキュラーレイヤーのレイヤーマスクにペーストしてください。見るべき点は「金属表面であるスペキュラー要素」と「絶縁体であるディフューズ要素」で、これらは「メタルネスワークフローにおいて適切なアルベドマップを持っているかどうか」を意味します。

テクスチャ変換:メタルネス→スペキュラー

メタルネスワークフローからスペキュラーワークフローに変換するのは同様に簡単です。必要なのはアルベドマップからディフューズ情報とスペキュラー情報を抽出して、明確なディフューズマップとスペキュラーマップに分離する事です。


図:メタルネスワークフローからスペキュラーワークフローへの変換


ディフューズマップ

  1. Photoshopにアルベドマップを読み込みます
  2. 真っ黒(#000000) のFillレイヤーを新規作成します
  3. 2で作ったFillレイヤーのレイヤーマスクにメタルネスマップをペーストします

スペキュラーマップ

  1. オリジナルのアルベドマップを複製してFillレイヤーのTOPに移動します
  2. 別のFillレイヤーを#383838で新規作成します
  3. 2で作ったFillレイヤーのレイヤーマスクにメタルネスマップをペーストします
  4. レイヤーマスクを反転します

比較と否定

ここでは(上で説明した)2つの異なる変換ワークフローの効果を比較してみたいと思います。


図:スペキュラーワークフロー、スペキュラー→メタルネスに変換した結果、メタルネスをスペキュラーに変換した結果


注記しておくべき重要な点として「ベースのコンテンツは最初に合理的な値を計測されていたので、その変換プロセスもとても正常に作用している」という点です。もしベースコンテストが正常に計測されていなければ、その変換において大きな結果の差異を引き起こす事になるでしょう。同様に、もしある特定の色つきの反射を持つ絶縁体のようなマテリアル(これは一般的に極めてレアで、通常は髪の毛あるいは虹色マテリアルような特別なマテリアル用のカスタムシェーダーで表現するのが望ましい)を表現する場合、変換プロセスにおいて幾つかの情報を失うでしょう。理想的には、対象のレンダリングシステムのみにコンテンツは生成するべきです。このような変換作業はシステムを変更する場合や古いコンテンツを更新したり、複数のシステム用にコンテンツを生成する必要がある場合のみ使うべきでしょう。

マテリアルロジック

"合理的に正常に計測された値"とは何を意味するのでしょうか?残念ながら、これは答えるのが難しい質問です。なぜなら表現しようとしているマテリアルがどのタイプか依存し、激しく変化するからです。チートシート(cheat sheet)を作成する代わりに「マテリアルロジック(material logic)」と(私が勝手に)呼んでる概念について説明したいと思います。

チャートやスキャンデータにこだわるのはちょっとした"精神的支え"にしかなりません。まず、再現したいと思っている全マテリアルのデータを見つけるのは難しいです。よって、自分自身でどの値が適切かを決断する幾つかのロジックが必要になります。次に、同じマテリアルタイプの表面であっても、時期・磨耗・仕上がり等様々な状況に著しく依存して異なってきます。

(この論理を実現する上での)最初のステップは対象オブジェクトが作られているマテリアルの種類が何であるかを理解する事です。多くのオブジェクトにとってこれは非常に簡単で、その見た目を見る事でそれが金属、プラスチック、ゴム等であるかを認識できます。ですが、幾つかのオブジェクトはより複雑で、様々なマテリアルから作られているパーツを含んでいるかもしれません。ここでは「研究があなたの友」となります、リファレンス画像や似たような現実世界のオブジェクトを観察して、特定のオブジェクトがどのように作られてるかを詳しく調べる必要があるでしょう。


図:マテリアルリファレンス画像の例1(カメラ)


一旦、各オブジェクトが何の種類のマテリアルで作られているかを知る事ができれば、結果として様々な結論にたどり着く事ができるでしょう。例えば、金属は絶縁体よりも多く反射しますし、ゴムは一般的にプラスチックより一般的に荒いですし、コンクリートは通常はアスファルトより明るい等・・・です。これらのほとんどはシンプルな観察を通して理解する事ができると思います。 この時点で、あなたは生成したいテクスチャの質についてより具体的に考慮する事ができるようになっていると思います。例えば、塗料はくすんだ質感から光沢のある質感まで様々な異なった仕上がりになる傾向があります。プラスチックも同様で、金属はどのように表面が磨かれてるかに微妙に依存するでしょう。


図:マテリアルリファレンス画像2


結論として、PBRシステムで作業する事は(今までと)同様に、周囲の現実世界のマテリアルを観察し再現するスキルといった、ゲームアートを作る上で常に必要なアーティスティックなスキルが求められます。PBRシステムの基本概念を理解する事は重要ですが、最終的には各アーティストのアーティスティックな直感が必要という事です。

2014年6月15日日曜日

Marmoset Toolbatの「Tutorial: Physically Based Rendering」を訳してみた

先日公開した第1弾「Basic Theory of Physically-Based Rendering全訳」に引き続きPBRおよび英語の勉強も兼ねて、Marmoset Toolbag2のサイトに掲載されている「Tutorial: Physically Based Rendering」を全訳してみました。PBR自体良く分かってない人が訳してるので変な訳があったら突っ込んでいただいたり、この資料を基にPBRに詳しい人と色々とお話できれば幸いです。そしていい加減実践作業に移ろうと思います。※前回同様、不明な部分は(?)としてます。




物理ベースレンダリングチュートリアル~あなたもできるPBR

本チュートリアルは、あまり技術的な内容に入り込まない程度に基礎的なアートコンテンツ生成および様々なPBR標準の背後にある幾つかの根拠をカバーし、幾つかの共通の誤解を解消する事を目的にしています。また、Jeff Russellが素晴らしいチュートリアル"PBR基礎理論"を書いているので、読んでいない方はまずこちらを読む事をお勧めします。 本チュートリアルを書くにあたってJeff Russell、Teddy BergsmanそしてRyan Hawkinsには大変お世話になりました。また、 Wojciech KlimasとJoeri Vrommanには追加のアーティスト目線での見解、そして素敵なアートを提供していただきました。この場を借りて御礼させていただきたいと思います。

目次

  • 新しい標準
  • PBR FAQ
  • 入力要素と専門用語
    • エネルギー保存則
    • アルベド
    • マイクロサーフェス
    • 反特性
    • フレネル
    • アンビエントオクルージョン
    • キャビティ
  • マテリアル値の探索
  • テクスチャ素材の生成
  • Artist:Q&A:WojciechKillmas 
  • Artist:Q&A:Joeri Vromman
  • 参考文献

新しい標準

PBRは計算能力の向上によりゲーム業界の標準に急激になろうとしていて、開発者誰しもがそのアートコンテンツパイプラインの標準化を求めています。つまりPBRは「どのように我々がアートを生成しレンダリングするか」について再定義を行わせるほどの存在となってきています。


図:PBRの例


物理ベースレンダリング(PBR)は現実世界のマテリアルを正確に表現するための表面の計測値を使用したリアルなシェーディング・ライティングを使用した概念に基づいた手法です。

PBRは厳密な一連のルールをベースに多くの概念が存在します。例えば、現在様々な手法が提案されているPBRシステムの正確な実装方法といったようなものがそれにあたります。しかしながら、全てのPBRシステムは「できるだけ正確にレンダリングする」という同一の理論に基づいているので、多くの概念は容易にプロジェクトからプロジェクト、エンジンからエンジンに移植が可能です。Toolbag2はPBRシステムにおいて今後使用するであろう共通の入力パラメーターを網羅しています。

レンダリングの質よりも、(現実世界のマテリアルを正確に再現するという)無矛盾性の方が現実世界のマテリアル計測値を使用する最も大きな理由です。矛盾のないベースマテリアルを使用する事はアーティストにマテリアル生成作業において推測しやすい状況を導き出すでしょう。また、アートディレクションの視点から見ても、各アーティストが作成したコンテンツがいかなるライティング状況においても見た目が自然になる事を容易にすることでしょう。

PBR FAQs

チュートリアルを始める前に、未経験者がPBRについて語る際に通常出てくる共通の質問をカバーする事は重要だと思いますので、ここでは質疑応答形式でそれらを紹介したいと思います。

1)私はPBRシステムの使い方を知りません。私はアートコンテンツの作り方を0から学びなおす必要はありますか?

ほとんどのケースでその必要はありません。もしあなたが前世代(PS3世代)のシェーダー(すなわち動的なパーピクセルライティングを使うシェーダー)の経験があるのであれば、あなたは既にPBRシステム用のコンテンツ生成に必要なほとんどの知識を持っている事になります。(PBRの)各専門用語がアーティストにとって障害になる大きな要因の一つです。なので、私は以下に各技術用語のセクションを設けて、各用語をアーティストにとってできるだけ噛み砕いて説明しています。ここで挙げてるほとんどの概念がシンプルで習得しやすいものとなっていると思います。

もしあなたの経験が純粋な絵画あるいはモバイルゲームのみであれば、ここで説明する新たな技術やワークフローを学ぶ事はかなりのチャンレジになるかもしれません。しかしながら、伝統的なノーマルマップに基づいたワークフローを習得するよりは難しくないはずです。

2)アーティストは彼らが作りたい各マテリアルのために偏光カメラシステムを用いて各物質に対して写実的あるリファレンスを取得する必要があるのでしょうか?

いいえ。一般的に共通のマテリアル用のリファレンスはスタジオ側で提供されると思います。代わりに、QuixelのMegascansサービスのようなサードパーティからの既に計測された値を容易に使用する事ができるでしょう。アーティスト自身でスキャンデータを生成する事はとても技術的で時間のかかるプロセスになります。よってほとんどのケースでは必要はないでしょう。

3)もしPBRシェーダーを使用したなら、それはアートワークも物理的に正確になるという事なのでしょうか?

必ずしもそうではないです。単にPBRシェーダーを使用する事はアートワークを物理的に正確に変えるという事にはならないです。PBRシステムは物理的に正確なライティング・シェーディングと適切に調整されたアートコンテンツの組み合わせとなります。

4)PBRを実現するためにメタルネスマップを使用する必要があるのでしょうか?

いいえ。メタルネスマップは単に反射特性を決定する一つの手法です。ただ、一般的にメタルネスマップはスペキュラーマップ/明度マップを使用するより多かれ少なかれ物理的に正確、といわれています。

5) PBRにするために屈折インデックス(Index of Refraction:IOR)を使用する必要はありますか?

いいえ。メタルネスマップの入力と似ていて、IORは単に反射性を定義する代替手段ですので必ずしも使用する必要はありません。

6)スペキュラーマップはもはや使用されない要素になるのでしょうか?

そうでもないです。スペキュラー反射明度あるいは反射特性はPBRシステムにおいて依然として"非常に重要な"パラメーターです。マップに直接反射特性を設定する事はなくなるかもしれませんが、その要素自体は依然としてPBRシステムにおいて必要とされています。

7)グロスマップはスペキュラマップに取って代わるものなのでしょうか?

いいえ。グロスあるいはラフネスマップはマテリアルのマイクロサーフェース(表面がどれぐらい粗いか滑らかを表す要素)を定義するもので、スペキュラー明度マップに取って代わるものではありません。しかしながら、もしこれまでグロスマップを使用して作業した事ないのならば、(既存のスペキュラーマップをベースにした)グロスマップに詳細情報を加えるために幾分調整が必要になるかもしれません。

8)PBRシステムは定型化した(スタイライズな)アートにも使用できるのでしょうか?

間違いなくできるでしょう。もし目標が幻想的で定型化された世界を創り上げることであれば、正確なマテリアル定義を使用する事は、依然としてとても重要な事です。たとえ虹を放つユニコーンを作る必要があっても、依然としてユニコーンのベースを物理的な光と物質の法則に則るユニコーンを必要とするでしょうから。

この良い例はPixarの作品です。これらはとてもスタイライズされていて、かつ最先端のマテリアルを正確に表現しています。ここではモンスターユニバーシティのPBRに関する素晴らしいFXGUIDEの記事"fxguide feature on Monsters Universit"を紹介しておきます。

入力要素と専門用語

PBRシステムの概念をよく理解していないアーティストはその専門用語のためにおそらくコンテンツ制作フローが大幅に変化すると予想するでしょう。もし現世代のシェーダーおよびアート制作技術での経験があるのなら、既にPBRシステムの多くの要素を既に経験している事になります。

どの種類のコンテンツを作るべきかあるいは、現状のコンテンツにPBRシェーダーをどのように導入していくかを理解する事はおそらく分かりにくいと思います。なので、ここではPBRシステムを始める上での幾つかの共通の用語および概念を紹介したいと思います。

エネルギー保存側

エネルギー保存則の概念は「1オブジェクトは入射した光よりも多くの光を反射しない」事を意味します。


図:エネルギー保存則の比較図~マイクロサーフェスと反射特性(0.0:拡散しやすく荒い~1.0:反射しやすく滑らか)


実用的な目的のために説明すると、(上図のように)より拡散しやすく荒いマテリアルは薄暗く反射し、よりぼんやりとしたハイライトを持ちますが、より滑らかでより反射しやすいマテリアルは鮮やかに反射し、鋭いハイライトを持ちます。

アルベド

アルベドは「基本的なカラー入力要素」で、一般にディフューズマップとして知られてます。


図:アルベドの比較図


1枚のアルベドマップは、拡散光の色を定義します。PBRシステムにおけるアルベドマップと従来のディフューズマップとの最も大きな相違点は、平行光源あるいはアンビエントオクルージョンの要素が欠落している点です。平行光源はある特定のライト状況において不自然な見え方をするため、アンビエントオクルージョンの要素は別個のAOスロットに追加される事になるでしょう。

アルベドマップは時々、従来のディフューズカラーと同様の定義をする場合があります。例えば、メタルネスマップを使っている時にアルベドマップは絶縁体(非金属)のディフューズカラーや金属表面の反射特性として定義される事があります(?)。

マイクロサーフェス

マイクロサーフェスは「マテリアル表面がどれぐらい粗いかあるいは滑らかか」を定義するものです。


図:マイクロサーフェスの比較図


ここでは、エネルギー保存則の理論がどのようにマテリアルのマイクロサーフェスに影響するかを見てみましょう。粗い表面ほど幅広くてぼやけたスペキュラー反射が見られますが、滑らかなサーフェスだとより鮮やかで鋭いスペキュラー反射が見られます。

どのゲームエンジンでコンテンツのオーサリングをするかによりますが、製作したテクスチャはグロスマップでなくラフネスマップと呼ばれる事があります。実際にはこれら2つの種類の違いは小さいですが、ラフネスマップは反転マップを持っているかもしれません(?)。例えば、暗い値は"光沢のある/滑らかな"表面と同等で、明るい値は"荒く/くすんだ"表面と同等です。デフォルトとして、ツールバッグは白を最も滑らかな表面を意味し、黒は最も粗い表面を意味します。もしグロスマップ/ラフネスマップを反転スケールでロードした場合は、glossモジュールのチェックボックス"invert"をクリックしてください。

反射性

反射性は「表面で反射する光のパーセンテージ」を表します。(スペキュラー、メタルネスそしてIORといった)反射性(別名:基礎反射あるいはF0)入力の全種類は「真上から見た時に表面がどれぐらい反射するか」を定義していて、フレネルは「グレージング角度で表面がどれぐらい反射するか」を定義しています。


図:反射性の比較図


絶縁体マテリアルにとって「反射性の範囲がどれぐらいせまいか」を留意するのは重要です。エネルギー保存則の概念と組み合わせる事で「表面の変化は一般的にマイクロサーフェス内で表現されるべき」と結論付ける事が容易になります。与えられたマテリアル種類にとって、反射性はかなり一定に保たれる傾向にあります。反射色ははっきりしない白っぽくなる傾向があり、金属は色がつく傾向にあります。このように、反射性/明度/色がまとめられている1枚のマップ(一般にスペキュラーマップと呼ばれる)は、メタルネスマップとして落とし込まれるかもしれません(?)。

メタルネスマップを使う時、絶縁体の表面(メタルネスマップで0(黒)が全ピクセルにセットされている)は、固定された反射値(linear:0.04, sRGB:0.06)が割り当てられて、アルベドマップを拡散値として使用します。金属表面(メタルネスマップで1.0(白)が全ピクセルにセットされている)は、スペキュラー色と明度がアルベドマップから引き継がれ、拡散色はシェーダー内で0(黒)がセットされます。メタルネスマップのグレー値は部分的に金属として扱われ、アルベドから反射性を参照し、その値に比例して拡散色は暗くなります。(部分的に金属マテリアルは稀です)


図:スペキュラー vs メタルネス


もう一度言っておきます。メタルネスマップは多かれ少なかれ従来のスペキュラーマップより物理的に正確です。しかしながら、その概念はより理解しやすいものとなっています。そして、メタルネスマップはメモリ節約のためにグレースケールスロットに一まとめにする事ができます。スペキュラマップを使用せずメタルネスマップを使用する欠点は、絶縁体マテリアルを正確な値で制御しにくい点です。

伝統的なスペキュラーマップはより制御しやすいスペキュラーの明度と色を提供します。そしてある特定の複雑なマテリアルを再生しようとする際により柔軟な制御を提供します。スペキュラマップの主な欠点は一般的に24ビットのファイル結果として保存されるためより多くのメモリを消費する点です。そしてアーティストに正確な値を取得するために物理マテリアルプロパティの深い理解を要求します。それは見方によって肯定的にも否定的にもなりえます。

PROTIP:メタルネスマップは0~1の間の値を使うべきです(遷移する場合の幾つかのグラデーションは問題ありません(?))ペイントされた金属のようなマテリアルは、塗料は絶縁体なので金属用の値をセットすべきではありません。メタルネス値は対象マテリアルのトップレイヤーを表すべきです。

屈折インデックス(Index of Refraction、以下IOR)は反射性を定義する別のアプローチで、スペキュラマップやメタルネス入力と同等のものになります。スペキュラ入力と最も大きく異なる点は「IOR値は異なったスケールで定義された値」という点です。IORスケールは真空に関してどれぐらい早くマテリアルを通過するかを定義するものです。水を表す1.33というIOR値は水中を通る際に光は真空と比較して1.33倍の速度でゆっくり通過する事を意味します。より詳細はFilmetrics Refractive Index Databaseで確認することができます。

絶縁体の場合、IOR値は色情報を要求しないので直接インデックス領域で入力可能になります。その際は、消滅(extinction)フィールドが0にセットされる必要があります(?)。色を持つ反射をする金属の場合、RGBチャネルにそれぞれ入力する必要があり、これは(マップの各チャネルが正しい値を格納する)一枚の画像マップで実現可能です。

スペキュラマップあるいはメタルネス入力とは対照的にIORを使用する事は一般的にお勧めできません。なぜならIORは通常ゲームの用途として使われないからです。そして多重マテリアルとテクスチャ内で正しい値を取得する事は難しいからです。IOR入力はToolbag2でサポートされていますが、理論的ではなくより科学的な意味でサポートされています。

フレネル

フレネルは「グレージング角度で表面が反射する光のパーセンテージ」です。


画像:フレネル比較図~フレネルとマイクロサーフェースの関係性(横軸0.0-1.0:マイクロサーフェス


フレネルは全種類のマテリアルがグレージング角度で100%反射するようにするには一般的に1にセットすべきです(メタルネス反射モジュールで値を1にロックする事)。より鮮やかあるいはぼんやりしたフレネル結果に影響するマイクロサーフェスにおける分散は自動的にグロスマップ経由で定義されます。

注意:Toolbag2は現在フレネル明度の制御できるテクスチャマップ機能をサポートしていません!!

アンビエントオクルージョン

アンビエントオクルージョン(以下AO)は「大規模スケールの遮蔽光」を表して、一般的に3Dモデルからベイクして生成されます。


画像:アンビエントオクルージョンマップの例


アルベドやスペキュラマップにベイクするのとは対照的に別マップとしてAOを追加する事はシェーダーでスマートな実装方法で使用する事を可能にします。例えば、AO機能が、動的ライトあるはスペキュラ反射からの直接拡散光でなく(Toolbag2のイメージベースライティングシステムの拡散要素である)Ambient Diffuse Lightのみ遮蔽したりする場合に応用できます。

AOは一般的にスペキュラーやグロスマップに乗算するべきではありません。AOをスペキュラマップに乗算する事は以前、不適切な反射(例えば、遮蔽されたオブジェクト上で空の反射がするといった)を軽減するための共通テクニックとして使用されてきました。しかし、近頃はローカルスクリーンスペース反射という内部オブジェクトの反射を実現するより良い手法画存在するので、その手法は使う必要がありません。

キャビティ

キャビティマップは「小規模スケールの遮蔽情報」を意味し、一般的に3Dモデルからベイクしたりノーマルマップから生成する事ができます。


画像:キャビティマップの例


キャビティマップを乗算する際、キャビティマップは表面の凹んだ領域情報のみ含ませ、凸面の領域情報は含めるべきではありません。キャビティマップは、ほとんど領域が白でライトが捉える表面の埋め込まれた領域を表現するための一部の薄暗い領域によって構成されます。キャビティマップは、環境光と動的ライトを使用して拡散およびスペキュラー共に影響を与えます。

代わりに、1枚の反射オクルージョンマップはCavityスロットにロードする事もできます。ですが、この設定をする際はdiffusion cavity値が0である事を確認してください。

マテリアル値の探索

PBRシステムで作業する際に最も難しいチャレンジは、正確で矛盾のない値を探索する点です。インターネット上には数多くの計測値の情報が存在します。しかしながら、十分信頼できる情報をもつライブラリを探すのは苦労するでしょう。

QuixelのMegascanサービスは非常に有益です。それらは現実世界のデータからスキャンしキャリブレーションしたタイリングテクスチャの多くのライブラリを提供しているからです。(現在はベータ版がリリースされている)


画像:QuixelのMegascanサービスのマテリアル値チャート


ほとんどのライブラリのマテリアル値は各研究室の状況下での生のマテリアルから計測されている傾向があります。pureness of material, age, oxidization(酸化)そしてwearといった(Toolbag2の)パラメータ要素は対象オブジェクトの現実世界の参照値にバリエーションを生み出してくれる可能性があります。

Quixelのスキャン値は現実世界のマテリアルから計測されたもので上述したような様々な状況に依存しているため、特にグロス/ラフネスの場合は同じタイプでありながらもしばしば微妙な変化があるでしょう。上述したマテリアル値チャートの値は最初の目安として捉えるべきで確定した/絶対的なレファレンスとしては捉えるべきではありません。

テクスチャコンテンツの生成方法


図:マルチレイヤーにより作成したPBRテクスチャの応用例


PBRシステム用のテクスチャコンテンツの生成方法は数多く存在します:選択する正確な手法は個人の好みやどのソフトを使用しているかにも依存します。ここでは私が以前に作成した上図に示しているレンズマテリアルを例にその手法を簡単に説明したいと思います。

まず、Megascansからタイリングテクスチャの組み合わせを使用し、各表面の種類ごとにToolbagで基本マテリアルを生成します。次に最適なレファレンス、ロジックそして観察が欠落しているマテリアルの値を決定します。Toolbagで基本マテリアルを生成する事は素早く値を調整する事を可能にし、最終結果のとても正確なプレビューを確認する事ができます。私は最終的なベイクをする前に各そのテクスチャをどのように仕上げるかのアイデアをクリアーにするために、よく基本マテリアルを直接自分の高解像度のポリゴンモデルに貼り付けます。

基本マテリアルのセットアップが終わったら、私はPhotoshopにテクスチャとその値を持っていき、論理的手段としてそれらをレイヤーに登録していきます。一番下にはbrass(黄銅)を、nickel plating, matte primer, semi-gross textured paint, painter for letteringそして最後にred glossy plasticを登録します(詳細は画像を参照)。このレイヤーセットアップは、各レイヤー下の様々なマテリアルをシンプルなマスクで明らかにするのを容易にする効果があります(?)。

dDoやMariそしてSubstance Designerでも似たレイヤー機能は実現可能です。


図:各テクスチャ(albedo/reflectivity/microsurface/normal)例


基礎レイヤーのセットアップと様々な着用(wear)ステージを表現するためのブレンド作業を終えたら、幾つかの詳細を追加しました。まず私はdDoを使用して埃と汚れ用パスを生成するためにdDoを使用しました。そしてグロスマップにおいて最適な表面のバリエーションを生成するための調整を行いました。

PBRシステム用のコンテンツを生成するために使用する正確な方法は最終結果よりそれほど重要ではありません。ですので、まずは気楽に実験をしてどの手法があなたのニーズにベストかを確認してみてください。しかしながら、ある特定のライティング環境でのより興味深いマテリアル値の調整は避けるべきでしょう。使用するマテリアルのためのサウンドベースの値は著しくプロセスをシンプルにして、正確性と大規模プロジェクトでのアセットの再利用性を促進し、アセットがどのようにライティングを下としても常に良い見た目になる事が保障されるでしょう。

Artist Q&A

我々はToolbag2がリリースされて以降、次々に公開されるToolbag2上のPBR作品に感銘を受けてきました。ですので、ここでは幾つかの非常に優れた作品を紹介する機会を設けて、その作品を作ったアーティストに幾つかのPBR関連の質問をしたいと思います。

Wojciech Klimas

Wojciech Klimas氏はDNVで働くポーランドのアーティストで、現在はSurvey Simulatorプロジェクトで働いています。Wojciech氏はフリーランスワークとしても活動しています。是非彼のポートフォリオをチェックしてみてください。


図:Wojciech Klimasのアートワーク


Q. PBRワークフローを適応する観点から最も難しい事は何でしょうか?

A. 最も難しい事は、正確なアルベド、反射率そしてラフネスの値を維持する事だと思います。ある一つの特定のライティング状況においてよい見栄えにするためにうそをついたり値を調整する事はいつでも可能です。しかしこれは他のライティング状況で悪い結果を引き起こすかもしれません。もしこの調整を物理的に正確な値を用いてこの調整を正確に行えば、全ての状況において良い結果が得られるでしょう。現実より優れた見た目はないでしょうから:)

当初は、私は1つのスクリーン上でPhotoshnopを使用し、もう一つのスクリーンで異なるマテリアル反射性チャートを参照して作業をしていました。ですが、経験を積めば積むほど値調整作業は容易になってきて、それほど頻繁にチャートの値をチェックする必要はなくなってきました。

Q. 各PBRマテリアル用にどの値を使用するかをどのように決定していますか?

A. 通常インターネット上の研究された値を参照します。ただ、自分自身でマテリアルを計測するのは担当範囲外ではありますが、より理解を深めるために実際に自分自身で計測したいとも考えています。

Q. 素晴らしい見た目にするためのTipsを共有していただけませんか?

A. とても難しい質問ですね。答え得るベストなアドバイスは「物理を勉強する事」ですね:)。物理の概念があるとなぜ各マテリアルがそのように振舞うのかについて実に役立つと思います。イケテル見た目にするためのショートカットはないと思います。純粋に実践、実践、実践する必要があると思います。

Joeri Vromman

Joeri Vromman氏はDAEの学校に行く予定のベルギン在住のアーティストで、また生徒の傍らフリーランスとしても活動しています。彼の作品の詳細はこちらのサイトをご覧ください。


画像:Joeri Vromman氏のアートワーク


Q. PBRワークフローを適応する観点から最も難しい事は何でしょうか?

A. 最も厳しい部分は、様々なソースから有益な情報をまとめる点でした。私はシングルアーティストなので、多くのスタジオが持つような膨大なれソースや便利なツールにアクセスする事ができなかったので。当初はとてもそれが圧倒されるような大変な作業と思っていました。ですが、いったんやり始めればだんだんそのプロセスに詳しくなってきて、各ソースを素早く集める事ができるようになります。私の経験上、そのステップはそれほど大きいものではなかったと言うことは明らかになりました。そして物理ベースシェーダー用のテクスチャを格段に素早く作れるようになりました。

Q. 各PBRマテリアル用にどの値を使用するかをどのように決定していますか?

A. 私が好きな作業方法は以下のステップで構成されています。
  1. 各マテリアルの種類/対象オブジェクトのパーツのリファレンスを集めます
  2. 各マテリアルの種類用の荒いブロックを作る事から始めます。これは正確である必要はありませんが、できるだけ最終イメージに近くなるべきです。そうする事で調整しやすいよいベースマテリアルを持つ事ができます。


画像:Wojciech Klimasのアートワーク2


各マテリアル毎に、まず私は反射率の値を設定します。これらはオンライン上で様々なチャートがあるのでそれらを参照しています。もし特定のマテリアルで反射率の値が見つからない場合、論理的な理由からその値を決定します。(例. 擦り切れてるゴムは反射性は低く、黄銅は銅と亜鉛の融合になるだろう等)

反射率の値は、着手するのに最も簡単なパラメータで、他のマップにとって良いベースになります。絶縁体の場合、非金属が通常反射する微小の範囲内の値にキープ&キープする事は重要です。金属の場合、まず拡散要素を黒くして、最適な反射率の値を探す事が重要です。その後、通常3つのカテゴリ(shiny, middle あるいはrough)においてマテリアルをソートする事により、素早くラフネスの値を割り当てます(?)。次に、アルベドカラーを取り上げ、矛盾なく暗くなりすぎてないかを維持するために注意を払います。私はまた様々な空中画像に切り替えてそのマテリアルが様々なライティング状況において矛盾がないかを確認します。いったんこの初期ステージが終了すると、私はこれらの値をよりよくチューニングするため観測に戻ります。なぜなら全てのマテリアルは異なっていて、PBRの概念を頭に入れておく必要があるからです(?)。この時点で、私は基本的なOverlayをマテリアルのノーマルマップに追加して、凸凹なプラスティックのような感じで、表面のバリエーションを増やしていきます。

Q. 素晴らしい見た目にするためのTipsを共有していただけませんか?

A. 私見ですが、(選択肢から選択する反射性値のように)ある特定のマテリアルが容易に得られたとしても、確実にそれらが信用できるという事ではないと思います。信用できるマテリアルを得るキーは依然として検証中で、現実世界のマテリアルを最終的なテクスチャに説得力のある見た目にいかに変換することができるか、だと思います。

参考文献

2014年5月18日日曜日

Marmoset Toolbatの「Basic Theory of Physically-Based Rendering」を訳してみた

昨今、Physically-Based Rendering(以下PBR)の話題をよく耳にするのですが、その定義が良く分かっていないので英語の勉強も兼ねてMarmoset Toolbag2のサイトに掲載されている「Basic Theory of Physically-Based Rendering」を全訳してみました。上述したようにPBR自体分かってない人が訳してるので変な訳があったら突っ込んでいただけると幸いです。※特に不明な部分は(?)としてます。




物理ベースレンダリングの基礎理論

最近リアルタイムレンダリング界ではPBRに関する話題が熱いです。ただ、その定義の境界線はぼんやりとしていて「その正確な定義が何なのか」について混乱を招きがちです。その曖昧な定義をあえて短く説明するならば「状況により様々な意味がある」と私は答えます。この回答はさらに不満を生じさせそうなので、ここではPBRについて取り上げて「PBRとは何を表すのか」「他のレンダリング手法とどう違うのか」について軽く説明してみたいと思います。この説明はアーティストのような非エンジニアを対象にしているため、数式やコードは一切出さない予定です。

「PBRと以前の手法とで何が異なるか」という質問は、ライトとサーフェースの性質(behavior)を掘り下げると大体解決します。その特徴的なシェーディング能力は、幾つかの旧来の近似方法やアート生成手段と比較して著しく進歩しています。よって、エンジニアだけでなくアーティストもこれらの変化の要因について理解しておく必要があるのではないかと思います。

まず何が進歩したのかを説明する前に、それらをよりよく理解するため幾つかの基礎理論について述べたいと思います。「既に基礎は抑えてるはずだ」という方にとっても理解をより深めるための価値はあると思うので、是非我慢して読んでいただきたいと思います。この基礎理論を読みきれば、Jowのチュートリアル記事"Tutorial: Physically Based Rendering, And You Can Too!"をよりチェックしたくなると思います。

拡散と反射

"diffusion(以下拡散)"と"reflection(以下反射)"は"diffuse"と"specular"としても知られています。これら2つの用語は、表面とライトの相互作用を分離した最も基本要素となります。大半の人は実用レベルではこれらの概念は理解していると思いますが、物理的にはそれらがどのように明確に異なるかは知らない方が多いと思います。

光が表面の境界線に衝突すると"反射(reflect)"すなわち"跳ね返り(bounce off)"が起こります。反射方向は表面の法線の反対の方向になります。これはボールを床に投げつける時の現象ととても似ています。その場合も反対側の角度に跳ね返るので。ツルツルの表面上での症状は鏡と同じ現象になるでしょう。"鏡面反射性(specular)"という用語はこの鏡の現象を描写する時に良く使われて、ラテン語の"鏡"という意味から由来しています。

しかしながら、全ての光は表面から反射せず、通常一部は照明を当てられたオブジェクトの内部に浸透していきます。内部に浸透する光は、マテリアルに吸収されたり(通常熱に変換される)、内部で散乱したりします。この散乱光の一部は表面(入射した場所)とは別の場所から反射され、一回以上眼球やカメラの視界に入ってきます。これは、"拡散光", "拡散", "散乱光"といった多くの名前で知られていますが、全て同じ現象を表します。


画像::光の相互作用の基本要素(拡散と反射)


拡散光の吸収および散乱された要素は全く異なる光の波長であり、それぞれオブジェクトに光の色を与える要素になります。(もし1オブジェクトがほとんどの光を吸収してわずかに青色を散乱すると見た目は青になります)散乱要素は一様にカオス状態で全方向から同じ色に見えるとも言え(?)、鏡のケースとは全く異なります。この近似を使用するシェーダーは1入力として"アルベド(albedo)"を必要とします。これは、内部で散乱して表面の裏側から反射する様々なライト色の一部を表し(?)、時に同意語として"拡散色(diffuse color)"とも呼ばれます。

透光性と透明性

幾つかのケースで"拡散(diffusion)"はより複雑になります。例えば、肌やワックスといったより広い範囲で内部散乱するマテリアルを持つ場合です。これらのケースは単純色計算では成立せず、シェーディングシステムがライトに照らされたオブジェクトの形状や厚みを考慮に入れる必要があります。もしそのオブジェクトが十分薄ければ、散乱光がそのオブジェクトの裏側から見られて、translucent(半透明)と呼ばれる現象が起こります。もしグラス(glass)のように拡散要素が通常より低い場合はほとんどの要素が散乱しないのは明白で、全体像はオブジェクトの片方から反対側へ劣化することなく通過することができます。これらの性質は典型的な"表面に近接した(close to the surface)"拡散とは異なり、通常はそれらをシミュレートするためのユニークなシェーダーが必要になります。

エネルギー保存則

これまでの記述で、我々は重要な結論を導く十分な情報を得てきました(?)。それは反射と拡散は相互に排他的であるということです。これは即ちライトが拡散してライトがまず表面で浸透しなければならないということを意味します(即ち、反射に失敗するということを意味します)。これはシェーディングの専門用語において"エネルギー保存則"の一例として知られていて、表面から放たれる光は本来感じる光よりも必ず明るい(→表面から放たれる光はそこに届いた光よりも強くなることはない)事を意味します。

この法則はシェーディングシステムにおいて実行しやすいといわれてます。それは単純に拡散シェーディングを発生する前に反射光を減算するだけで実現できるからです(?)。これは反射率の高いオブジェクトは少量の拡散光を表示することを意味します?(show little to no diffuse light)。これは単に少量の拡散光に表面に光が浸透する事と同意でその結果ほとんどが反射することになります(?)。その逆もまた然りで、もしあるオブジェクトが明るく拡散する場合そのオブジェクトは著しく反射しにくくなるでしょう。


画像::アルベド一定下での反射性の変遷図


この種のエネルギー保存則は、物理ベースシェーディングの重要な側面の1つです。これはアーティストに(見た目が悪くなりがちな)物理法則のうっかり違反を防ぎ、マテリアル用の反射性とアルベドを用いた手法を提供します。コード内でこれらの制約を強要することは必ずしも良い見た目を生み出すとは限りませんが、これはある種の"過保護な物理学者(nanny physist)"として有益な役割を果たし、アートワークから物理法則を捻じ曲げたり、異なるライティング状況下で不安定な見た目になる事を防ぐことができます。

金属

ほとんどの金属が該当する"電気伝導マテリアル(electrically conductive materials)"は、以下の理由によりPBRにとって重要な要素となります。その理由を以下に述べます。

まず「伝導体(金属)は絶縁体(非伝導体)よりもはるかに反射する傾向がある」点です。伝導体は通常高くて60~90%まで反射を行いますが、絶縁体は一般的にそれらより低く0~20%の間で反射します。これらの高反射性は内部からの散乱光が届くことを防ぎ、金属にとても"光沢ある(shinny)"見た目を与えます。

次に「伝導体の反射性は時々可視の(電磁波)スペクトルを通して変化しその結果それらの反射は淡い色を表す」という点。この反射色特性は伝導体内でも稀ですが、我々に馴染みのある幾つかの金属において発生します(例. 金、銅、黄銅等)。一般的に、絶縁体はこの効果を表さずそれらの反射は色がつかないという法則があります。

最後に「電気伝導体は通常表面に浸透する散乱光よりも吸収される」という理由です。これは伝導体理論において拡散光はいかなる兆候も見せないことを意味します。しかしながら実世界では、酸化物が存在し金属の表面の他の残余物が幾つかの少量の光を散乱させます。

この金属と他の物質(非金属)との間の二重性(duality)は幾つかのレンダリングシステムに"metalness"を直感的な入力として採用する事を可能にします。そのようなシステムにおいて、アーティストは金属属性を持つマテリアルに角度(degrees)を示すことで、従来のアルベドと反射特性を明確に示すよりも時にマテリアルを生成する上でよりシンプルな手段として好まれることがあります。しかし、これは必ずしも物理ベースレンダリングの特徴に必要であるわけではありません。

フレネル

"Argstin-Jean Fresnel"はかなり昔に亡くなった白人ですが、我々は恐らくその名を聞いたことがあるでしょう。なぜなら、彼はある重要な現象を明確に説明したため現象名に彼の名前が刻まれてるからです。彼のその発見が無ければ光の反射について議論することは現在でも難しかったことでしょう。

コンピュータグラフィックスにおいて、フレネルという用語は「異なる角度で異なる反射が発生する事」を表します。具体的には"グレージング角度(grazing angles)"で表面に辿り着いた光はその表面上で消失する(dead-on)光よりも多く反射する傾向が強いといわれています。これは適切なフレネル効果でレンダリングされたオブジェクトはエッジ周辺でより明るく反射することを意味します。我々のほとんどはこの現象を実世界で経験していますし、コンピューターグラフィックスの世界でもその存在は新しいものではありません。しかしながら、PBR用シェーダーによってフレネル数式の計算における幾つかの重要な補正をより有名にしました。(ここではその重要な補正について説明します)

まず「全てのマテリアルにとって反射特性は"グレージング角度"において全て成り立つ」というものです。 これはいかなるスムーズなオブジェクト上に現れる"エッジ"は完璧な鏡のように見えるべきでそのマテリアル特性は影響しない事を表します。実際にいかなる物質でもその表面がスムーズでかつ正しい角度から見た場合は、完璧な鏡のように見えるはずです。これは直感で分かりにくいですが、物理的には正しい現象です。

二つ目のフレネル特性は「角度間のカーブあるいは勾配(gradient)はマテリアル毎に変化しない」というものです。金属はもっとも発散しますが、それらは分析的に説明可能です。

これは我々にとって「リアリズムを仮定することを求められていて、フレネル特性を用いる事でアーティスト制御コストは一般的に減少することあるいは最低限でも我々は既に各マテリアルのデフォルト値を知っていること」を意味しています!

これはある意味良いお知らせです。なぜならこの特性によりコンテンツ生成を単純化できるからです。このシェーディングシステムはフレネル現象を処理していて光沢(gloss)や反射性(reflectivity)といった既に存在する幾つかのマテリアル属性を処理(consult)できる唯一の手法です。


画像::クロムめっきした金属とゴムの基礎反射性


PBRワークフローは(上図に示した)"基礎反射性"(Base Reflectivity)"といった1つあるいは幾つかの手段によりアーティストに明白な仕様を与えます。これは最低限の光量?(the minimum amount)あるいは反射された光の色を提供します。いったんレンダリングされると、フレネル効果はアーティストが指定した値を反射性に加えるでしょう。そしてグレージング角度において100%(真っ白になる)まで加算されます。本質的にここで述べてる内容は基礎であり、フレネル数式はそこから引き継がれ、様々な必要な角度において表面をより反射するよう改良を続けています。

一つ重大な注意点がフレネル効果にはあります。それは「表面が滑らかでなくなればなくなるほど明確に素早くその現象は無くなっていく」という点です。この相互作用に関するより詳細な情報は後の項で述べたいと思います。

マイクロサーフェス

上述した反射性と拡散はいずれも表面の向きに依存します。大規模なスケール上ではこの表面の向き情報(?)はレンダリングされるメッシュ形状に依存します。そしてそのより細かな詳細なはノーマルマップによって表現されるかもしれません(?)。この表面の向き情報を持つことでいかなるレンダリングシステムも拡散や反射を極めて良い結果をもたらします。

しかしながら、依然として大きな要素が一つ欠落しています。それは「現実世界のほとんどの表面がもつとても微細な不完全さ(very small imperfections)」です。具体例としては、適切な解像度のノーマルマップで表面すべきの微細な溝・ひび・目に見えるとても小さな集合体(lumps)等が挙げられます。これらのマイクロスコープ的特長は裸眼では見ることはできませんが、ライトの拡散と反射に影響しています。


画像::荒いマイクロサーフェス上の"ぼやけた"反射


極小表面(以下マイクロサーフェース)の詳細は反射において最も分かりやすい効果を得ます(物質の拡散はそれほど作用しないのでここではこれ以上述べません)。上図のように並行した入射光は粗い表面上では反射する際に各光線が様々な方向に分散します。現実世界でボールが断崖あるいは類似した凸凹した表面に衝突する際、ボールはさらに反射しようとしますが予測できない角度に反射する事でしょう。これと同様に、表面が凸凹しているほど反射光は多様な方向に拡散しその結果"ぼやけた"見た目になります。

残念ながら、シェーディングのために各マイクロサーフェスをまともに評価することはアートプロダクション・メモリ使用量・、計算量の観点から現実的ではないでしょう。我々はどうすればこのシェーディングを実現できるのでしょうか?もし我々がそのマイクロサーフェスの詳細は直接記述するアプローチではなく、"表面の粗さ(roughness)"の一般的な計測値を使用すればかなり正確なシェーダーを記述することが可能になります。この計測はよく"gloss", "smoothness"あるいは"roghness"と呼ばれていて、各マテリアルのこれらの計測値は1枚のテクスチャとしてあるいは固定値として格納することが可能です。

このマイクロサーフェースの詳細は各マテリアルの表現にとってとても重要な特徴となります。なぜなら現実世界は様々なマイクロサーフェスの特徴の集合体のようなものだからです。この"gloss mapping"というコンセプトは決して新しいものではありませんが、物理ベースのシェーディングにおいて極めて重要な役割を果たします。なぜならマイクロサーフェスの詳細は光の反射において大きな影響を持つからです。我々はまもなく実際に見ることになりますが、PBRシェーディングシステムを改良するためにはマイクロサーフェスの特性を幾つか考慮する必要があります。以下ではそれらの考慮すべき点について述べたいと思います。

エネルギー保存則(再び)

我々の仮説のシェーディングシステムは「マイクロサーフェスの細部を考慮し反射光が適切に拡散している」ので、反射する光の正確な量を考慮する必要があります。残念ながら、多くの他のレンダリングシステムはこの点については考慮できておらず、マイクロサーフェスの荒さ(roughness)に依存して反射する光が多すぎたり少なすぎたりする傾向にあります。

その数式が適切にバランスがとられている時、レンダラーは荒いサーフェスをより多くの反射のハイライトを持つように描画します。言い換えると、スムーズな表面で見られるより小さなより鋭いハイライトよりもぼんやりと薄暗いハイライトを表します。この明るさを表現する上での明らかな相違はキーとなります。すなわち、各マテリアルは同じ量の光を反射するけれども、粗い表面であればあるほどより多様な方向に拡散し、スムーズな表面は一点集中した"光線"のように反射するという相違を抑えておくことは重要です。


画像::反射性一定下での光沢の変遷図


ここでは、先ほどとは違った切り口でエネルギー保存則を述べてみました。最初に述べた"拡散/反射のバランス"に加えて、"エネルギー保存則"はいかなるレンダラーにとって"物理ベース"を実現するために最も重要な要素の一つであることが分かっていただけたかと思います。

ようこそ!マイクロサーフェースの世界へ

ここでは、我々がここまで学んでてきた知識の中で重要な要素の1つである「マイクロサーフェスの光沢は直接的に反射の明るさ(brightness of reflections)に反映する」点についてさらに掘り下げたいと思います。これは「一人のアーティストがグロスマップに直接"引っかかれた・凹んだ・擦りむかれたあるいは磨かれた領域"等様々なバリエーションをペイントできる」ことを意味します。そして「PBRシステムは反射形状における変化だけでなく関連する明度(intensity)も描画されるでしょう。"spec mask"/反射性の変化("spec mask"/reflectivity changes)は要求されません(?)。

これは非常に重要です。なぜなら、物理的に関連している二つの重要な現実世界の特性"マイクロサーフェスの細部"と"反射性"が"アートコンテント"と"レンダリングプロセス"において初めて適切に結びついているからです。これは以前に拡散/反射の綱渡り(balancing act)を述べたのと同様に我々は独立して双方の値をオーサリング可能です。しかしながらそれらは関連しているので、それらを全く別々のパラメータとして扱うことはかなり難しいと思われます。

さらに、現実世界のマテリアル計測は反射値が幅広く変化しないことが予想されます(詳細は上述した伝導性物質の項を読んでください)。一つの良い例として水と泥が上げられます。双方のマテリアルはとても似た反射特性を持っていますが、泥は非常に荒く水溜りの表面は非常にスムースなので、それらは反射光の観点からは非常に異なる見た目となります。PBRシステムにおいてそのようなシーンを作成する場合、アーティストはその異なりを反射特性を調整するよりも先にまずグロスマップやラフネスマップを通じてオーサリングする事になるでしょう。具体例として以下の画像を示します。


画像::マイクロサーフェスの例(水と泥)


マイクロサーフェスの特性は反射において同様に他の微細な効果も持ちます。例えば"境界線がより明るい"フレネル効果は粗い表面の場合幾分減少します。(粗い表面の混沌とした特徴はフレネル効果を"散乱"します。その結果、観察者にはフレネル効果が見えにくくなります?)さらに、窪んだマイクロサーフェスはライトを"だます"事が可能です。具体的には、表面に対して何度も反射することにより、光の吸収や明るさの現象を引き起こします。異なったレンダリングシステムはこれらの詳細を様々な方法で処理して様々な範囲に応用します。しかしながら、より粗い表面が薄暗く見える傾向は共通してます。

結論

当然ながら、ここでは述べていないPBRの重要なトピックはまだまだ数多くあります。このドキュメントは基礎的な紹介として重要なものを提供しただけに過ぎません。もしあなたがまだJoeの"PBRアートワークチュートリアル"を読んでいないのならば是非読んでみてください。更なる技術情報を求める方のために、いかに幾つかのお勧めの書籍およびウェブページを紹介しておきます。



もし、それでもまだ答えが出ない熱い質問があれば、Twitter等で質問してみてください。


以上です。