Blenderで何か作っているとき、ノーマルで凹凸をつけるときにBumpノードをつなげって言われてるのに、すでに作ってあるテクスチャをダウンロードしてつけてみると、Normal Mapノードがつないであったりして、結局どっちをつなげるんだ?って不思議に思うことないですか?
自分は思ってました。結局どっちのノードをつなげるのが、ノーマルをつけるときに正解なんだろうと。なのでどういうときにNormal Mapノードをつけ、Bumpノードをつけるべきかを解説します。
この記事は、Blenderのマテリアルノードでノーマルマップをどのようにつなげばいいのか、Normal MapとBumpの違いを書いた初級者~中級者向けの記事です。
難易度
Normal MapとBumpの違い

どっちも「見た目をデコボコさせる」ためのノードなんだけど、入力する情報の種類と使いどころが違います。
Bumpノード
特徴 | 内容 |
---|---|
入力 | グレースケール画像(白黒の「高さマップ」) |
仕組み | 明るい=高い、暗い=低い で、擬似的に凹凸をつける |
出力 | ノーマル情報(Normalソケットに繋げる) |
よく使う時 | シンプルな凹凸、ノーマルマップを持っていない時に便利 |
ざっくり言うと「白黒の絵を使って凹凸をつくるノード」
Normal Mapノード
特徴 | 内容 |
---|---|
入力 | ノーマルマップ(RGB画像) |
仕組み | RGBの値でどの方向に光が当たってるかを直接定義する |
出力 | ノーマル情報(Normalソケットに繋げる) |
よく使う時 | ゲーム用のノーマルマップや、Substance系ソフトで作ったノーマルを使う時 |
こっちは「すでに方向を持ったカラー画像(ノーマルマップ)を使って凹凸を出すノード」
見た目の違い
- Bumpは計算で擬似的にデコボコを出してるだけなので、精度はそこそこ。でも軽い!
- Normal Mapは専用画像を使う分、よりリアルな細かい凹凸が表現できる!
違いまとめ
Bumpノード
グレースケール画像(白黒の「高さマップ」)を入力してノーマル情報を出力
Normal Mapノード
ノーマルマップ(RGB画像)を入力してノーマル情報を出力
というわけで、入力する情報が、白黒の値のマップなのか、紫色のRGBマップなのか、で見分ければOKです。
白黒の値マップ → Bumpノード
紫のRGB画像マップ → Normal Mapノード
具体的な使い分け方
ノーマルマップがないとき
例えば、マテリアルで、Voronoi Textureなどを使い、ノーマル用に凹凸の値を作ったとします。

ここではBumpノードをHeightにつなげています。

なぜなら、Voronoi Textureなどで作った値はColor Rampなどで調整し、白黒のグラデーションの値で出力しているからです。
この白黒の値はノーマルマップではありません。
これはまだノーマルマップがないときに、この白黒の値をHeightの値として凹凸をつけるために使われる値だから、Bumpノードにつないでいます。
ノーマルマップを作る

ノーマルマップがまだないので、Bakeをして、ノーマルマップ形式のマップを作ります。

ベイクしました。左の紫の画像がノーマルマップです。白黒のものとは違い、メインは紫ですが、青とかピンクのような色がついています(黄色くらいまで明るい色が出てきているのはベイクが失敗しています。)
このマップは法線データがつまっているマップで、表面からどのような方向に凹凸があるか表しています。
ノーマルマップのRGBは「ベクトルのXYZ」を表しています。

ノーマルマップがやっと手に入ったので、Normal Mapをつなぐことができます。
ノーマルマップは色として扱ってほしくないのでImage Texture のColor SpaceにはNon-Colorを設定します。
下で比較していますが、色情報として読み取ると、値が補正され、鈍くなります。法線データの値がきちんと読み取れなくなるなるのでNon-Colorの設定を忘れないようにつけましょう。
また、Bumpのときは凹凸の情報が全て出力されているのではっきりしていますが、ノーマル情報としてベイクすると、ノーマルマップの解像度やUVなどによって、荒くなったりします。ノーマルマップをつないだときの凹凸の改善は工夫が必要になります。(が、ここでは触れません)
うまくノーマルマップの情報を読み取れてないとき

左の図が、ノーマルマップをイメージテクスチャで読み取ったときに色として読み込んだものです。
ノーマルマップを色情報として読み取ると、Blenderが内部で勝手に色の値として補正してしまうので、全体の値の範囲がせばまり、凹凸がぼやぼやし、弱い感じになってしまいます。
まとめ:なぜこの違いが大事?
どのようなときにBumpノードで、Normal Mapノードを使えばいいのかなんとなくわかっていただけたと思うのですが、これは他のソフトにデータをもっていきたいときにも重要になってきます。
そもそもBumpノードで処理してる白黒値は他のソフトではノーマルマップとして扱ってくれないし、テクスチャにもなってないですからね。
きちんとノーマルマップを作って他のソフトでも同じ見た目のオブジェクトを作りたいです。Blenderで作業していると「凹凸できてる!」と思って満足しがちですが、きちんとしたマテリアルを作るには、ノーマルマップを作り、Normal Mapにつないできちんと表示しておくことが必要です。
方法 | 処理 | リアルタイム向き? | 他ツール互換 |
---|---|---|---|
Bumpノード | 計算で凹凸を擬似的に再現 | △(重くなる場合も) | ×(画像データじゃない) |
Normal Mapノード | 実画像の方向データを使う | ◎(軽くて高速) | ◎(Unity/UE等も使える) |