Blender

Blenderの
マテリアルノードの基礎と
ガラスの作り方

陶器のコーヒーカップと、その隣に置かれた透明なガラスのグラス(記事イメージ)

前の記事「Blenderのマテリアルの基礎と設定方法」で、コーヒーカップに陶器の質感をつけました。この記事では、その隣にガラスのグラスを置きながら、色や質感を設定している「マテリアルノード」の仕組みを解説します。

ガラスでいちばん多いつまずきは「透明にする設定をしたのに、透明にならない」ことです。その原因もあわせて説明します。

※この記事はBlender 5.2 LTSで確認しています。レンダーエンジンは初期設定の「EEVEE」を使います。

シェーダーエディターを開く

マテリアルノードは、「シェーダーエディター」という画面で設定します。画面上部のタブから「Shading」をクリックしてください。

画面上部のShadingタブをクリックし、下半分にシェーダーエディターが表示された状態

これが「シェーダーエディター」です。画面に並んでいるのが「マテリアルノード」で、色や質感の設定をひとつずつ処理する機能です。複雑な画面を想像するかもしれませんが、開いた直後にあるのは「プリンシプルBSDF」と「マテリアル出力」の2つのノードだけです。

覚えておきたいのは、右のマテリアル出力が出口だということです。ここに届いたものが、そのまま画面に表示されます。

マテリアルノードは何をしているのか

画面にある2つのマテリアルノードが、それぞれ何をしているのか見ていきます。

シェーダーエディターに置かれたプリンシプルBSDFとマテリアル出力の2つのノード

プリンシプルBSDFは、表面の見え方を計算するノードです。ベースカラーや粗さに入れた値をもとに、「この表面が光をどう反射するか」を計算します。前の記事で色やつやを変えると見た目が変わったのは、このノードの計算結果が変わったからです。

マテリアル出力は、その計算結果を受け取るノードです。さきほど見たとおり、ここに届いたものが、そのまま画面に表示されます。

このように、ノードにはそれぞれ決まった役割があります。自分の役割を終えたら、その結果を次のノードへ渡します。ノードをつなぐことで、マテリアルの見た目が作られていきます。

それぞれの役割を整理する

シェーダーエディターに出てくるものと、その役割を整理しておきます。

マテリアル
材質そのもの。この記事で作るガラスも、前の記事で作った陶器も、それぞれがひとつのマテリアルです。
マテリアルノード
マテリアルを作るための部品。画面上に並んでいる箱のひとつひとつが、これにあたります。この記事では、短く「ノード」とも呼びます。
プリンシプルBSDF
表面の見え方を計算するマテリアルノード。色・つや・金属感などをまとめて調整できます。
マテリアル出力
完成した計算結果を受け取る出口。ここに届いたものが、そのまま画面に表示されます。

線の中を流れているもの

では、マテリアルノードをつないでいる線の中を流れているものは何でしょうか。プリンシプルBSDFが作った「この表面はこう見えます」という計算結果です。本当にそうなのか、線を切って確かめてみます。

マテリアル出力の「サーフェス」の丸をクリックしてドラッグし、何もない場所でドロップしてください。線が外れます。

線がつながっている状態。オブジェクトの質感が正しく表示されている
つながっている状態
線を外した状態。オブジェクトが真っ黒になっている
線を外した状態

設定は変えていないのに、真っ黒になりました。プリンシプルBSDFの計算結果が、出口に届かなくなったからです。

設定が消えたわけではありません。Ctrl + Zで戻せます。または、プリンシプルBSDFの「BSDF」の丸をドラッグして、マテリアル出力の「サーフェス」の丸にドロップすれば、つなぎ直せます。

前の記事で、色が反映されないときは「プリンシプルBSDFがマテリアル出力に接続されているか」を確認すると書きました。いま線を外して起きたのが、まさにその状態です。

グラスを用意する

ここからはグラスの形を作っていきます。作業しやすいように、画面上部のタブを「Layout」に戻してください。

ガラスは周りが映り込んで初めて透明に見えます。映り込むものが何もないと、正しく設定してもガラスには見えません。そこで、先に周りの環境を用意します。

  1. Poly Havenから、環境画像(HDRI)を1つダウンロードします。Poly Havenは無料で商用利用もできる素材サイトです。屋内や街並みなど、映り込みがはっきり出るものを選ぶと、効果が分かりやすいです
  2. 画面右側のプロパティパネルから、地球のアイコン(ワールドプロパティ)を開き、「カラー」の左にある丸いアイコンから「環境テクスチャ」を選びます。「開く」から、ダウンロードした画像を読み込みます
  3. 3Dビュー右上の4つの丸いアイコンから、いちばん右(レンダー)に切り替えます。以降はこのままの表示で進めます
レンダー表示に切り替え、ワールドプロパティで環境テクスチャにHDRI画像を読み込んで、カップの周りに空や壁が映り込んでいる状態

Shift + Aから「メッシュ」→「円柱」を追加し、カップの隣に置きます。前の記事から続けている方はそのファイルに、この記事から読み始めている方は立方体などを代わりに置いた新規ファイルに追加してください。

コーヒーカップの隣に円柱を追加した状態

このままではグラスに見えないので、縦長の比率に整えます。

SShift + Zで、太さ(XY軸)だけを縮小します。数値は0.4程度を目安にしてください。

続けてSで、今度は全体を拡大します。グラスはカップより背が高いほうが自然に見えるので、2倍程度を目安にしてください。

スケール調整前の、まだグラスに見えない円柱
調整前
太さを縮小してから全体を拡大し、カップより背の高い縦長の比率になった円柱
調整後

上面を削って、グラスらしい形にします。

  1. Tabで編集モードにします
  2. 面選択モード(3)に切り替えます
  3. 上面をクリックで選び、X→「面」で削除します
    円柱の上面を削除して、グラスの形になった状態

次に厚みをつけます。厚みがないと、ガラスの透明感が出ません。厚みをつけることで、光がガラスの中を通りながら曲がり、ガラスらしい見え方になります。

Tabでオブジェクトモードに戻り、Ctrl + A→「スケール」でスケールを適用します。先ほど変えた大きさを確定させておかないと、方向によって、厚みにばらつきが出てしまいます。

続けてモディファイアープロパティ(青いレンチのアイコン)から「モディファイアーを追加」→「生成」→「ソリッド化」を選び、「幅」を0.02程度にします。

ソリッド化モディファイアーで厚みをつけた状態

同じ手順で「ベベル」も追加し、量を0.005程度、セグメントを2にします。縁が尖っていると、光の曲がり方が不自然になるためです。

ベベルモディファイアーで縁を丸めた状態

最後に、面のカクカクした見た目をなめらかにします。同じくモディファイアーの追加から「ノーマル」→「角度でスムーズ」を選びます。

これだけでは変化しない場合があります。ひとつ前に追加した「ベベル」が、作成したエッジに「シャープ」を自動でつけているためです。「角度でスムーズ」の項目にある「シャープを無視」にチェックを入れてください。

角度でスムーズモディファイアーを追加し、シャープを無視にチェックを入れて面のつながりがなめらかになった状態

ガラスの質感を設定する

グラスを選択した状態で、画面上部のタブから「Shading」に切り替えます。このとき、表示が自動でマテリアルプレビューに戻ることがあります。3Dビュー右上のアイコンで、レンダー表示になっているか確認してください。

グラスにはまだマテリアルがないので、「新規」をクリックしてマテリアルを作成します。マテリアルを作成すると、プリンシプルBSDFとマテリアル出力の2つのノードが、自動で置かれます。

ガラスにするための項目は「伝播」です。ただし「伝播」は、前の記事で使った3項目とは置かれている場所が違います。ノード上でプリンシプルBSDFの項目を下にたどると「伝播」という折りたたまれた見出しがあるので、クリックして開いてください。

シェーダーエディターでプリンシプルBSDFの「伝播」セクションを開いた状態

中の「ウェイト」を1.0にします。この記事では以降、これを短く「伝播を1.0にする」と書きます。あわせて、同じノード上で次の3つも設定します。

  • 粗さ:0.05(表面をなめらかに。高いと曇りガラスになります)
  • IOR:1.45(屈折率。光の曲がり方を決めます)
  • メタリック:0(金属ではないので0のまま)
シェーダーエディターのプリンシプルBSDFノードで伝播1.0・粗さ0.05・IOR1.45・メタリック0を設定した状態

伝播を1.0にしても、透明にならない

ここで一度、画面の見た目を確認します。グラスは表面が光を反射しているだけで、透明にはなっていません。

伝播を1.0にしたが、表面が反射するだけで向こう側が見えていないグラス

設定を間違えたわけではありません。伝播は「透明度を上げる」設定ではなく、光の一部を表面ではね返し、残りをガラスの中へ通す——そういう性質に切り替える設定だからです。窓ガラスは景色が透けて見えるのと同時に、自分の姿もうっすら映り込みます。いま見えているのは、その映り込みのほうです。光がガラスを通り抜ける計算は、Blenderの初期状態ではオフになっています。次の手順でオンにします。

ガラスを透明にする

光がガラスを通り抜ける計算を有効にします。設定は2か所です。Blender全体で計算をオンにするレンダープロパティと、このガラスに適用するマテリアルプロパティです。片方だけでは効きません。

レンダープロパティ

カメラのアイコン(レンダープロパティ)を開き、「レイトレーシング」にチェックを入れます。光が跳ね返ったり曲がったりする様子を計算する仕組みです。

レンダープロパティの「レイトレーシング」にチェックを入れた状態

マテリアルプロパティ

ここから先はシェーダーエディターのノード上にはない項目です。マテリアルプロパティに戻り、下のほうの「設定」→「サーフェス」を開きます。

マテリアルプロパティの「設定」→「サーフェス」を開き、レイトレース伝播にチェックを入れた状態。幅はまだ初期値の「球状」
  • レンダーメソッド:「ディザー」のまま(変更しません)
  • レイトレース伝播:チェックを入れます
  • :「厚みのある板」を選びます

最後の「幅」について補足します。公式マニュアルでは、この記事のグラスのような丸みのある形は「球状」の方が適していると説明されています。ですが実際に試したところ、「厚みのある板」の方がはっきり透けて見えたので、この記事ではこちらを選んでいます。

レンダー表示のまま、グラスの見た目を確認します。

完成したガラスのグラス。ガラス越しに隣のコーヒーカップが透けて見えている

先ほどまで表面を反射するだけだったグラスが、向こう側まではっきり透けて見えるようになりました。

設定値のまとめ

この記事で設定した値をまとめます。思ったように透けないときは、現在の設定と比べてみてください。

項目 設定する場所
ソリッド化:幅 0.02 モディファイアー
ベベル:量/セグメント 0.005/2 モディファイアー
角度でスムーズ:シャープを無視 オン モディファイアー
伝播 → ウェイト 1.0 プリンシプルBSDF
粗さ 0.05 プリンシプルBSDF
IOR 1.45 プリンシプルBSDF
メタリック 0 プリンシプルBSDF
レイトレーシング オン レンダープロパティ
レンダーメソッド ディザー マテリアル → 設定 → サーフェス
レイトレース伝播 オン マテリアル → 設定 → サーフェス
幅(マテリアル設定) 厚みのある板 マテリアル → 設定 → サーフェス

検索して出てくる手順と違う場合

「Blender ガラス 透明にならない」などで検索すると、「スクリーンスペース屈折にチェック」「ブレンドモードをアルファブレンドに」といった手順が見つかると思います。これらの項目は、2024年7月のBlender 4.2でEEVEEの仕組みが変更され、名前も置き場所も変わっています。

古い解説の読み替えは、補足コラム「古い解説を読み替える」へ

ガラスが透明にならないときは

ガラスが透明にならないときは、次の6つを上から確認してみてください。

  1. 表示がレンダーになっているか:3Dビュー右上の、いちばん右のアイコンです
  2. レンダープロパティのレイトレーシングが有効か
  3. マテリアルの「レイトレース伝播」が有効か:レンダー側と両方必要です。片方だけでは効きません
  4. レンダーメソッドが「ディザー」になっているか:「ブレンド」だとレイトレース伝播が使えません
  5. 「設定」→「サーフェス」の「幅」が「厚みのある板」になっているか:「球状」のままだと、はっきり透けないことがあります
  6. メタリックが0になっているか:1だと金属として扱われ、透けなくなります

それでも解決しないときは、補足コラム「うまくいかないときの切り分け方」へ

次にやること

この記事では、マテリアルノードの仕組みをグラスを作りながら見てきました。

  • マテリアルノードは、それぞれ決まった役割を持ち、その結果を次のノードへ渡す
  • マテリアル出力が出口で、そこに届いたものが画面に出る
  • 線がつながっていないと、設定していても画面には出ない
  • ガラスは、マテリアルの設定とレンダー側の設定の両方で成り立つ

次は、テクスチャを扱います。木目や布地のような模様をつけるには、画像テクスチャやノイズテクスチャといったノードを使います。追加したノードを、この記事と同じようにつなぐだけです。

よくある質問

Q. マテリアルプロパティとマテリアルノードは、何が違うのですか?

A. どちらも同じマテリアルを、違う形で見せているものです。マテリアルプロパティはよく使う項目を取り出して並べたもの、マテリアルノードはその中身そのものです。どちらで値を変えても、結果は同じになります。画面を見比べた解説は、補足コラム「マテリアルノードとマテリアルプロパティの違い」へ。

Q. マテリアルノードを間違えて消してしまいました。元に戻せますか?

A. Ctrl + Zで戻せます。プリンシプルBSDFを消してしまった場合は、Shift + Aから「シェーダー」→「プリンシプルBSDF」で追加し直し、プリンシプルBSDFの右にある「BSDF」を、マテリアル出力の「サーフェス」につなげば元どおりです。

Q. 線をつないだら、その項目の数値が変更できなくなりました。

A. 不具合ではありません。線がつながっている間は、値を決めているのが左側のノードに移るためです。線を外せば、また自分で変更できるようになります。

Q. 伝播を1.0にしたのに、ガラスが透明になりません。

A. 表面の反射だけが見えていて、光がガラスを通り抜ける計算が無効になっている状態です。レンダープロパティの「レイトレーシング」と、マテリアルの「レイトレース伝播」の両方を有効にしてください。片方だけでは効きません。あわせて、3Dビューの表示が「レンダー」になっているかも確認してください。周りに映り込むものが少ないと、ぼんやりした見た目のままになることもあります。詳しくは「ガラスを透明にする」で解説しています。

Q. 「幅」は「球状」と「厚みのある板」のどちらを選べばいいですか?

A. この記事では「厚みのある板」を選んでいます。公式マニュアルでは、丸みのある形には「球状」、非常に平らか薄い物体には「厚みのある板」が向くと説明されています。ただしBlender 5.2で実際に試したところ、グラスのような丸い形でも「厚みのある板」の方がはっきり透けて見えました。そのため、この記事では公式の案内よりも実際の見え方を優先しています。両方を切り替えて見比べてみてください。

Q. 解説サイトに書いてある「スクリーンスペース屈折」が見つかりません。

A. 2024年7月のBlender 4.2で仕組みが変更され、この項目は名前が変わりました。現在は、マテリアルの「設定」→「サーフェス」にある「レイトレース伝播」がこれにあたります。同様に「ブレンドモード」は「レンダーメソッド」に変わっています。補足コラム「古い解説を読み替える」に読み替えの表を載せています。

Q. すりガラス(曇りガラス)はどうやって作りますか?

A. 伝播を1.0にしたうえで、粗さを上げます。0に近いほど透き通り、上げるほど向こう側がぼやけます。

Q. EEVEEとCyclesで、ガラスの見た目が違うのはなぜですか?

A. 絵を作る仕組みが違うためです。この記事で使っているEEVEE(絵を高速に計算する仕組み)は、速さを優先して光の計算を簡略化しています。Cyclesは時間をかけて光を追跡するので、複雑な反射や屈折がより正確に出ます。ガラスが何枚も重なるような場面では差が出やすくなります。レンダリングについては、別の記事で改めて扱います。

補足コラム

マテリアルノードとマテリアルプロパティの違い

前の記事では、画面右側の「マテリアルプロパティ」で色や質感を設定しました。この記事で見てきたマテリアルノードとは、何が違うのでしょうか。

プリンシプルBSDFのノードと、画面右側のマテリアルプロパティに同じ項目が表示されている状態

左のプリンシプルBSDFと、右のマテリアルプロパティを見比べてください。ベースカラー、メタリック、粗さ——同じ項目が並んでいます。

マテリアルプロパティで色を変えると、マテリアルノードの色も変わります。同じものを、違う場所から見ているだけだからです。右側のパネルは、よく使う項目を取り出して並べたものです。マテリアルノードは、その中身そのものです。

どちらで値を変えても結果は同じなので、使いやすいほうで操作して構いません。ノードを開く必要があるのは、右側のパネルには出てこない設定を扱うときです。

うまくいかないときの切り分け方

ガラスが透明にならないときは」のチェックリストで解決しない場合、次の点も確認してみてください。

設定は合っているのに、ぼんやりしたままのとき

  • レンダーエンジンがEEVEEになっているか:レンダープロパティのいちばん上です。Cyclesだと、この記事で使う項目そのものが表示されません
  • ベースカラーが黒くないか:ベースカラーはガラスの色にも影響します。まずは白で確認してください
  • 粗さが高すぎないか:1に近いと曇りガラスになり、暗い場所では見えにくくなります
  • ワールドに環境テクスチャ(HDRI)を設定しているか:ガラスの向こうに何もないと、透明にしても見た目で確認できません。この記事でHDRIを読み込み、カップを隣に置いたのは、そのためです

最後の点について補足します。前の記事で、メタリックを1にしても金属らしく見えないときの原因として「周りに映り込むものが少ない」ことを挙げました。ガラスも同じで、見え方は設定だけでは決まりません。周りが暗かったり、映り込むものがなかったりすると、透明にしたつもりでも、そう見えません。

プリンシプルBSDFがマテリアル出力につながっているか

マテリアルノードは何をしているのか」で試したとおり、線が外れていると真っ黒になります。ノードを動かしているうちに外れてしまうことがあります。

まず、確実に動く状態を作る

いま作っているグラスをいったん置いて、新しく球を追加してください。

  1. Shift + Aから「メッシュ」→「UV球」を追加します
  2. 新規マテリアルを追加し、ベースカラーを白、メタリックを0、粗さを0.05、IORを1.45、伝播のウェイトを1.0にします
  3. マテリアルの「設定」→「サーフェス」で、レンダーメソッドを「ディザー」、レイトレース伝播を有効、幅を「厚みのある板」にします
  4. レンダープロパティの「レイトレーシング」を有効にします
  5. 球の後ろに、色のついた平面を置きます
  6. 表示を「レンダー」に切り替えます

この球が透明になれば、Blenderの設定そのものは正常です。原因は、元のグラス側にあります。

症状のリストを上から試していくより、正常に動く状態を作って比べるほうが、原因にたどり着くのは早くなります。

形(メッシュ)が原因のとき

自分で作ったモデルでは、次のような原因もあります。

  • 面の裏表が逆になっている:3Dビュー右上の「オーバーレイ」から「面の向き」を有効にすると、外側が青、内側が赤で表示されます。赤が外を向いていたら、編集モードで全選択してShift + Nで修正します
  • 面が重なっている:押し出しやソリッド化を繰り返すと、同じ位置に面が二重にできることがあります。編集モードで全選択し、「メッシュ」→「クリーンアップ」→「距離でマージ」を実行します
  • 拡大縮小が適用されていないNキーでスケールを確認し、1以外になっていたらCtrl + A→「スケール」を実行します
古い解説を読み替える

2024年7月のBlender 4.2で、EEVEEの仕組みが変更されました。それ以前に書かれた解説は、項目名が現在と対応していません。

仕組みそのものが変わっているので厳密な一対一の対応ではありませんが、読み替える目安としては次のようになります。

古い解説にある項目 現在の項目
スクリーンスペース屈折 レイトレース伝播
ブレンドモード → アルファハッシュ レンダーメソッド → ディザー
ブレンドモード → アルファブレンド レンダーメソッド → ブレンド
スクリーンスペース反射 → 屈折 レンダープロパティ → レイトレーシング

ひとつ注意があります。古い解説で「アルファブレンド」を指定していても、そのまま「ブレンド」に読み替えないでください。表のとおり対応してはいるのですが、現在の「ブレンド」ではレイトレース伝播が使えません。半透明にはなりますが、光が曲がらないので、ガラスというよりセロハンのような見た目になります。ガラスを作る場合は「ディザー」のままにしておくのが正解です。

ガラスの種類による違い

この記事で作ったのは、グラスのような厚みのあるガラスです。窓ガラスのような薄いガラスは、設定が少し変わります。

薄いガラス(窓ガラスなど)

厚みのない1枚の面でガラスを作る場合、プリンシプルBSDFの「薄い壁」にチェックを入れます。あわせて、マテリアルの「設定」→「サーフェス」で次のようにします。

  • 幅(数値):0
  • 幅(モード):厚みのある板

薄い板として扱う設定です。ソリッド化で厚みをつける必要がないので、窓や板ガラスはこちらのほうが簡単に作れます。

厚みのあるガラス(この記事のグラス)

公式マニュアルでは、丸みのある形には「球状」、非常に平らか薄い物体(ガラス板や草の葉)には「厚みのある板」が向くと説明されています。この記事のグラスは丸みのある形なので、公式にしたがえば「球状」を選ぶことになります。

ただし実際に試したところ、グラスのような丸い形でも「厚みのある板」の方がはっきり透けて見えたので、本編ではこちらを選んでいます。「球状」を試して見え方を比べてみるのもおすすめです。

「グラスBSDF」という専用ノードもある

ガラス専用の「グラスBSDF」というノードもあります。Shift + Aから「シェーダー」→「グラスBSDF」で追加し、マテリアル出力のサーフェスにつなげば使えます。

設定項目はカラー・粗さ・IORの3つだけで、プリンシプルBSDFよりシンプルです。ただし、色やコーティングをまとめて調整したい場合はプリンシプルBSDFのほうが扱いやすいため、この記事ではプリンシプルBSDFを使いました。

ノードを追加してつなぎ直す練習にもなるので、試してみてください。