トップ > レンダリング >
各シェーダの紹介(その2)

  

Cycles Renderのシェーダの紹介

前の記事の『各シェーダの紹介』からの続きです。 この記事では、物理ベースのレンダリングエンジンであるCycles Renderの各シェーダの概要および描画例を紹介します。

シェーダの分類 詳細
サーフェイスシェーダ 12種類
ボリュームシェーダ 3種類
特殊シェーダ 4種類

Cycles Renderのシェーダには、"Glass BSDF" や "Hair BSDF" のように質感を表す名前が付けられたシェーダが多いです。

  
シェーダ名に付加されている "BSDF" は、Bidirectional Scattering Distribution Functionの略で、光の反射や透過のモデルであり計算方法です。

シェーダの切り替え方法

まず、シェーダの切り替え方法から説明します。 Propertiesウィンドウのマテリアルパネル切替ボタン(マテリアルパネル切替ボタン)を押します。

1. シェーダノードの追加
1. シェーダノードの追加

上図のようにマテリアル関連のパネル群が表示されますので、マテリアルスロットの一覧から対象のマテリアルを選択し、続けて、Surfaceパネルにある[Use Nodes]ボタンを押します。

2. シェーダの切り替え
2. シェーダの切り替え

[Use Nodes]ボタンを押したことで、Surfaceパネルの内容が変化し、さらにVolumeパネルも新たに表示されます。

SurfaceパネルとVolumeパネルにあるサーフェイスシェーダとボリュームシェーダの選択リストで、サーフェイスシェーダとボリュームシェーダを切り替えることができます。

  
Cycles Renderでは、シェーダは『シェーダノード』として実装されています。 そのため、[Use Nodes]ボタンを押すという、ちょっと変わった操作になっています。
  
[Use Nodes]ボタンを押すことで、選択中のマテリアル用に新たなシェーダノードネットワークが構築されます。

1つのマテリアルに複数のシェーダを適用できる

Cycles Renderでは、1つのマテリアルに複数のシェーダを適用することができます。 これは、シェーダがノードで実装されているためです。

  
サーフェイスシェーダとボリュームシェーダを併用できるという意味ではなく、1つのマテリアルに複数のサーフェイスシェーダと複数のボリュームシェーダを適用できるという意味です。

ある1つのマテリアルは、シェーダノードネットワークを1つだけ持つことができます。 そのシェーダノードネットワークに複数のシェーダノードをつなげることで、1つのマテリアルが複数のシェーダを持てるようになるのです。

なお、複数のシェーダの計算結果を混ぜ合わせるのも、シェーダの機能です。 Cycles Renderが持っている4種類の特殊シェーダのうち、2つがそのような役割を持つシェーダです。

サーフェイスシェーダ : Diffuse BSDF(拡散)

では、サーフェイスシェーダの描画例の紹介に入ります。 まずは、Diffuse BSDFシェーダからです。

Diffuse BSDFシェーダは、Cycles Renderでの標準のサーフェイスシェーダです。 新規にマテリアルを作成すると、このシェーダが割り当てられます

このシェーダは、拡散反射を表現し、光は透過しません。

サーフェイスシェーダ : Diffuse BSDF
サーフェイスシェーダ : Diffuse BSDF

ランバート反射およびオーレン・ネイヤ反射の両方を含みます。 設定項目の粗さ(Roughness)がゼロの場合はランバート反射に、数値を上げるとオーレン・ネイヤ反射になります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Diffuse BSDF × × × ×

反射による周囲の映り込みは起きません

サーフェイスシェーダ : Glossy BSDF(光沢)

Glossy BSDFシェーダは、光沢を表現するためのサーフェイスシェーダです。 金属や鏡を表現するのに使用します。

サーフェイスシェーダ : Glossy BSDF
サーフェイスシェーダ : Glossy BSDF

設定項目の粗さ(Roughness)がゼロの場合は磨き込まれた金属や鏡のように周囲の景色が映り込みます。 粗さ(Roughness)が大きくなるほど、映り込みは少なくなりハイライトが柔らかくなります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Glossy BSDF × × ×

反射による周囲の映り込みが発生します

サーフェイスシェーダ : Anisotropic BSDF(異方性反射光沢)

Anisotropic BSDFシェーダは、Glossy BSDFシェーダと同じく光沢を表現するためのサーフェイスシェーダです。 Glossy BSDFシェーダとは異なり、異方性反射を表現することができます。

サーフェイスシェーダ : Anisotropic BSDF
サーフェイスシェーダ : Anisotropic BSDF

身近なところでは、ステンレス鍋のように表面にヘアライン加工が施された金属が異方性反射を起こします。 また、人間の髪の毛の天使の輪も異方性反射だとか。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Anisotropic BSDF × × ×

Glossy BSDFシェーダと同じく、反射による周囲の映り込みが発生します

サーフェイスシェーダ : Velvet BSDF(ベルベット)

Velvet BSDFシェーダは、織物や布を表現するのに適したサーフェイスシェーダです。 Blender RenderでのMinnaertシェーダと同様に視線と面の角度や光の方向によって拡散反射の強さを減衰させるようです

サーフェイスシェーダ : Velvet BSDF
サーフェイスシェーダ : Velvet BSDF

マニュアルには、『布などの素材に適したベルベット反射』としか書かれていません。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Velvet BSDF × × × ×

試したところ視点を向いている面が暗くなるようです

サーフェイスシェーダ : Glass BSDF(ガラス)

Glass BSDFシェーダは、ガラスを表現するためのサーフェイスシェーダです。 光の反射と屈折を表現します。

サーフェイスシェーダ : Glass BSDF
サーフェイスシェーダ : Glass BSDF

設定項目の屈折率(IOR : Index Of Refraction)が1.0の場合は、光は屈折せずに直進して透過します。 粗さ(Roughness)がゼロの場合は鋭い屈折(光が拡散しない屈折)に、粗さ(Roughness)が大きくなるほど柔らかい屈折(光が拡散する屈折)になります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Glass BSDF

反射によるハイライトを作り出し、周囲の映り込みも発生します

  
屈折率(IOR : Index Of Refraction)は、空気なら1.0、水なら1.333のように材質によって決めます。 材質ごとの屈折率は、ネットで『屈折率一覧』のようなキーワードで検索すればたくさんが見つかります。

サーフェイスシェーダ : Refraction BSDF(屈折)

Refraction BSDFシェーダは、Glass BSDFシェーダに似た効果を持つサーフェイスシェーダです。 Glass BSDFシェーダとの違いは反射しないことです。

サーフェイスシェーダ : Refraction BSDF
サーフェイスシェーダ : Refraction BSDF

このシェーダでは、光は透過または屈折し、反射はしません。 粗さ(Roughness)がゼロの場合は鋭い屈折(光が拡散しない屈折)に、粗さ(Roughness)が大きくなるほど柔らかい屈折(光が拡散する屈折)になります。

設定項目の屈折率(IOR : Index Of Refraction)が1.0の場合は、光は屈折せずに直進して透過します。 その場合は、後述するTransparent BSDFシェーダと同じ結果になります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Refraction BSDF × ×

反射によるハイライトも、周囲の映り込みも発生しません

  
屈折率(IOR : Index Of Refraction)は、空気なら1.0、水なら1.333のように材質によって決めます。 材質ごとの屈折率は、ネットで『屈折率一覧』のようなキーワードで検索すればたくさんが見つかります。

サーフェイスシェーダ : Translucent BSDF(半透明)

Translucent BSDFシェーダは、半透明を表現するためのサーフェイスシェーダです。 光の反射と透過を表現します。

サーフェイスシェーダ : Translucent BSDF
サーフェイスシェーダ : Translucent BSDF

透過した光は様々な方向へ拡散します。 Glass BSDFシェーダで粗さ(Roughness)を上げた場合と似たような結果となります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Translucent BSDF × × ×

マニュアルによると反射するように思えます。

サーフェイスシェーダ : Transparent BSDF(透明)

Transparent BSDFシェーダは、光を反射せずまっすぐに透過させるサーフェイスシェーダです。

サーフェイスシェーダ : Transparent BSDF
サーフェイスシェーダ : Transparent BSDF

色(Color)が白色だと完全に透明になり、それ以外の場合には、その色で着色されます。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Transparent BSDF × × × ×

サーフェイスシェーダ : Subsurface Scattering(表面下散乱)

Subsurface Scatteringシェーダは、表面下散乱を表現するためのサーフェイスシェーダです。 皮膚やロウ、大理石、牛乳などを表現するのに向いています。

サーフェイスシェーダ : Subsurface Scattering
サーフェイスシェーダ : Subsurface Scattering

表面下散乱とは、光が表面を透過し、内部の浅い部分で反射を繰り返して外に出て行く現象のことです。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Subsurface Scattering × × × ×

サーフェイスシェーダ : Hair BSDF(髪)

Hair BSDFシェーダは、髪を表現するためのサーフェイスシェーダです。 Diffuse BSDFシェーダとTranslucent BSDFシェーダとAnisotropic BSDFシェーダを合わせたような効果があります。

サーフェイスシェーダ : Hair BSDF
サーフェイスシェーダ : Hair BSDF

これはあくまでもシェーダであり、このシェーダを適用するだけで髪に見えるわけではありません。 髪を構成する面に髪のテクスチャを貼ったり、パーティクルで髪を作り出す必要があります。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Hair BSDF ×
(おそらく)
×
(おそらく)
×
(おそらく)

(おそらく)

サーフェイスシェーダ : Toon BSDF(トゥーン)

Toon BSDFシェーダは、トゥーンレンダリング用のサーフェイスシェーダです。 いわゆる『セルシェーディング』のためのシェーダです。

サーフェイスシェーダ : Toon BSDF
サーフェイスシェーダ : Toon BSDF

Cycles Renderが写実的になったぶん、セルアニメーション風にするには難易度が上がった気がします。 Blender Renderを使ったほうがいいのかもしれません。

シェーダ 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Toon BSDF × × × ×

サーフェイスシェーダ : Ambient Occlusion(環境遮蔽)

Ambient Occlusionシェーダは、アンビエントオクルージョンによる陰影計算を行うサーフェイスシェーダです。 Blender Renderではワールド(仮想世界)に対してオン・オフを切り替えていましたが、Cycles Renderでは、マテリアル単位で適用できます。

サーフェイスシェーダ : Ambient Occlusion
サーフェイスシェーダ : Ambient Occlusion

すでに何度も説明した通り、アンビエントオクルージョンは擬似的な環境光の表現手法です。 光源との位置関係や光源の強さなどは考慮せず、近くにある他の面との関係だけで計算されます。

そのため、上の例では上から光が当たっているにも関わらず、頭頂部の面や眉毛と頭部との隙間が暗くなっています。

ボリュームシェーダ : Volume Absorption(光の吸収)

ここからは、ボリュームシェーダの説明に入ります。 まずは、Volume Absorptionシェーダからです。

Volume Absorptionシェーダは、光を吸収する物体を表現するためのボリュームシェーダです。 黒煙や水などを表現するために使用します。

ボリュームシェーダ : Volume Absorption
ボリュームシェーダ : Volume Absorption

内部に粒子があり、それが光を吸収するかのように作用します。 つまり、パストレーシングで放出される光を密度に応じて吸収します。

  
この描画例は、スザンヌも球体も二重になっており、内側のやや縮小された物体にはGlossy BSDFシェーダを設定しています。
  
それを包んでいる外側の物体にVolume Absorptionシェーダを設定しています。 なお、外側の物体のサーフェイスシェーダは未設定です。

ボリュームシェーダ : Volume Scatter(光の散乱)

Volume Scatterシェーダは、光を散乱させる物体を表現するためのボリュームシェーダです。 霧などを表現するために使用します。

ボリュームシェーダ : Volume Scatter
ボリュームシェーダ : Volume Scatter

内部に粒子があり、それが光を散乱させるかのように作用します。 つまり、パストレーシングで放出される光を密度に応じて散乱させます。

  
この描画例は、スザンヌも球体も二重になっており、内側のやや縮小された物体にはGlossy BSDFシェーダを設定しています。
  
それを包んでいる外側の物体にVolume Scatterシェーダを設定しています。 なお、外側の物体のサーフェイスシェーダは未設定です。

ボリュームシェーダ : Emission(発光)

Emissionシェーダは、光を放出する物体を表現するためのボリュームシェーダです。 照明などを表現するために使用します。

ボリュームシェーダ : Emission
ボリュームシェーダ : Emission

内部に粒子があり、それが光を放出しているかのように作用します。

  
この描画例は、スザンヌも球体も二重になっており、内側のやや縮小された物体にEmissionシェーダを設定しています。 なお、内側の物体のサーフェイスシェーダは未設定です。
  
それを包んでいる外側の物体にはTranslucent BSDFシェーダを設定しています。

特殊シェーダ : Background(背景)

ここからは、特殊シェーダの説明に入ります。 まずは、Backgroundシェーダからです。

Backgroundシェーダは、マテリアルではなくワールド(仮想世界)に対して設定する特殊シェーダです。 マテリアルに設定しても効果は得られません。

特殊シェーダ : Background
特殊シェーダ : Background

Backgroundシェーダは、ワールド(仮想世界)の背景を表現します。

  
この描画例では、背景の明るい黄色がBackgroundシェーダの効果です。 スザンヌの色にも影響を与えているのがわかります。

特殊シェーダ : Holdout(抵抗)

Holdoutシェーダは、レンダリング結果を透明にする特殊シェーダです。 ただし、陰影計算の対象の面を透明や半透明で表現するのではなく、最終的なレンダリング結果に穴を開けます

特殊シェーダ : Holdout
特殊シェーダ : Holdout

上図の市松模様の部分が透明を表しています。 Holdoutシェーダが適用されている面は、光源との位置関係や視点との位置関係は関係なく、どんな方向から光があたっていようが、どんな方向から見ていようが必ず透明になります。

実写との合成などで合成部分を透明にする目的などで使用します。

特殊シェーダ : Add(加算)

Addシェーダは、他の2つのシェーダの効果を加算する特殊シェーダです。 2つのシェーダからの出力を受け取り、加算して出力します。

特殊シェーダ : Add
特殊シェーダ : Add

加算であるため明るくなり過ぎるという問題もあります。 後述するMixシェーダの方が自然な結果になります。

  
この描画例は、Diffuse BSDFシェーダとGlossy BSDFシェーダを加算しています。

特殊シェーダ : Mix(混合)

Mixシェーダは、他の2つのシェーダの効果を混合する特殊シェーダです。 2つのシェーダからの出力を受け取り、混合して出力します。

特殊シェーダ : Mix
特殊シェーダ : Mix

比率に応じて混合するため明るくなり過ぎる心配がありません。 Addシェーダより、こちらのシェーダの方が物理的にも正しいです。

  
この描画例は、Diffuse BSDFシェーダとGlossy BSDFシェーダを混合しています。
  
  

まとめ

Cycles Renderには、12種類のサーフェイスシェーダ、3種類のボリュームシェーダ、4種類の特殊シェーダが搭載されており、特徴は以下の通りです。

シェーダ 特徴 反射 映り
込み
透過
(直進)
透過
(屈折)
透過
(拡散)
Diffuse BSDF 拡散を表現する × × × ×
Glossy BSDF 光沢を表現する × × ×
Anisotropic BSDF 異方性反射する光沢を表現する × × ×
Velvet BSDF 織物や布を表現する × × × ×
Glass BSDF ガラスを表現する
Refraction BSDF 屈折を表現する × ×
Translucent BSDF 半透明を表現する × × ×
Transparent BSDF 透過を表現する × × × ×
Subsurface Scattering 表面下散乱を表現する × × × ×
Hair BSDF 髪を表現する × × ×
Toon BSDF セルアニメーション風に表現する × × × ×
Ambient Occlusion アンビエントオクルージョンによる擬似的な環境光を表現する × × × ×
ボリュームシェーダ 特徴
Volume Absorption 光を吸収する物体を表現する
Volume Scatter 光を散乱させる物体を表現する
Emission 光を放出する物体を表現する
特殊シェーダ 特徴
Background ワールド(仮想世界)の背景を表現する
Holdout 最終的なレンダリング結果に穴を開ける
Add 他の2つのシェーダの効果を加算する
Mix 他の2つのシェーダの効果を混合する
メニュー