読者です 読者をやめる 読者になる 読者になる

Substance Painterのチュートリアルでお勉強その1 物理ベースレンダリング(PBR)


Substance Painter Tutorial – Fundamentals 01: Physically Based Rendering

 

Fundamentals 01: Physically Based Rendering

基礎01 物理ベースレンダリング(PBR)

 

 

f:id:hildsoft:20170124031128p:plain

PBRって何?

影を含めた描画を行う際に、光が物の表面にどのように影響するかをより正確に表現する手法です。

 

PBRを使うメリットは?

 

  1. 表面の設定を適当に調整していく必要が無く、現実的な素材をより簡単に作ることができます。(材質設定が楽)
  2. 素材は全ての光源の状況下でも正しく見えます。
  3. 作業者間で首尾一貫した製作ワークフローを提供します。

 

 

SubstancePainterって何?

PBRのシェーダーで使用する画像ファイルを出力します。

 

 

f:id:hildsoft:20170124031515p:plain

 

PBRのワークフロー

PBRは主なワークフローとして2つあります。

  • Metallic/Roughness
  • Specular/Glossiness

の2つです。

 

このどちらも、シェーダーと特定のマップで構成されます。

シェーダーはゲームエンジンや3DCGツールなどで用意されているので、マップを用意するだけです。

 

Metallic/Roughnessは

 

  • BaseColor
  • Roughness
  • Metallic

 

を使います。

 

Specular/Glossinessは

 

  • Diffuse
  • Glossiness
  • Specular

 

を使います。

 

また共通のマップとして

 

  • AmbientOcclusion
  • Normal
  • Height

 

を使用します。

 

Heightはオプションです。

Heightマップは視差のためと、素材表面の凹凸を際立たせるために使われます。

ニセのディスプレイスメントマップみたいなものです。

 

どちらを使うべきか

この2つのワークフローですが、どちらが主流と言うことは無いです。

実装方法の違いなので、環境が対応している方を使用しましょう。

 

例えば、

Unity5では、

  • Metallic/Smoothness
  • Specular/Smoothness

が使えます。

 

UE4では、

  • Metallic/Roughness

が使えます。

 

Unity5の項目にあるSmoothnessは実質、Glossinessと同じものです。

SubstancePainterではプリセットが用意されていますので、出力時にどの形式で使うか簡単に選択できます。

 

 

PBRの仕組みはかなり複雑です。

もっと詳しく知りたいのであれば、ガイドが用意されていますので、参照してください。

PBR Guide | allegorithmic

 

2017/01/24追記 始め

PBRガイドは、小林 信行様による日本語訳版がありますので、こちらを見た方が分かりやすいかもしれません。

『THE COMPREHENSIVE PBR GUIDE Volume 1: The Theory of PBR by Allegor…

『THE COMPREHENSIVE PBR GUIDE – Vol. 2: Practical guidelines for creat…

2017/01/24追記 終わり

 

 

f:id:hildsoft:20170124032900p:plain

 

ワークフロー

ここからは、Metallicのワークフローについて説明していきます。

 

Metallicなので、

  • BaseColor
  • Roughness
  • Metallic

を使います。

この3つが主要なマップになります。

 

BaseColorはsRGBのカラーマップ

RoughnessとMetallicはグレースケールマップ

です。

 

BaseColor

BaseColorマップは2つの情報を持っています。

  • diffuse reflection(散乱光)の色
  • metal reflection(金属反射)の色

です。

 

diffuse reflectionは、普段目にしている物質の色だと思ってください。 

赤く見えると思えば、赤です。

metal reflectionは、現実の世界で測定されたデータで、自由に作り出せないけど、既に知られている値なので、使うことはできます。

 

Metallic

Metallicマップはマスクとして使用します。

金属か非金属かの情報を持っており、これにより、どの割合で光が拡散するか、反射するかなどを決定します。

ちなみに、白は金属、黒は非金属を表します。

灰色の部分は、金属部分と非金属部分の境目だったり、汚れなどで部分的に金属、非金属が混ざっている場所だったりします。

なので、普通は黒か白が大部分を占めます。

 

Roughness

Roughnessマップは材質の表面の細かな状態を表します。

鏡のようにスムーズ、コンクリートのようにザラザラという感じです。

表面の状態は、光の反射に影響を及ぼします。

スムーズな表面は、1方向に強く光を反射し、

ザラザラな表面は、光を拡散させます。

 

値の設定

PBRは複雑な計算をするのですが、心配する必要はありません。

Metallicのワークフローでは、2つのことを考えれば良いのです。

  1. この素材は金属か?
  2. この素材の表面はスムーズか、ザラザラか?

これだけであとの複雑な計算はシェーダーがやってくれます。

 

 

f:id:hildsoft:20170124042826p:plain

 

まとめ

  1. SubstancePainterはPBRで使用するマップを作成できます。
  2. 出力した画像ファイルはUE4やUnity5のPBRシェーダーで使用します。
  3. 従来の(blinn/phong) diffuse、specularマップは質の悪い結果をもたらします。名前は同じでもPBRで使用するマップとは別の物です。

 

動画に沿ってざっくりと整理してみました。

間違いなど発見した方は遠慮なくコメントください。