LogoMark.png

Blender/Materials の変更点


#author("2023-07-06T19:45:30+09:00;2022-02-22T15:58:06+09:00","default:inoue.ko","inoue.ko")
#author("2023-08-01T18:49:24+09:00;2022-02-22T15:58:06+09:00","default:inoue.ko","inoue.ko")
* Materials
//&topicpath();
Blender Tutorial
~

オブジェクトの材質(色・質感)のことをマテリアルと言います。Blenderでは、このマテリアル設定をシェーダーエディタのメインウインドウにあるノードエディタを使って設定します。従来型のプロパティーエディタでも設定可能ですが、レンダリングエンジンの Cycles と Eevee はノードツリーを使用するため、ノードエディターの利用(Use Nodes)がデフォルトになっています。
~
~

**はじめに
2DCGでは、ラスター系(Photoshopなど)でもベクター系(Illustrator)でも、ピクセルや図形に設定するのは色(RGB値)と透明度(α値)のみですが、3DCGの場合は、一般に PBR(Physically-Based Rendering) と呼ばれる物理ベースのレンダリングを行うのに必要なパラメータを設定する必要があって、基本色のみならず、光の拡散、鏡面反射、透過・屈折、発光といった、シーディングの細かい設定が必要になります。

マテリアルに関するデータ自体が大きなデータセットになるため、赤いプラスチック・銅・ガラスなど、マテリアルには個別に名前を付けて、オブジェクトとの紐付けを簡単にできるように管理します。例えば「ガラス」と名付けられたマテリアルデータは、シーンに登場する複数のガラス素材のオブジェクトにリンクされて利用されるのが一般的です。
~
~

**マテリアルの設定方法
***レンダリングエンジンの設定 __[[&color(red){''&fontawesome(fas fa-film); 解説動画''};>https://youtu.be/tpsiKqVDTyQ]]__
マテリアルの設定を学ぶには、鏡面反射や透過といった光のシミュレーションも含めて試す必要があります。Blender デフォルトのレンダリングエンジン Eevee は、それに対応していないので、まずは、レイトレイシング(光線追跡)ができる Cycles エンジンを使うように設定して下さい。

PropertyEditor の RenderProprety パネルで エンジンを Cycles にします。
 Render Engine:Cycles
~

***Shading ワークスペースの利用
マテリアルの設定を行う場合は、Shadingワークスペースを使うのが効率的です。TopBar の ワークスペース選択から ''Shading'' を選択すると シェーダーエディタを含むワークスペースが表示されます。
~

***マテリアルの新規作成
新規のオブジェクトは、オブジェクトデータ(頂点座標等)を持っていますが、マテリアル情報は持っていません。オブジェクトに色を付けるには、マテリアルデータブロックをリンクする必要があります。この初期操作は、以下のいずれかの方法で実現できます(後者を推奨)。
 PropertyEditor > Material Property > New(または既存のものを選択)
 ShaderEditor > Header > Material > New(または既存のものを選択)

#image(Blender/Material.jpg,right,30%)
右図は、オブジェクト(Cube)にマテリアル(Material)が設定されている場合のデータの階層構造です。これは、Outliner の画面で個々のオブジェクトの項目をプルダウンして確認することができます。

~

***NodeEditor を使ってマテリアルを設定 __[[&color(red){''&fontawesome(fas fa-film); 解説動画''};>https://youtu.be/F8aw79wPOeI]]__
シェーダーエディタのメインウインドウは NodeEditor になっています。

#image(Blender/ShaderEditor.jpg,right,30%)
右図は、オブジェクトに新規のマテリアルを設定(New)した直後の画面で、シェーダーノードのひとつである Principled BSDF と、アウトプトノードのひとつである、Material Output の2つのノードが表示されています。

個々のノードには、ソケットと呼ばれる連結部分があって、マウスドラッグで同じ色同士のソケットを接続します。ノードは大きく3種類あって、ソケットは以下のように配置されています。

-入力系ノード:右側に出力ソケット
-編集系ノード:左側に入力ソケット+右側に出力ソケット
-出力系ノード:左側に入力ソケット

一般に、入力側ノードを左、出力側ノードを右に置いて、左から右へと処理が進むとイメージすればよいでしょう。右図の例では、ShederNode の出力が Material Output の Surface に接続されています。
~

***Shading Parameter
オブジェクトの色や質感は、以下のような項目の値を設定することで、調整ができます(Principled BSDF ノードの場合)。

-BaseColor:マテリアルの色
-Metalic:金属( 1.0 で金属感が最大 )
-Specular:鏡面反射
-Sheen:布などの柔らかなもののエッジ付近の反射量
-Roughness:粗さ
-IOR(Index of Refraction Values):屈折率
-Transmission:透過( 1.0 で透明物体)
-Emission:発光
-Alpha:α値(0で透明、1.0 で不透明)
~

***代表的な質感設定
Principled BSDFのデフォルト状態から、以下の値のみ変更すれば実現します。

-鏡のように光を反射する物体
--Metalic:1.0
--Roughness:0.0

-ガラスのように光が透過・屈折する物体
--Transmission:1.0
--Roughness:0.0
--IOR:屈折率(水:1.33、ガラス:1.45、水晶:1.54 など)

-電球のように発光する物体(エンジンがCycles の場合、周囲を照らします)
--Emission:発光色の設定ができます。
--Emission Strength:光の強さを変えられます。
~


***付記:Smooth と Flat __[[&color(red){''&fontawesome(fas fa-film); 解説動画''};>https://youtu.be/spsrm_sCaJ0]]__
メッシュオブジェクトの表面が滑らかにならない・・という方。フラットシェーディングとスムーズシェーディングの違いをご確認下さい(以下)。
__[[オブジェクトのシェーディング方法>Blender/ScenesAndObjects#shading]]__ 
~
~

**複数マテリアルの定義
オブジェクトに複数のマテリアルを持たせるには、以下2つの方法があります。
__[[&color(red){''&fontawesome(fas fa-film); 解説動画''};>https://youtu.be/OeK7isgO-Rw]]__
~

***EditMode で面ごとに定義
#image(Blender/MaterialAssign.jpg,right,30%)
-対象オブジェクトを選択した状態で PropertyEditor の Material パネルを開く、あるいは ShaderEditor の Header から Slot をクリックしてパネルを開きます。
-Material Slot で [ + ] をクリックして、当該オブジェクトに利用する数だけマテリアルデータブロックを追加します(それぞれに対して、既存のマテリアルを利用するか +NEW でマテリアル情報を設定します)。
-EditMode に入って、マテリアルを与えたい面を選択した後、マテリアルスロットに登録されたマテリアルを選択します。
- Assign を押すと、選択された面にそのマテリアルが適用されます。
~

***複数のオブジェクトを JOIN する
例えば、本体がアルミで、取っ手が木材の「鍋」をつくる場合、全体の形をつくってから塗り分けるのではなく、本体と取っ手を別のオブジェクトとしてモデリングし、マテリアルの設定まで行ってから、2つのオブジェクトを JOIN すれば、結果的には、複数のマテリアルを持ったオブジェクトが完成します。
-合成したい2つのオブジェクトを選択 > Object > Join (CTRL J)
~
~

**ShaderNodes
Blender には複数のシェーダーノードが用意されていますが、通常のマテリアル設定では、Disney Principled BRDF(あるいはこれを拡張した Disney BSDF) に基づいたシェーダである ''Principled BSDF''((Bidirectional Scattering Distribution Function(双方向散乱分布関数)とは、物体表面での光の散乱を計算するために使用される物理ベースの拡散近似モデルで、双方向というのは入射方向と出射方向が逆の場合でも同じ値になることを意味します。)) を選ぶとよいでしょう。

その他、Blender に用意されているシェーダーノードを紹介します。鏡面反射や透明ガラス等に特化したノードが用意されているので、最適なノードを選択するだけで、それらの質感は簡単に設定することができます。

-Diffuze BSDF:拡散反射物体に特化したシェーダー

-Specular BSDF:鏡面反射物体に特化したシェーダー(Eevee Only)

-Glass BSDF:ガラス物体に特化したシェーダー

-Glossy BSDF:光沢のある物体に特化したシェーダー

-Refraction BSDF:(透明)屈折物体に特化したシェーダー

-Translucent BSDF :半透明物体に特化したシェーダー

-Transparent BSDF :透過物体に特化したシェーダー

-Subsurface Scattering:表面下散乱物体に特化したシェーダー

-Hair BSDF:毛髪に特化したシェーダー

-Toon BSDF:手描きアニメ風シェーダー(セルシェーディング)

-Velvet BSDF:布のようなマテリアルに特化したシェーダー

-Volume Absorption:光の吸収を表現するボリュームシェーダー

-Volume Scatter:光の散乱を表現するボリュームシェーダー

-Emission:光の放出を表現するシェーダー

-Background:環境光を表現するシェーダー
~
~
~
//**Keywords
//-PBR(Physically-Based Rendering):物理ベースレンダリング
//-BSDF(Bidirectional Scattering Distribution Function):双方向散乱分布関数
//BSDF = BRDF(反射成分) + BTDF(透過成分)
//--Reflection:反射
//--Transmission:透過
//--Refraction:屈折