BlenderのプリンシプルBSDFシェーダー(Principled BSDF Shader)は、様々な素材の質感をリアルに再現するための強力なツールです。このシェーダーの素晴らしいところは、シンプルな設定で、多種多様な質感を再現できる点です。
今回はプリンシプルBSDFの主要な6つのパラメーターを使って、プラスチック、金属、ガラスといった素材を表現することに挑戦します。
マテリアルとは?シェーダーとは?
マテリアルは「見た目(質感)」で、シェーダーはその見た目を「どう描画するか」の計算方法です。マテリアルの一部として、シェーダーが使われ、両方が組み合わさることで最終的な見た目が決まります。あまり言葉の意味に引っ張られず、「マテリアル(質感)の設定をシェーダーを使って行う」とだけ覚えておきましょう。
シェーダーエディター(Shader Editor)の使い方
マテリアルを作成、編集する際にシェーダーエディター(ノードエディター)を使用します。
ここではシェーダーエディターの基本操作を確認しましょう。
シェーダーエディターを開く
オブジェクトを選択

Blenderの3Dビューポートで、マテリアルを割り当てたいオブジェクトを選択します。
シェーディングワークスペースに切り替える

画面上部の「シェーディング(Shading)」タブをクリックして、シェーダーエディターを開きます。
シェーダーエディターの確認

ビューポート (Viewport)
Blenderで3Dシーンをリアルタイムにプレビューするエリアです。シェーダー作成中、3Dビューポートを使用してモデルに適用されたマテリアルがどのように表示されるかを確認できます。
シェーダーエディター (Shader Editor)
シェーダーエディターは、モデルの外観を定義するマテリアルやシェーダーを作成・編集するためのエディターです。ノードと呼ばれるパーツを追加し、それらを他のノードと組み合わせることで、マテリアルの見た目を調整します。
マテリアルプロパティ(Material Properties)
プロパティエディター下の赤い球体アイコンをクリックするとマテリアルプロパティ(Material Properties)パネルが表示されます。選択されたマテリアルの詳細設定を調整するためのエディターです。マテリアルの数値(パラメーター)はシェーダーエディターと連動しています。
マテリアルの割り当て方法(Assign Material)
Blenderのシェーダーエディターを使用して、プリンシプルBSDFのマテリアルを作成し、それをオブジェクトに割り当てる(Assign Material)ことで、3Dビューポート上でリアルな質感を確認する手順を説明します。
新しいマテリアルを作成する
新しいマテリアルを追加

オブジェクトを選択します。
シェーダーエディター内の+ 新規(New)ボタンをクリックして、新しいマテリアルを作成します。
または、プロパティエディター下の赤い球体アイコンをクリックしてマテリアルプロパティ(Material Properties)パネルの+ 新規(New)ボタンをクリックします。
新しいマテリアルの確認

デフォルトで「プリンシプルBSDF(Principled BSDF)」ノードが追加されます。
※「マテリアル出力」はオブジェクトの形状に関わる変更を行うノードで今回は使用しません
マテリアルの名前を変更

①プロパティエディター下の赤い球体アイコンをクリックしてマテリアルプロパティ(Material Properties)パネルを確認します。先ほど新規作成した●プリンシプルBSDFと同じパラメーターが確認できます。
②マテリアルの名前をクリックし、分かりやすい名前に変更します
(例: Plastic_Mtrl
)。
既存のマテリアルを新規オブジェクトに割り当てる
既に質感設定が完了したマテリアルを新規オブジェクトに割り当てる場合の手順です。
オブジェクトの確認

マテリアルを割り当てたい新規オブジェクトが選択されていることを確認します。
マテリアルの割り当て(Assign Material)

①「マテリアルプロパティ(Material Properties)」タブで、
「 」のアイコンをクリックします。
②マテリアルのリストがプルダウンされます。既に設定済みのマテリアルがリスト化されるので、割り当てたいマテリアルを選択します。

割り当てられた状態を確認します。
複数マテリアルの割り当て
Blenderでは1オブジェクトに複数のマテリアルを割り当てることが出来ます。
新しいマテリアルスロットを追加

複数のマテリアルを一つのオブジェクトに割り当てるために、「マテリアルスロット(Material Slot)」を追加します。
右側の「+」ボタンをクリックして新しいスロットを作成します。
新しいマテリアルの作成または選択


新しいスロットを選択し、「新規(New)」ボタンをクリックして新しいマテリアルを作成するか、
「 」ボタンで既存のマテリアルを選択します。
面選択モードに切り替える

①3Dビューポートで「編集モード(Edit Mode)」に切り替えます。
②面(face)選択モードをクリックします。
面を選択

マテリアルを割り当てたい(Assign Material)フェイス(面)を選択します。
マテリアルの割り当て(Assign Material)

選択したフェイスに新しいマテリアルを割り当て(Assign Material)ます。マテリアルを選択した状態で、「割り当て(Assign)」ボタンをクリックします。

結果を確認します。
【プリンシプルBSDFノード】の設定
ここから具体的な質感設定に入ります。今回はBlenderのマテリアルを作成する際、初期状態に設定されているプリンシプルBSDFを使用した質感設定について説明します。
プリンシプルBSDFとは?

プリンシプルBSDFは、PBR(Physically-Based Rendering)という物理ベースのレンダリング手法に基づいたシェーダーです。簡単に言うと、現実世界の光と色の見え方を3DCG空間に再現することで、写実的な質感を表現するための技術です。プリンシプルBSDFは、このPBRの概念をシンプルにまとめたシェーダーで、初心者でも扱いやすく、多くの素材感を網羅することができます。
プリンシプルBSDFの質感設定の方法は、AutodeskMayaなどで使用されるaiStandardSurface、UnrealEngineの物理ベースマテリアルといった、他の3DCGソフトのPBR(物理ベースのレンダリング手法)シェーダーに応用が効きます。つまり、3DCG全般の基礎知識を習得することが出来ます。そして、私たちの目にする世界の光と色に対する理解も深まります。
プリンシプルBSDF概要
このシェーダーの特徴は
という3つの主要な要素を使うことで、多種多様な質感を再現できます。
これらの要素を
- 「画像テクスチャ(Image Texture)」
を使用して質感を変更する方法について説明します。 - ノーマル(Normal)
という、表面に凸凹を付加する要素を、ノーマルマップノードを使用して設定します。
最後に、透明な質感を設定する際に有効な
について説明します。
ベースカラー(Base Color)

「ベースカラー(Base Color)」のカラーボックスをクリックするとカラーピッカーが現れるので、好みの色を選択します。
HSVやRGBのほかに16進数(Webページなどで使われる6桁の英数字)で色を指定することも可能です。
アルファ(alpha channel)はと半透明処理やテクスチャによる形抜きの際に使用します。






メタリック(Metallic)

「メタリック(Metallic)」マテリアルの金属感を設定します。値は0(非金属)から1(完全な金属)まで設定できます。スライダーをドラッグして、小数点の数値を入力可能です。
通常は0か1かの2択で設定します。


粗さ(Roughness)

「粗さ(Roughness)」スライダーをドラッグして、マテリアルの表面の滑らかさを調整します。値が0に近いほど光沢があり、1に近いほどマットなざらざらした質感になります。





「画像テクスチャ(Image Texture)」を使用してパラメーターを変更する

数値による単一のパラメーターの変更のほかに、画像テクスチャ(Image Texture)を張り付けることでピクセル単位の変化をつけることが出来、より複雑な質感を作ることが出来ます。
テクスチャ(Texture)とは、
3Dグラフィックスにおいて、オブジェクトの表面に貼り付ける画像やパターンのことです。テクスチャは、オブジェクトの見た目をリアルにしたり、細かなディテールを表現したりするために使用されます。



ノードの追加と接続
Blenderにおいて、テクスチャの画像はノードと呼ばれるパーツの一部として読み込まれます。
ノードを追加


シェーダーノードエディター内の「追加(Add Node)」を選択します。
「テクスチャ(Texture)」カテゴリーから「画像テクスチャ(Image Texture)」ノードを選択します。
テクスチャを設定

「画像テクスチャ(Image Texture)」ノードの「開く(Open)」ボタンをクリックします

使用したいテクスチャ画像を選択し「画像を開く」をクリックします。
ノードを接続

「画像テクスチャ(Image Texture)」ノードの「カラー(Color)」出力を、「プリンシプルBSDF(Principled BSDF)」ノードの「ベースカラー(Base Color)」入力にドラッグして接続します。

結果を確認します。
ベースカラーのパラメーターによる設定は数値のみの一色でしたが、画像テクスチャのノードをつなげることにより、細かい色の調整が可能になります。
「色空間(Color Space)」について

画像テクスチャノードには
「色空間(Color Space)」
というパラメーターが存在します。
これはデジタル画像や映像で色を正確に再現するための色の範囲や表現方法を定義したシステムのことです。
今回は詳細は言及しませんが。
ベースカラーテクスチャ:
sRGB
それ以外のテクスチャ:
非カラー(Raw)
に設定することを覚えておいてください。
ノーマル(Normal)

ノーマルマップにはスライダーバーがありません。
主に(前述した)画像テクスチャを使って設定を行います。
ノーマルマップ(Normal Map )とは
法線マッピングともいわれ、3Dモデルの表面の細かい凹凸やディテールを表現するために使用される特殊なテクスチャです。通常のカラー画像とは異なり、ノーマルマップはRGBの色情報を使って法線(ノーマル)の方向を定義します。
モデルの表面に微細な凹凸を追加することで、複雑な陰影を表現出来ます。
例えば、レンガの壁や皮膚の質感を表現する際にノーマルマップを使用すると、モデルのポリゴン数を増やさずに、疑似的に表面の質感や複雑なディテールを表現できます。


ノーマルマップノードのつなぎ方
ノーマルマップテクスチャを追加


「追加(Add)」 を押して「テクスチャ(Texture)」 > 「画像テクスチャ(Image Texture)」を選択し、ノードエディターに追加します。


画像テクスチャノードから、「開く(Open)」をクリックしします。
使用するノーマルマップテクスチャ画像を選択し「画像を開く」をクリックします。
ノーマルマップノードを追加


再び「追加(Add)」 を押して「ベクトル(Vector)」 > 「ノーマルマップ(Normal Map)」を選択し、ノードエディターに追加します。
ノードの接続

- 「画像テクスチャ(Image Texture)」ノードの「カラー(Color)●」出力を、「ノーマルマップ(Normal Map)」ノードの「●カラー(Color)」入力に接続します。
- 「ノーマルマップ(Normal Map)」ノードの「ノーマル(Normal)●」出力を、「プリンシプルBSDF(Principled BSDF)」ノードの「●ノーマル(Normal)」入力に接続します。
- 「色空間(Color Space)」を非カラー(Raw)に変更します。

伝播(Transmission)

伝播(Transmission)は、物体を通過する光の挙動をシミュレーションする機能です。これにより、ガラスや水などの透明なマテリアルをリアルに表現することができます。
ウェイト(Weight)
0 に設定すると、透明感がなく、通常の不透明なマテリアルになります。
1 に設定すると、光が完全に物体を通過する状態(ガラスや水のような効果)が得られます。





IOR(Index of Refraction)





質感実践例(基礎編)
プリンシプルBSDFシェーダーの特性を用いて、いくつかの質感を再現してみましょう。今回は下記5つのパラメータを使用します。画像テクスチャは使用しません。
- ベースカラー(Base Color)
- メタリック(Metallic)
- 粗さ(Roughness)
- IOR(Index of Refraction)
- 伝播(Transmission)
※今回提示するパラメーターの数値は参考値です。ご自身が調整を加えながら理想的な質感に調整を試みてください。
プラスチックの質感(プラスチックチェア)
光沢が強めのプラスチック製の椅子の質感です。


ベースカラー(Base Color):RGB: 0.0, 0.34, 0.65
色を明るい青や赤などの好きな色に設定します
メタリック(Metallic):0.0
メタリック効果をゼロに設定します(非金属素材のため)
粗さ(Roughness):0.2
プラスチックの光沢を表現するために、やや強めに設定します
(値が低いほど表面は滑らかで光沢が強くなります)
紙とプラスチックの質感(紙カップと蓋)
「粗さ」のパラメーターを変更して紙とプラスチックの質感を作り分けます。

プラスチックの蓋

ベースカラー(Base Color):R: 0.02, G: 0.02, B: 0.02
完全な黒(R: 0, G: 0, B: 0)でも良いですが、少しだけ灰色に近づけるとリアル感が増します。
メタリック(Metallic):0.0
プラスチックは非金属のため、メタリック値は0にします。
粗さ(Roughness):0.3〜0.5
プラスチックの蓋はツヤがありますが、完全に鏡のように光を反射するわけではないので、中程度の粗さに設定します。
IOR(屈折率、Index of Refraction):1.45
一般的なプラスチックのIOR(屈折率)は1.45〜1.6の範囲です。初期値が1.5なので適切な数値ですが微調整も試みてください。
紙カップ

ベースカラー(Base Color):R: 0.9, G: 0.9, B: 0.9
完全に真っ白(R: 1.0, G: 1.0, B: 1.0)でも良いですが、少しグレーがかった白が自然に見えます。
メタリック(Metallic):0.0
紙は金属ではないため、メタリック値は0にします。
粗さ(Roughness):0.6〜0.8
紙は滑らかではなく、光沢もほとんどないので、粗さを高めに設定します。
金属の質感(アルミ缶)
アルミ缶は光沢があり、金属特有の反射性を持つ素材です。本来はラベルなどが印刷されていますが、テクスチャ素材を使わない状態で再現します。


ベースカラー(Base Color):R: 0.4, G: 0.4, B: 0.4
アルミのベースカラーはグレーに設定します。ただし、ジュース缶の場合はカラーラベルを貼ることもあるので、ラベル部分に異なる色を設定する必要があるかもしれません。
メタリック(Metallic):1
アルミ缶は金属なので、メタリック値は1に設定します。
粗さ(Roughness):0.2〜0.4
アルミは光を強く反射しますが、完全に鏡のように反射するわけではありません。若干の粗さを設定することで、表面の細かい傷や光の拡散を表現できます。
金属の質感(ステンレス製食器)
ステンレスは光沢があり、金属特有の反射とわずかな表面の粗さを持つ素材です。


ベースカラー(Base Color):R: 0.6, G: 0.6, B: 0.6
ステンレスの基本色は明るいグレーです。食器が新品のような明るさを表現するために少し明るめにするのがポイントです。
メタリック(Metallic):1
ステンレス特有の反射感を強調します。
粗さ(Roughness):0.1〜0.3
ほぼ鏡のような光沢を持つため、粗さを低めに設定します。新品の食器であれば0.1に近い設定、使用済みで少し光が拡散する場合は0.3程度に設定します。
ガラスの質感(ワイングラス)
ワイングラスは透明で光を通し、ワインの液体は色がありながらも半透明な質感が求められます。

ワイングラス

ベースカラー(Base Color):R: 1.0, G: 1.0, B: 1.0
完全に透明なガラスの場合、ベースカラーは白に設定します。
メタリック(Metallic):0.0
ガラスは非金属のため、メタリック値は0にします。
粗さ(Roughness):0.0
ガラスの表面は滑らかで、光沢が強いので粗さを0に設定します。曇りガラスのような質感を出したい場合は、少し粗さを加えます(例: 0.1〜0.2)。
IOR(屈折率、Index of Refraction):1.45〜1.5
ガラスの屈折率は通常1.45から1.5の間です。この値で光がガラスを通る際の曲がり具合を調整します。
伝播(Transmission)ウェイト:1
ガラスの透明度を表現するため、伝播を1に設定します。
液体(ワイン)

ベースカラー(Base Color):R: 0.062, G: 0.00, B: 0.02
赤ワインの場合は深い赤色に設定します。ワインの種類に応じて色を調整します(白ワインなら薄い黄色)。
メタリック(Metallic):0.0
液体は非金属のため、メタリック値は0にします。
粗さ(Roughness):0.0
液体の表面は滑らかなので、粗さを0に設定します。
IOR(屈折率、Index of Refraction):1.33
水や液体の屈折率は通常1.33です。この値でワインの屈折を表現します。
伝播(Transmission)ウェイト:1
液体の透明度を表現するため、伝播を1に設定します。
鉱石の質感(ダイヤモンド)
鉱石は高いIOR(屈折率)を持つので、透明度やIOR、光の反射の具合が重要です。ネットなどで数値を調べて、複雑な反射と透過を再現します。またダイヤモンドはブリリアントカットと呼ばれる特有の形状の再現(モデリング)も重要な要素となります。


ベースカラー(Base Color):R: 1.0, G: 1.0, B: 1.0
ダイヤモンド自体は無色透明なので、ベースカラーは白に設定します。
メタリック(Metallic):0.0
非金属なので、メタリック値は0に設定します。
粗さ(Roughness):0.0
ダイヤモンドの表面は非常に滑らかで光沢があるため、粗さは0に設定します。。
IOR(屈折率、Index of Refraction):2.418
ダイヤモンドの屈折率は非常に高く、2.418に設定します。これが光を通す際の「キラキラ」した複雑な反射と屈折を表現するための重要な値です。
伝播(Transmission)ウェイト:1
ダイヤモンドの透過性は非常に高く、ほぼ完全に光を通すため、この値は最大にします。
質感実践例(応用)
基礎編ではプリンシプルBSDFシェーダーのパラメータのみを変更することにより様々な質感を再現することを体験しました。次なる学びの導入として、シェーダーエディター内でノードをつなぎ合わせることで、画像テクスチャを使用せずに複雑な表面を形成できることを確認して今回のレジュメを終了します。
布の質感(クッション)
粗さ(Roughness)の値をたかくすることで布のざらついた質感を再現します。また、表面の凹凸感や、繊維の形状などを再現する際にノーマルマップが有効です。今回はテクスチャを使用せず全てノードでベースカラーとノーマルを設定しています。


ノードにによる質感設定は、【3DCG中級】にて解説します。興味のある方は次なるステップとして画像を参考に実際にノードをつないでみてください。
参考書籍
上記のノードツリーは「Blender 質感・マテリアル設定実践テクニック」のChapter3‐13「布の作り方」を参考にしています。
今回の質感設定の内容についても詳しく書かれていますので、理解を深めたい人は是非ご確認ください。
まとめ
BlenderのプリンシプルBSDFシェーダー(Principled BSDF Shader)は、様々な素材の質感をリアルに再現するための強力なツールです。皆さんがシンプルな設定で、多種多様な質感を再現できたことに感動してもらえれば幸いです。
特に反射する金属や透明なガラスや水はCGの得意とする表現であり、観る人もわかりやすく喜んでもらえる箇所です。是非的確に使いこなしてご自身の制作物の価値を高めてください。
・シェーダーエディターの使い方について説明しました。
・マテリアルの割り当て方法について説明しました。
・【プリンシプルBSDFノード】について説明しました。
・様々な質感の実践例について説明しました。
※このレジュメは【3DCG初級】の課題制作における参考資料として作成されました。
