#author("2023-06-15T19:59:21+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の場合は、基本的な色のみならず、光の拡散、鏡面反射、透過・屈折、発光といった、シェーディングに関する細かい設定が必要になります。 マテリアルに関するデータ自体が大きなデータセットになるため、赤いプラスチック・銅・ガラスなど、マテリアルには個別に名前を付けて、オブジェクトとの紐付けを簡単にできるように管理します。例えば「ガラス」と名付けられたマテリアルデータは、シーンに登場する複数のガラス素材のオブジェクトにリンクされて利用されるのが一般的です。 ~ ~ **マテリアルの設定方法 ***Shading ワークスペースの利用 マテリアルの設定を行う場合は、Shadingワークスペースを使うのが効率的です。TopBar の ワークスペース選択から ''Shading'' を選択すると シェーダーエディタを含むワークスペースが表示されます。 ~ ***マテリアルの新規作成 新規のオブジェクトは、オブジェクトデータ(頂点座標等)を持っていますが、マテリアル情報は持っていません。オブジェクトに色を付けるには、マテリアルデータブロックをリンクする必要があります。この初期操作は、以下のいずれかの方法で実現できます(後者を推奨)。 PropertyEditor > Material Property > New(または既存のものを選択) ShaderEditor > Header > Material > New(または既存のものを選択) #image(Blender/Material.jpg,right,30%) 右図は、オブジェクト(Cube)にマテリアル(Material)が設定されている場合のデータの階層構造です。これは、Outliner の画面で個々のオブジェクトの項目をプルダウンして確認することができます。 ~ ***NodeEditor を使う シェーダーエディタのメインウインドウは 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 で不透明) //-PBR(Physically-Based Rendering):物理ベースレンダリング //-BSDF(Bidirectional Scattering Distribution Function):双方向散乱分布関数 //BSDF = BRDF(反射成分) + BTDF(透過成分) //--Reflection:反射 //--Transmission:透過 //--Refraction:屈折 ~ ***付記:Smooth と Flat メッシュオブジェクトには、レンダリング時の陰影付けの方法について、二つの選択肢があります。ひとつはポリゴンの形・境界が見えるようにするフラットシェーディングで、もうひとつは隣り合うポリゴンの法線を補完して境界部分の陰影を滑らかにするスムーズシェーディングです。以下いずれかのメニューを使って設定します。 Header > Object オブジェクトの上で右クリック > コンテクストメニュー -Shade Smooth:スムーズシェーディング -Shade Flat:フラットシェーディング ''AutoSmooth について'' 例えば「Cylinder(円筒)」は、側面部分のみをスムーズにして、側面と上面・底面に関しては、90度の角度を維持したいのが普通です。単純に Shade Smooth を適用しただけでは違和感のある見た目になるので、このような形状の場合は、例えば「30度以内の緩やかな傾斜部分のみスムーズにする」といった処理が必要になります。この場合、以下のようにして AutoSmooth を適用して下さい。 PropertyEditor > オブジェクトデータプロパティ(▽)> Normals AutoSmooth にチェック(角度は自由に変更可能です。デフォルト30度) ~ ~ **複数マテリアルの定義 マテリアルの設定は、ひとつのオブジェクトにひとつのマテリアルをリンクするのが簡単ですが、ひとつのオブジェクトに複数のマテリアルを持たせることが必要になる場合もあります。以下の2つの方法があります。 ~ ***EditMode で面ごとに定義 #image(Blender/MaterialAssign.jpg,right,30%) -対象オブジェクトを選択した状態で、プロパティエディタの Material Property パネルを開きます。 -マテリアルスロットで [ + ] をクリックして、使用するすべてのマテリアルを登録します。 -EditMode に入って、マテリアルを与えたい面を選択した後、マテリアルスロットに登録されたマテリアルを選択します。 - Assign を押すと、選択された面にそのマテリアルが適用されます。 ~ ***複数のオブジェクトを JOIN する 例えば、本体がアルミで、取っ手が木材の「鍋」をつくる場合、全体の形をつくってから塗り分けるのではなく、本体と取っ手を別のオブジェクトとしてモデリングし、マテリアルの設定まで行ってから、2つのオブジェクトを JOIN すれば、結果的には、複数のマテリアルを持ったオブジェクトが完成します。 ~ ~ **ShaderNodes 以下、Blender に用意されているシェーダーノードを紹介します。鏡面反射や透明ガラス等に特化したノードが用意されているので、最適なノードを選択するだけで、それらの質感は簡単に設定することができます。 -''Principled BSDF'':Disney "principled" BRDF に基づいたシェーダ(汎用) -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:環境光を表現するシェーダー ~ ~