【Blender4.4】Metallic(金属)マテリアルの仕組みと使い方を徹底解説!

blender
記事内に広告が含まれています。

金属のマテリアルって、ただMetallicパラメータを調整するだけではないのです…‼

BlenderのPrincipled BSDFシェーダーにはMetallicというスライダーがありますが、単にこれを上げただけではリアルな金属にはなりません。でも自分含め、多くの人はこのスライダーをなんとなく調整しているだけだと思います。

見た目重視ならそれでも全然いいのですが、もしリアルな金属マテリアルを作りたい、チタン、鉄、銅…さまざまな金属を作り分けたい、と思ったら、BlenderのMetallic BSDFにはきちんと表現できるパラメータや指標があります。

また、鏡のような反射、色のつき方、粗さによる光の拡散など、金属特有の性質を理解しないと「それっぽくない金属」になってしまいます。

この記事では、Metallic BSDFや金属マテリアルが内部でどう機能しているのか、そしてどうすればリアルな金属を作れるのか、わかりやすく丁寧に解説していきます。

この記事は、BlenderのMetallic(金属)マテリアルの作り方、Metallic BSDFを解説した中級者向けの記事です。

難易度 3.0

スポンサーリンク

そもそもなぜ金属は光ってるの?

金属といえば、ピカピカに光る質感です。でも一体どうしてそんなにキラキラしているのでしょうか?

金属には自由電子がある

金属と非金属の違いで一番に思い浮かべるのは、「電気を通す」ということではないでしょうか?導線に使われているように、多くの金属が電気をよく伝えます。これを電気伝導性があるといいます。

なぜ電気伝導性が高いかというと、金属原子は電子を特定の相手と共有せず、「電子の海」の中で多くの原子が結びついているような結合(=金属結合)をしているため、電子が比較的自由に動き回れるからです。-に帯電している電子が流れることで電気が流れます。

キラキラしているのは自由電子たちのおかげ

金属が輝いているのも自由電子たちの働きです。光は電磁波で、光の波は電気的な力を持った電場を持っています。その電気的な波が自由電子に当たると、自由電子たちは電気の力によって振動します。

すると、自由電子たちの振動により、また電磁波を生成します(再放射)。こうして自由電子たちが作った電磁波が反射の光線として私たちの目にキラキラとした表面として見えているわけです。

なお、金属表面がツルツルで平らであるほど、電子の再放射した電磁波は特定の方向(=鏡面反射方向)に強くなります。これが金属が鏡のように反射する理由です。

水もガラスも光を反射してるけど?

水やガラスなど、非金属物質の中の電子は束縛電子と呼ばれ、原子や分子にしっかり束縛されていて自由に動き回ることはできません。ですが、光(電磁波)の電場が当たると、わずかに振動することができ、この振動によって少量の光を反射することができます。

ただし、正面から入射する光に対しては、ほとんどが屈折して物質内に進むため、反射は目立ちません。一方で、側面など、斜めから入射した光は、フレネル効果により反射される割合が大きくなり、表面が反射しているように見えます。

逆張りクソ野郎が生き残る

関係ないコラム。光線が当たった自由電子は反射光だけではなく、あらゆる方向に電磁波を出しています。でも結局生き残るのが入射光を法線に対して逆に映したような反射光だけなので、金属表面は鏡面反射してキラキラしているわけです。

この鏡面反射する角度だけが生き残るのは、入射光の波が干渉し、同じ位相とタイミングで強め合って増幅されるのが、この反射方向だけだったという話。

この世界で私たちはいろいろな荒波にもまれて生きており、波に同調して流されていくしか生き残れないのかと思ってしまいます。しかし、この反射光のように、波を利用して反射して生きるような逆張りの生き方もあるのでは…?(クソ野郎と書いてしまったのは、そういう生き方してる人って傍から見たらそう見えるだろうなと思って…。)

見えている光は生き残った光なんだけど、今までとは違う方向に向かう生き方が生き残るのかもしれません。

スポンサーリンク

Principled BSDFのMetallic(メタリック)

BlenderのPrincipled BSDFにおけるMetallic(メタリック)は、そのマテリアルが金属であるかどうかを示す値です。基本的には0か1のどちらか、つまり「非金属(ダイエレクトリック)」か「金属(メタル)」か、の二択です。

0.5などの中間値も設定可能ですが、物理的には不自然な「半金属」になってしまい、リアルさを損なうことが多いため注意が必要です。

金属マテリアルの設定の仕方

Principled BSDFで金属を表現する場合は

  • Metallicを1にする
  • それぞれの金属の反射の色をBase Colorに入れる(金なら黄~橙色)
  • Roughnessで粗さを調節する
  • Specular Tintで周辺の色をつけることもできる

右図は適当に黄色っぽい色にして金を表現してラフネスを変えてみている図です。Principled BSDFでは正確ではありませんが、このようにお手軽に金属を表現できます。

金属と非金属の違いとは?

Blenderのレンダリングエンジンでは、金属と非金属で以下のような違いがあります:

性質非金属金属
反射色白っぽいマテリアル自身の色
拡散反射(Diffuse)ありなし(完全な鏡面反射)
鏡面反射(Specular)控えめ(1.0以下)強い(1.0固定)
サブサーフェス使用可能使用不可(Metallic=1のとき)

右図:左Metallic=1 右Metallic=0

どちらもベースカラーをピンクっぽい赤にしています。金属の反射光がピンクっぽく、鏡面反射が強いことがわかります。

また、金属はSpecular値を弄らなくても常に強く設定されています。また、Tintで周辺に色をつけることができます。(Specular値は反映されない)

金属は拡散反射を持たないため、Diffuseカラーの効果は失われ、主に「ベースカラー」が反射光の色として使われます。金属の見た目は反射と粗さ(Roughness)だけで決まると言っても過言ではありません。

スポンサーリンク

Metallic BSDF ノードのパラメータ

Metallic BSDFノードは、金属の外観をリアルに再現するための専用シェーダーノードです。通常のPrincipled BSDFでも金属は表現できますが、こちらはより物理ベースで精密な金属表現が可能です。

EEVEEでもCyclesでも機能しますが、4.3から出たノードなので、旧バージョンのBlenderに持っていくと機能しなくなります。

Distribution(マイクロファセット分布)

金属表面の微細な凹凸の統計的な分布方法。これにより反射の性質が変わります。

  • GGX:標準的でリアル。最も一般的
  • Multiscatter GGX:エネルギー保存的。暗くなりすぎる問題を軽減(推奨)
  • Beckmann:旧方式(Cycles専用)

Fresnel Type(フレネルのタイプ)

物体の表面で光が反射する割合は、見る角度によって変わります。これを説明するのがフレネル効果(Fresnel Effect)です。

金属の場合、この反射率が角度に応じて変化するだけでなく、色にも偏り(色付き反射)があります。これを正確に再現するために、Fresnel Typeという方式を選ぶことになります。

2つの方式から選択できます:

  • F82 Tint:アーティスト向け。見た目で制御
  • Physical Conductor:物理ベース。n/kによる科学的な再現

F82 Tint

Adobeが定義した「F82 Tintモデル」は、複雑なIORの代わりに色を直接指定してフレネル反射をコントロールできる方法です。

  • Base Color正面から見た色
  • Edge Tint斜めから見た色

これを使えば、「銅のように正面はオレンジで、斜めからは赤っぽく光る」といった芸術的・表現的なコントロールができます。

簡単に色をいじって 疑似的な金属、アニメ的な金属 を作りたいときに便利です。

正面からは黄色、斜めからは赤く見えるよう設定したF82 Tintの例
F82 Tintモデル、粗さは0.5です。

下のF82 Tintモデルの金属表現の項目で具体的な数値データの表を載せています。

ちなみにF82 Tintの「82°」というのは、視線ベクトル(カメラ方向)とサーフェスの法線ベクトルのなす角が約82°のとき、つまり非常に斜めから見たときの色を意味しています。

カメラから見た「視線ベクトル」は、レンダリング上では「入射光」として扱われる
この「視線ベクトル」と物体表面の「法線ベクトル」とのなす角度を「入射角」と呼ぶ。

Physical Conductor(物理ベース IOR)

これは実際の金属の物理データ(複素屈折率)を使って再現するモードです。以下の2つを使います:

IOR(屈折率 n)…波長ごとの実数部。光が素材を通るときの「曲がりやすさ」を示します。RGBごとに別々の値になります。

Extinction(消衰係数 k)…波長ごとの虚数部。光の吸収や減衰の度合いを表します。これもRGBごとに別々の値になります。

この「n(屈折率)」と「k(消衰係数)」を組み合わせることで、科学的に正確な金属の反射色を得られます。

nとkの値の設定の仕方

例えば金のn,kを調べたいとき

refractiveindex.infoに行き、

  • Shelf…Selected materials for 3D artists
  • Book…Metals
  • Page…Gold(調べたい金属名)

と設定。WavelengthにRGBの各色の波長を入れます。R = 650 nm G = 510 nm B = 475 nm (で入れていますが、範囲の幅があり、調べても定まった波長の値は得られませんでした…)

すると下にnとkの値が出てくるので、各rgbの設定項目にこの値を入れます。

右の画像はこの値を入力して出力した金のマテリアルです。ちょっと赤いですね…。

ちなみにBlender Manualでは違う値が載っていますが、グラフから、どんな波長の長さにしてもそんな値は出ないだろ…っていう値で、このページをBlender側がオススメしておきながら、一体どういう値の出し方したのか謎です…。

下記のPhysical Conductor用 金属マテリアルデータ表に数値などを記していますので良ければ参考にしてください。

粗さは0.5です

金属のIOR(屈折率)

非金属の場合、屈折率は 1.0 や 1.5 といった実数で表され、これは光が物質に入るときの屈折角を決めるシンプルな指標です。一方、金属では屈折率が複素数 n+ik で表されます。

  • n(実部)…屈折による光の進み方に関係
  • k(虚部)…光が物質中でどれだけ吸収・減衰するかを表す

特に k の値が大きいと、金属中の自由電子が入射光のエネルギーを強く吸収しやすくなります。吸収されたエネルギーは、電子の振動として蓄えられ、その振動によって再び電磁波(反射光)が放射されるのです。

n と k のバランスによって反射の度合いが決まります。

スポンサーリンク

Metallic BSDFの共通項目

Roughness(粗さ)

金属表面の「ザラつき」具合。

Copper(銅)
  • 1.0:ぼんやりした粗い反射
  • 0.0:鏡のようにシャープな反射

Anisotropy(異方性)※Cycles専用

ハイライトの伸び方の方向性
髪の毛や研磨金属のように、ハイライトが一方向に伸びる効果を出せます。

銅、タンジェント方向はz方向です。
  • 0 → 伸びなし
  • 1 → タンジェント方向に沿ってハイライトが伸びる

Rotation(回転)※Cycles専用

異方性の向きを回転します。1.0で1周(360°)。

なお、Glossy BSDFと比べてハイライトの方向が90°回転しているため、0.25(=90°)を加えると見た目が一致します。

Normal(法線)

表面の向きを表す法線マップを入力します。細かい凹凸表現に使います。

Tangent(接線)

異方性の方向性を決めるための入力です。光沢の流れや研磨方向を決定します。

ベクトルを入れれば大体機能します。

スポンサーリンク

リアルな金属を表現する方法

Metallic BSDFを使い、ある程度リアルな金属質感を出す方法です。

下記のデータを使い、実際にF82 TintやPhysical Conductorモードで金属を表現します。

  • F82 Tint用 金属マテリアルカラーデータ表
    • Base Color と Edge Color にRGB値かHexコードを入れて金属の反射色を再現します。下記のデータは鉄以外はBlender Manualに載っているものですが、Physically Based database for CG artistsにも色の参考値があります。
  • Physical Conductor用 金属マテリアルデータ表
    • RGB波長それぞれのIORとExtinction値を入力して物理的に正確な金属を表現します。下記は鉄以外はBlender Manualに載っているものですが、refractiveindex.infoに他の金属の参考値が出力されます。RGB波長は各個人によって入力する値に幅があります。ここではR = 650 nm G = 510 nm B = 475 nmでデータの値を出していますが、特にこれでなければならない理由はないです。

F82 Tint用 金属マテリアルカラーデータ表

F82 Tintモデル、粗さは0.5です。
MaterialBase Color (RGB)Base Color (Hex)Edge Tint (RGB)Edge Tint (Hex)
Titanium
(Default)
0.617, 0.576, 0.540CEC8C2FF0.695, 0.726, 0.770D9DDE3FF
Aluminum0.911, 0.912, 0.917F5F5F5FF0.848, 0.877, 0.916EDF1F5FF
Copper0.972, 0.694, 0.486FCD8BAFF0.961, 0.969, 0.942FAFCF8FF
Gold1.000, 0.735, 0.353FFDFA0FF0.993, 1.000, 1.000FEFFFFFF
Iron0.560, 0.570, 0.580C5C7C8FF0.900, 0.910, 0.920FAFCF8FF
RGBのデータはBlenderのマニュアルのデータを参照しています。Hex値は数値を入力して出していますが大体です。鉄の色設定は、鉄の物理IOR(n/k)値に基づいてF82 Tint用に近似されたものです。公式に定義されている値ではありませんが、他の金属との相対関係や反射率から妥当な設定としてAIが導出しています。

Physical Conductor用 金属マテリアルデータ表

粗さは0.5です
MaterialTitanium (Default)AluminumCopperGoldFe
IOR2.757, 2.512, 2.2311.333, 0.945, 0.5820.235, 0.729, 1.3690.000, 0.470, 1.4392.91,2.81,
2.68
Extinction3.867, 3.404, 3.0097.434, 6.340, 5.1815.666, 2.562, 2.227182.6, 2.189, 1.6603.09,2.90
,2.83
Fe以外はBlender Manualを参照しています。FeはRGB(650,510,475nm)波長を入れてRefractiveIndex.Infoサイトのデータを出力したもの。

ちなみに表紙の金属たちですが、金や銅の製品はPhysical ConductorではなくF82 Tintを使用しています。

物理的に正確な値よりも、もっと色味を強く表現したいときなどに自分である程度色を「作った」方が金属っぽく感じるかもしれません。

スポンサーリンク

参考

参考にさせていただいたチュートリアル動画です。

光の反射について解説している動画です。