さくっとそれっぽい見た目にしたい
マテリアル作ってみたけど、立体感がない・・・もっと良くしたいのに!
そんなお悩みの方へ、慣れれば3分でできる
Bumpノードを使用したインスタントテクスチャ表現をご紹介します。
結論
Bumpノードを使ってテクスチャにノーマルマップを持たせると
画像のように凹凸感がリアルに表現できます。
この記事で紹介するメッシュの完成形と、ノードマップのキャプチャです。
目次
環境
OS: Windows10
メモリ: 32GB
Dependents
Blender: v2.92.0
Bumpノードとは
簡単に言うと、テクスチャの凹凸感を表現してくれるノードです。
詳しい説明については、公式のドキュメントに
詳細が書かれていますので参照してみてください!
一応、公式ドキュメントを見てみると・・・
Bump (バンプ)ノードは、バンプマッピングのために、高さテクスチャから摂動した法線を生成します。
つまり、Bumpノードは高さのデータを受け取って
それを元に、メッシュに法線(光の反射方向)を生成してくれるノード、ということですね!
法線というのは、Blenderがシェーディング処理を行う際に
面の明るさの計算に使用するベクトルの事です。
要するにBumpノードは
メッシュの法線を高さに合わせて変更し
疑似的に凹凸感を表現してくれるノード、です。
実際にメッシュに凹凸はできませんが、
シェーディング処理を行う時にそれっぽく見せてくれる、というわけですね。
ノイズ系テクスチャと相性が良いBumpノード
メッシュにテクスチャ画像を使用する際
カラー画像と一緒に、ノーマルマップ画像もセットになっている事が多いです。
そういった場合は
付属のノーマルマップ画像を使用した方が、自然な仕上がりになると思います。
ですが、テクスチャを自作した場合や
ノーマルマップ画像が付属していなかった場合などには
Bumpノードでノーマルマップを表現してあげるのが良いかなと思います!
テクスチャを自作する時に、ノイズテクスチャを使ったりします。
ノイズテクスチャとBumpノードを組み合わせる事で
このような腐食した金属っぽい表現を作る事もできます!
腐食した金属の表現については
この記事の最後に作り方を紹介していますので、そちらも読んでみて下さい。
Bumpノードで木の質感表現
それでは、記事の冒頭で紹介した木のマテリアルを作ってみたいと思います!
完成品はこんな感じになります。
それでは作っていきましょう~!
メッシュの作成
まずは、円柱のメッシュを追加します。
頂点数は今回は24にしましたが、あまり結果に影響はないので
お好みでOKです。
さくさく、マテリアルを設定していきましょう。
画面をShadingに切り替えて
ShaderEditorから、「+New」をクリックしてマテリアルを追加します。
テクスチャの設定
ShaderEditor上でShift+Aを押すと、ノード追加のメニューが開きます。
メニューの一番上のSearchから、追加するノードを検索できるので
ImageTexture を検索して追加します。
(日本語で使用している場合は、画像テクスチャで検索できると思います)
画像テクスチャを追加したら
Openからテクスチャに使用する画像を開きます。
今回は、ambientCGというサイトからテクスチャをお借りしました。
こちらからテクスチャをダウンロードできます。
wood029 | ambientCG
画像を設定したら、画像テクスチャのcolorを
プリンシプルBSDFのcolorに接続します。
ImageTexture: :color -> PrincipledBSDF: :color
このままだと、テクスチャが歪んでいるので整えます。
先ほどと同じ手順で、MappingノードとTextureCoordinateノードを
検索して追加します。
ノードを追加したら
TextureCoordinateのGeneratedを、MappingのVectorに接続します。Mappingの出力のVectorは、画像テクスチャのVectorに接続します。
接続すると、こんな感じになると思います。
TextureCoordinate: :Generated -> Mapping: :Vector
Mapping: :Vector -> ImageTexture: :Vector
このままだと、テクスチャの向きが不自然なので
MappingのRotation: X を90°に変更します。
Bumpノードを追加
ただテクスチャを追加しただけだと、まだ表面のつるつる感が目立ちますね。
よりリアルな質感に近づけるために、Bumpノードを追加していきます。
ノード検索で、bumpを検索します。
画像テクスチャと、プリンシプルBSDFの間に追加しましょう!
接続はこんな感じです。
ImageTexture: :color -> Bump: :height
Bump: :normal -> PrincipledBSDF: :normal
Bumpを追加することで、一気に凹凸感が出てきました!
Bump適用前と比較してみるとこんな感じです。
BumpノードのStrengthを調整してあげるだけでも
凹凸感の調整ができますので、試してみて下さい!
ノードはこんな感じになっています。
ColorRampでカスタム
さて、Bumpノードを追加したことで凹凸感が出ましたが
少しデコボコしすぎていますね。
これから、このデコボコを調整していきます!
まずは、ColorRampノードを検索して追加しましょう。
接続はこんな感じです。
ColorRampを画像テクスチャとBumpの間に入れてください。
ImageTexture: :color -> ColorRamp: :fac
ColorRamp: :color -> Bump: :height
ColorRampを追加したら、グラデーションの左端にある、
黒色を左右に動かしてみましょう。
今まで全体的にデコボコしていたのが、凹凸感にばらつきが出てくるのが分かりますね。
Bumpは色の明暗を、高さに変換しているので
黒 = 低い、白 = 高い となって、法線に適用されていきます。
グラデーションの黒を右に動かす事で
Bumpノードに渡される暗い色の範囲が増えて、凹凸感に影響を与えているようです。
それではColorRampのグラデーションを調整して、
凹凸感を調整してみましょう!
今回は、こんな感じになりました!
程よく凹凸がついて、よりリアルになったのではないでしょうか?
一応、ColorRampを追加した後と前で比較してみましょう。
以上が、Bumpノードの基本的な使い方と、
Bumpノードを使った木の質感表現です。
今の作例では、テクスチャ画像と合わせてBumpを使ってみたので
次は、ノイズテクスチャとセットで使ってみましょう。
ノイズテクスチャと一緒に使う
次は、Bumpノードをノイズテクスチャと一緒に使って
冒頭で紹介した金属の腐食表現を行ってみます!
完成品はこんな感じです。
ちょっとホラーゲームとかで出てきそうな
痛々しい見た目ですね・・・苦笑
金属の腐食表現
それではサクサク進めていきましょう!
まずは立方体を追加して、金属のパラメータを設定します。
パラメータはこんな感じです。
Rouchnessの値を調整すると、表面の光沢を調節できるので
お好みで調整してみて下さい。
# 金属表現のパラメータ
Metalic: 1.0,
Specular: 0,
SpecularTint: 0,
Roughness: 0.2,
Sheen: 0,
SheenTint: 0,
ノイズテクスチャ追加
次に、今回のテクスチャの要になる、
ノイズテクスチャを検索して追加します。
ノードの接続とパラメータはこんな感じです。
立方体の表面にモザイクのような模様が出てくると思います。
NoiseTexture: :color -> PrincipledBSDF: :color
# ノイズテクスチャのパラメータ
Scale: 4.0,
Detail: 16.0,
Roughness: 0.5,
Distortion: 0
ではこれを、錆っぽく加工していきましょう!
ColorRampを追加します。
ノード接続はこんな感じで、ノイズテクスチャとプリンシプルBSDFの間に入れてください。
NoiseTexture: :fac -> ColorRamp: :fac
ColorRamp: :color -> PrincipledBSDF: :color
グラデーションの色を、金属の錆っぽく変更します。
今回はこんな感じになりました!
暗めの赤、こげ茶、少し明るめの赤と茶色を
バランスよく混ぜるといい感じになります!
この状態でも割とそれっぽく見えますね!
PS2くらいのホラゲーのグラフィックを思い出しますね。
Bumpノードを追加
ではBumpを追加して凹凸を出していきましょう。
ノードの接続です
NoiseTexture: :fac -> Bump: :height
Bump: :normal -> PrincipledBSDF: :normal
Strengthが1.0だと、かなり凸凹になってしまいます。
Strengthを調整してみましょう。
今回はStrengthを0.3に下げてみました。
大分見た目に金属っぽさも出てきましたね!
この状態でも、金属に見えますが
腐食している部分にだけ、凹凸をつけたいので
ColorRampで調整していきます!
ColorRampでカスタム
ColorRampを追加します。
ノイズテクスチャとBumpの間に追加してあげましょう。
接続はこんな感じです。
NoiseTexture: :fac -> ColorRamp: :fac
ColorRamp: :color -> Bump: :height
グラデーションの白色を動かすことで、
腐食してない部分がつるつるになっていくと思います。
つるつる過ぎるのも不自然だったりするので、
グレーで緩急をつけながら調整してみます。
調整後がこちらです!
腐食した部分にだけ凹凸がつくことで、より雰囲気が出てきたかなと思います。
ちょっと痛々しいですね・・・
Bump後とBump前で比較してみます。
また、現在のノードマップはこんな感じになっています。
最終的にこのノードと同じように設定すれば、上のような見た目にすることができます!
ここからは応用編です。
例えばこんな剣を作っていて、これを腐食させたい時は
先ほどのマテリアルを適用してあげればこんな具合になります。
立方体以外に適用すると、ノイズの位置がずれると思うので
その場合は、MappingとTextureCoordinateを追加してあげて
こんな感じにつなぐと解消されます。
TextureCoordinate: :object -> Mapping: :vector
Mapping: :vector -> NoiseTexture: :vector
まとめ
今回はBumpノードを使った質感表現について
作例を交えつつ紹介してみました。
メッシュを変形して、凹凸をつけていくのはかなり大変ですが
今回のようにBumpノードを使用すれば、簡単にリアルな凹凸をつける事ができます。
ノーマルマップ画像を使わない場合や、
ノイズテクスチャでマテリアルを作る時には、是非使ってみてください!