3DCG覚書とかとか

参考書のすみっこ

~普段メモとかしても忘れちゃうのでブログにしました~

EEVEEでのシェーティング(Worldの背景とPrincipledBSDF)のメモ。

モデリング練習に金属製の家具を作っていたら、どうにもシェーディングがうまくいかなかったので、解決方法をメモって行こうと思います。
そういえばベータ版だからと思って使っていませんでしたが、3DView上でのリアルタイムレンダリングがすごく軽くて感動したので、Blender v2.8 のEEVEEレンダーで作業しています。
 

マテリアル設定(Principled BSDF)

こちらのサイトを参考にしてまとめていこうと思います。

bibinbaleo.hatenablog.com

マテリアルは基本的にPrincipled BSDFを使っていきます。
f:id:kuraudo0309:20190120192158p:plain
 

Base Color

モデルの基本的な色となる部分です。
imageTextureを使うと画像からモデルを配色できます(UVの関係設定が必要) f:id:kuraudo0309:20190120230421p:plain:w450
 

Subsurface

表面化散乱というもので、人肌とか大理石などの、内側に光が入り込む感じを表現します。
EEVEEレンダーでは、「Property > Render > Subsurface Scattering」にチェックを入れる必要があります。
f:id:kuraudo0309:20190120230808p:plain:h350 f:id:kuraudo0309:20190120230525p:plain:w450
 

Metal

金属っぽさを表現するもので、基本的に0(金属)か1(金属でない)かです。
下のRoughnessで粗さを表現できます。
 
左が Roughness=0.5、右がRoughness=0
f:id:kuraudo0309:20190120230552p:plain:w450 f:id:kuraudo0309:20190120230715p:plain:w450
 

Specular

日本語で反射、基本的には操作しない値で、自然界では0.5で固定のようです。一応操作すると、ハイライトの硬さが変わりますが、主にRoughnessで変えるので使うことがないです。
 

Roughness

日本語で凹凸、モデル表面の粗さを表現するものでデフォルトは0.5、0でなめらか、1でざらざらになります。
 
左が Roughness=0.5(デフォルト)、右がRoughness=0
f:id:kuraudo0309:20190120230906p:plain:w450 f:id:kuraudo0309:20190120230948p:plain:w450
 

Anisotropic

日本語で異方性、結晶とか(有名なのは液晶)に現れる性質で、屈折率が方向によって違うことを表すらしいですが、モデルではあまり使わないような気がします。
 

Sheen

日本語でつや、布を表現するときに使うもので、シックな光沢を表現できます(デフォルトは0)。
 
左が Sheen=0.5、右がSheen=0
f:id:kuraudo0309:20190120231051p:plain:w450 f:id:kuraudo0309:20190120231108p:plain:w450
 

Clearcoat

日本語で塗料、車や壁紙などの塗料に使うもので、見た目の変化はroughnessとあまり変わらないような気がします。 f:id:kuraudo0309:20190120231256p:plain:w450
 

IOR+Transmission

IORは屈折率、transmissionは透明度のことで、この二つを組み合わせることで様々な物質を表現できます。
IORの値は以下を参考にしていきます。

tmtk3dcg.blog.fc2.com

下は、ガラス(IOR=1.517)と水(IOR=1.333)をレンダリングしてみたものです。
 
左が ガラス 、右が 水
f:id:kuraudo0309:20190120231434p:plain:w450 f:id:kuraudo0309:20190120231459p:plain:w450  

Worldの設定

Worldの背景を画像に設定すると、それに従ってライティングされるようになります。
基本的にはHDR形式の全天球パノラマ画像を用いるので、僕は以下のサイトにお世話になっています。

hdrihaven.com  

背景を360°画像に設定する

設定方法は、
 
  ①「Property > World > Color > image Texture」にして、ファイルを選択
  ②「World > Vector > Geometry|Position」にして、ファイルをWorldに関連付ける
  ③「World > Color > Flat」のFlatの部分を押して「Sphere」にして、球体に画像を張り付けるように見せる
  ①「Property > World > Color > Environment Texture」にしてファイルを選択するだけ。
 
追記)すみません、設定方法が間違っていました。上の①をやれば完璧な環境テクスチャが実現します。
 
f:id:kuraudo0309:20190120234147p:plain:w990
 
Metalで説明した金属の映り込みは、上の背景にそってライティングされたもので、あるのとないのとは全然違います。
 
左が 背景なし、右が 背景あり
f:id:kuraudo0309:20190120234648p:plain:w450 f:id:kuraudo0309:20190120235829p:plain:w450  

normalマップ、roughnessマップの設定(おまけ)

今回床に設定している部分には、木目のテクスチャにnormal(法線)マップとroughnessマップを用いています。
normalで凹凸を、roughnessで微妙な粗さを表現することで、質感が大きく変わってきます。
これら二つのマップは、photoshopを用いることで簡単に作ることができます。
 

法線マップの作成

以下のgifの様に、「フィルター > 3D > 法線マップ」を選択するだけです。
f:id:kuraudo0309:20190121001947g:plain
 

roughnessマップの作成

roughnessマップは表現したいものによって調整方法が変わってくると思います。
今回は木のテクスチャなので、以下のgifの様に設定します。
 
  ①「イメージ > 色調補正 > 白黒」をして白黒化する
  ②「イメージ > 色調補正 > レベル補正」をして全体的に薄めに、コントラストを低めに設定する
 
f:id:kuraudo0309:20190121002406g:plain
 

マップの適用

少し長くなってしまうので、先に完成したノードだけ張り付けておきます。
f:id:kuraudo0309:20190121003139p:plain:w990
 
テクスチャの設定から手順を説明していきます。
 
  ①「Principled BSDF > Base Color > image Texture」を選択して、色を付けるテクスチャを適用する
  ②「Base Color > Vector > Mapping」を追加してテクスチャを調整できるようにする
  ③「Mapping > Vector > Texture Coordinate|Generated」を追加してテクスチャをマテリアルに反映させる
 
次にnormalマップを設定します。
 
  ①「Principled BSDF > Normal > Normal Map」を選択して、ノーマルマップの強度を調整できるようにする
  ②「Normal Map > Color > image Texture」を選択して、normalマップを適用する
  ③テクスチャの設定②~③と同じ流れでマテリアルに反映させる
 
最後にrjoughnessマップを設定します。
 
  ①「Principled BSDF > Roughness > image Texture」を選択して、roughnessマップを適用する
  ②テクスチャの設定②~③と同じ流れでマテリアルに反映させる
 
以上で設定が完了します。
 
テクスチャの調整や地形の凹凸の調整などは加算シェーダやノイズシェーダなどをかませるといいですが、
長くなるので今回は割愛します。
 

わかったこと

 
・EEVEEレンダーは軽くてマテリアルの調整がしやすい。
・マテリアル設定の意味を覚えておくと表現の幅が広がる。
・normalマップ&roughnessマップで質感の表現力アップ。
・Worldの背景を画像でライティングすると、金属の映り込みによりモデルが映える。
 (他のモデルを配置しなくても金属を表現することができる)