前の記事「Blenderのマテリアルの基礎と陶器の質感のつけ方」で、コーヒーカップに陶器の質感をつけました。この記事では、その隣にガラスのグラスを作りながら、色や質感を設定する「マテリアルノード」の仕組みを解説します。
ガラスを透明にするには、マテリアルノードだけでなく、レンダリングに関わる設定も必要です。ノードでガラスの質感をつけたあと、透明にするための設定を順に見ていきます。
※この記事はBlender 5.2 LTSで確認しています。レンダーエンジンは初期設定の「EEVEE」を使います。
この記事では、前の記事で陶器の質感をつけたコーヒーカップを使います。カップがない人も、立方体や球で同じ手順を試せます。
シェーダーエディターを開く
マテリアルノードは、シェーダーエディターで設定します。画面上部のタブから「Shading」をクリックしてください。
これが「シェーダーエディター」です。画面に並んでいるのが「マテリアルノード」です。複雑な画面を想像するかもしれませんが、開いた直後にあるのは「プリンシプルBSDF」と「マテリアル出力」の2つだけです。
覚えておきたいのは、右のマテリアル出力が出口だということです。ここに届いたものが、画面に表示されます。
マテリアルノードは何をしているのか
2つのマテリアルノードが、それぞれ何をしているのか見ていきます。
プリンシプルBSDFは、表面の見え方を計算するノードです。ベースカラーや粗さに入れた値をもとに、「この表面が光をどう反射するか」を計算します。前の記事で色やつやを変えると見た目が変わったのは、このノードの計算結果が変わったからです。
マテリアル出力は、その計算結果を受け取るノードです。
このように、ノードにはそれぞれ決まった役割があります。自分の役割を終えたら、その結果を次のノードへ渡します。ノードをつなぐことで、マテリアルの見た目が作られていきます。
それぞれの役割を整理する
シェーダーエディターに出てくるものと、その役割を整理しておきます。
- マテリアル
- オブジェクトの表面の質感をまとめて管理する仕組み。この記事で作るガラスも、前の記事で作った陶器も、それぞれがひとつのマテリアルです。
- マテリアルノード
- マテリアルを作るための部品。プリンシプルBSDFやマテリアル出力も、そのひとつです。この記事では、短く「ノード」とも呼びます。
- プリンシプルBSDF
- 表面の見え方を計算するマテリアルノード。色・つや・金属感などをまとめて調整できます。
- マテリアル出力
- 完成した計算結果を受け取る出口。ここに届いたものが、画面に表示されます。
線を外して確かめる
プリンシプルBSDFは、「この表面はこう見えます」という計算結果を、マテリアル出力へ渡しています。本当にそうなのか、線を外して確かめてみます。
マテリアル出力の「サーフェス」の丸をクリックしてドラッグし、何もない場所でドロップしてください。線が外れます。
設定は変えていないのに、カップ本体とソーサーが真っ黒になりました。プリンシプルBSDFの計算結果が、マテリアル出力に届かなくなったからです。取っ手は別のマテリアルを使っているので、変わりません。
確認できたら、Ctrl + Zで線を元に戻してください。または、プリンシプルBSDFの「BSDF」の丸をドラッグして、マテリアル出力の「サーフェス」の丸にドロップすれば、つなぎ直せます。
色や質感が反映されないときは、まずこの線がつながっているかを確認します。
グラスを用意する
ここからはグラスをモデリングしていきます。作業しやすいように、画面上部のタブを「Layout」に戻してください。
ガラスの見え方は、周りに何が映り込むかで変わります。そこで、先に周りの環境を用意します。
- Poly Havenから、環境画像(HDRI)を1つダウンロードします。Poly Havenは無料で商用利用もできる素材サイトです。屋内や街並みなど、映り込みがはっきり出るものを選ぶと、効果が分かりやすいです
- 画面右側のプロパティパネルから、地球のアイコン(ワールドプロパティ)を開き、「カラー」の左にある丸いアイコンから「環境テクスチャ」を選びます。「開く」から、ダウンロードした画像を読み込みます
- 3Dビュー右上の4つの丸いアイコンから、いちばん右(レンダー)に切り替えます。以降はこのままの表示で進めます
Shift + Aから「メッシュ」→「円柱」を追加し、カップの隣に置きます。
このままではグラスに見えないので、縦長の比率に整えます。
S→Shift + Zで、太さ(XY軸)だけを縮小します。数値は0.4程度を目安にしてください。
続けてSで、今度は全体を拡大します。グラスはカップより背が高いほうが自然に見えるので、2倍程度を目安にしてください。
上面を削って、グラスらしい形にします。
- Tabで編集モードにします
- 面選択モード(3)に切り替えます
-
上面をクリックで選び、X→「面」で削除します
次に厚みをつけます。
Tabでオブジェクトモードに戻り、Ctrl + A→「スケール」でスケールを適用します。先ほど変えた大きさを確定させておかないと、方向によって、厚みにばらつきが出てしまいます。
続けてモディファイアープロパティ(青いレンチのアイコン)から「モディファイアーを追加」→「生成」→「ソリッド化」を選び、「幅」を0.02程度にします。
同じ手順で「ベベル」も追加し、量を0.005程度、セグメントを2にして、縁を少し丸めます。
最後に、面のカクカクした見た目をなめらかにします。同じくモディファイアーの追加から「ノーマル」→「角度でスムーズ」を選びます。
これだけでは、なめらかになりません。「角度でスムーズ」の項目にある「シャープを無視」にチェックを入れてください。
ガラスの質感を設定する
グラスを選択した状態で、画面上部のタブから「Shading」に切り替えます。Shadingタブの3Dビューは、Layoutタブとは表示の設定が別で、マテリアルプレビューになっています。3Dビュー右上のアイコンから、レンダー表示に切り替えてください。
グラスにはまだマテリアルがないので、「新規」をクリックして作成します。すると、プリンシプルBSDFとマテリアル出力の2つのノードが表示されます。
ガラスにするには、「伝播」の設定を使います。前の記事で使ったベースカラー・粗さ・メタリックと違い、「伝播」は最初は閉じています。プリンシプルBSDFの項目を下にたどり、「伝播」をクリックして開いてください。
中の「ウェイト」を1.0にします。あわせて、同じノード上で次の3つも設定します。
- 粗さ:0.05(表面をなめらかに。高いと曇りガラスになります)
- IOR:1.45(屈折率。光の曲がり方を決めます)
- メタリック:0(金属ではないので0のまま)
伝播を1.0にしても、透明にはならない
ここで一度、グラスの見た目を確認します。表面が光を反射しているだけで、透明にはなっていません。
伝播は、表面を「光を通す性質」に切り替える設定です。ただ、光が実際にガラスを通り抜ける計算は、Blenderの初期状態ではオフになっています。そのため、いまは表面の映り込みだけが見えています。ノードで設定するだけでは透明にならないのは、このためです。
ガラスを透明にする
ガラスを透明にするには、2か所の設定をオンにします。シーン全体に効くレンダープロパティと、このガラスだけに効くマテリアルプロパティです。片方だけでは効きません。
レンダープロパティ
カメラのアイコン(レンダープロパティ)を開き、「レイトレーシング」にチェックを入れます。光がガラスを通り抜けたり、表面で跳ね返ったりする様子を計算する仕組みです。
マテリアルプロパティ
マテリアル側の設定は、シェーダーエディターのノードにはありません。マテリアルプロパティに戻り、下のほうの「設定」→「サーフェス」を開きます。
- レンダーメソッド:「ディザー」のまま(変更しません)
- レイトレース伝播:チェックを入れます
- 幅:「厚みのある板」を選びます
「幅」は、公式マニュアルでは、この記事のグラスのような丸みのある形には「球状」が向くと説明されています。ただ、実際に試したところ、「厚みのある板」のほうがはっきり透けて見えたので、この記事ではこちらを選んでいます。
レンダー表示のまま、グラスの見た目を確認します。
先ほどまで表面の映り込みしか見えなかったグラスが、向こう側まで透けて見えるようになりました。
設定値のまとめ
この記事で設定した値をまとめます。ガラスが透明にならないときは、現在の設定と比べてみてください。
| 項目 | 値 | 設定する場所 |
|---|---|---|
| ソリッド化:幅 | 0.02 | モディファイアー |
| ベベル:量/セグメント | 0.005/2 | モディファイアー |
| 角度でスムーズ:シャープを無視 | オン | モディファイアー |
| 伝播 → ウェイト | 1.0 | プリンシプルBSDF |
| 粗さ | 0.05 | プリンシプルBSDF |
| IOR | 1.45 | プリンシプルBSDF |
| メタリック | 0 | プリンシプルBSDF |
| レイトレーシング | オン | レンダープロパティ |
| レンダーメソッド | ディザー | マテリアル → 設定 → サーフェス |
| レイトレース伝播 | オン | マテリアル → 設定 → サーフェス |
| 幅(マテリアル設定) | 厚みのある板 | マテリアル → 設定 → サーフェス |
検索して出てくる手順と違う場合
「Blender ガラス 透明にならない」などで検索すると、「スクリーンスペース屈折にチェック」「ブレンドモードをアルファブレンドに」といった手順が見つかると思います。これらは、2024年7月にリリースされたBlender 4.2より前の手順で、いまのBlenderとは設定の仕方が違います。
検索で見つけた手順の項目が見当たらないときは、補足コラム「Blender 4.2より前の項目名との対応」へ
ガラスが透明にならないときのチェックリスト
ガラスが透明にならないときは、次の6つを上から確認してみてください。
- 表示がレンダーになっているか:3Dビュー右上の、いちばん右のアイコンです
- レンダープロパティの「レイトレーシング」が有効か
- マテリアルの「レイトレース伝播」が有効か:レンダー側と両方必要です。片方だけでは効きません
- 「レンダーメソッド」が「ディザー」になっているか:「ブレンド」だとレイトレース伝播が使えません
- 「設定」→「サーフェス」の「幅」が「厚みのある板」になっているか:「球状」のままだと、はっきり透けて見えないことがあります
- メタリックが0になっているか:1だと金属として扱われ、伝播を設定しても透明になりません
それでも解決しないときは、補足コラム「うまくいかないときの切り分け方」へ
次にやること
この記事では、ガラスのグラスを作りながら、マテリアルノードの仕組みを見てきました。
覚えることが多いと感じたら、次の4つを押さえておけばガラスは作れます。
- マテリアルノードは、それぞれ決まった役割を持ち、その結果を次のノードへ渡す
- マテリアル出力が出口で、そこに届いたものが画面に出る
- 線がつながっていないと、設定していても画面には出ない
- ガラスは、レンダー側とマテリアル側の両方を設定すると透明になる
次は、テクスチャです。コーヒーカップの下に木のテーブルを作りながら、画像を使って質感を作る方法を解説します。木目の画像を1枚貼るだけでは木に見えないので、複数の画像を重ねて木の質感に近づけていきます。
次の記事:Blenderのテクスチャの基礎と画像の貼り方よくある質問
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で仕組みが変更され、この項目は名前が変わりました。現在は、マテリアルの「設定」→「サーフェス」にある「レイトレース伝播」がこれにあたります。同様に「ブレンドモード」は「レンダーメソッド」に変わっています。補足コラム「Blender 4.2より前の項目名との対応」に表を載せています。
Q. すりガラス(曇りガラス)はどうやって作りますか?
A. 伝播を1.0にしたうえで、「粗さ」を上げます。0に近いほど透き通り、上げるほど向こう側がぼやけます。
Q. EEVEEとCyclesで、ガラスの見た目が違うのはなぜですか?
A. 光の計算の仕方が違うためです。この記事で使っているEEVEEは、速さを優先して、光の反射や屈折を簡略化して計算します。Cyclesは光の動きを細かく計算するため、複雑な反射や屈折もより正確に出ます。ガラスが何枚も重なるような場面では、差が出やすくなります。レンダリングについては、「Blenderのレンダリングの基礎とノイズの消し方」で解説しています。
補足コラム
マテリアルノードとマテリアルプロパティの違い
前の記事では、画面右側のマテリアルプロパティで色や質感を設定しました。この記事で使ったマテリアルノードと、2つを並べてみます。
左のプリンシプルBSDFと、右のマテリアルプロパティを見比べてください。ベースカラー、メタリック、粗さなど、同じ項目が並んでいます。
マテリアルプロパティで色を変えると、マテリアルノードの色も変わります。右側のパネルは、プリンシプルBSDFの項目をそのまま表示しているからです。どちらで値を変えても結果は同じなので、使いやすいほうで操作して構いません。
うまくいかないときの切り分け方
「ガラスが透明にならないときのチェックリスト」で解決しない場合、次の点も確認してみてください。
ガラスが透けて見えないとき
- レンダーエンジンがEEVEEになっているか:レンダープロパティのいちばん上です。Cyclesは光の計算の仕方が違うため、ガラスの設定の仕方も違います。この記事で使う項目は、EEVEEでしか表示されません
- 「ベースカラー」が黒くないか:ベースカラーはガラスの色にも影響します。まずは白で確認してください
- 粗さが高すぎないか:1に近いと曇りガラスになり、向こう側がぼやけます
- ワールドに環境テクスチャ(HDRI)を設定しているか:ガラスの向こうに何もないと、透明にしても透けて見えません。この記事でHDRIを読み込み、カップを隣に置いたのは、そのためです
プリンシプルBSDFがマテリアル出力につながっているか
「マテリアルノードは何をしているのか」で試したとおり、線が外れていると真っ黒になります。ノードを動かしているうちに外れてしまうことがあります。
新しい球で、透明になるかを試す
いま作っているグラスはそのままにして、新しく球を追加してください。
- Shift + Aから「メッシュ」→「UV球」を追加します
- 新規マテリアルを追加し、「ベースカラー」を白、「メタリック」を0、「粗さ」を0.05、「IOR」を1.45、「伝播」の「ウェイト」を1.0にします
- マテリアルの「設定」→「サーフェス」で、「レンダーメソッド」を「ディザー」、「レイトレース伝播」を有効、「幅」を「厚みのある板」にします
- レンダープロパティの「レイトレーシング」を有効にします
- 球の後ろに、色のついた平面を置きます
- 表示を「レンダー」に切り替えます
この球が透明になれば、Blenderの設定そのものは正常です。原因は、元のグラス側にあります。
あとは、この球と元のグラスの設定を見比べて、違うところを探してみてください。
形(メッシュ)が原因のとき
自分で作ったモデルでは、次のような原因もあります。
- 面の裏表が逆になっている:3Dビュー右上の「オーバーレイ」から「面の向き」を有効にすると、外側が青、内側が赤で表示されます。赤が外を向いていたら、編集モードで全選択してShift + Nで修正します
- 面が重なっている:押し出しやソリッド化を繰り返すと、同じ位置に面が二重にできることがあります。編集モードで全選択し、「メッシュ」→「クリーンアップ」→「距離でマージ」を実行します
- 拡大縮小が適用されていない:Nキーで「スケール」を確認し、1以外になっていたらCtrl + A→「スケール」を実行します
Blender 4.2より前の項目名との対応
2024年7月にリリースされたBlender 4.2で、EEVEEの仕組みが変更されました。それ以前に書かれた解説は、項目名が現在と対応していません。
仕組みそのものが変わっているので厳密な一対一の対応ではありませんが、読み替える目安としては次のようになります。
| Blender 4.2より前の項目 | 現在の項目 |
|---|---|
| スクリーンスペース屈折 | レイトレース伝播 |
| ブレンドモード → アルファハッシュ | レンダーメソッド → ディザー |
| ブレンドモード → アルファブレンド | レンダーメソッド → ブレンド |
| スクリーンスペース反射 → 屈折 | レンダープロパティ → レイトレーシング |
検索で見つけた手順で「アルファブレンド」を指定していても、そのまま「ブレンド」に読み替えないでください。表では対応していますが、現在の「ブレンド」ではレイトレース伝播が使えません。半透明にはなりますが、光が曲がらないので、ガラスというよりセロハンのような見た目になります。ガラスを作る場合は「ディザー」のままにします。
ガラスの種類による違い
この記事で作ったのは、グラスのような厚みのあるガラスです。窓ガラスのような薄いガラスは、設定が少し変わります。
薄いガラス(窓ガラスなど)
厚みのない1枚の面でガラスを作る場合、プリンシプルBSDFの「薄い壁」にチェックを入れます。あわせて、マテリアルの「設定」→「サーフェス」で、「幅」を「厚みのある板」にします。
薄い板として扱う設定です。ソリッド化で厚みをつける必要がないので、窓や板ガラスはこちらのほうが簡単に作れます。
厚みのあるガラス(この記事のグラス)
公式マニュアルでは、丸みのある形には「球状」、非常に平らか薄い物体(ガラス板や草の葉)には「厚みのある板」が向くと説明されています。この記事のグラスは丸みのある形なので、公式にしたがえば「球状」を選ぶことになります。
ただし実際に試したところ、グラスのような丸い形でも「厚みのある板」のほうがはっきり透けて見えたので、本編ではこちらを選んでいます。「球状」を試して見え方を比べてみるのもおすすめです。
「グラスBSDF」という専用ノードもある
ガラス専用の「グラスBSDF」というノードもあります。Shift + Aから「シェーダー」→「グラスBSDF」で追加し、マテリアル出力の「サーフェス」につなげば使えます。
設定項目はカラー・粗さ・IORの3つだけで、プリンシプルBSDFよりシンプルです。ただし、色やコーティングをまとめて調整したい場合はプリンシプルBSDFのほうが扱いやすいため、この記事ではプリンシプルBSDFを使いました。
ノードを追加してつなぎ直す練習にもなるので、試してみてください。