こんにちは。しゅみぶろぐです。
今回はblenderでのノーマルマップ手動の作成方法について解説していきたいと思います。
ノーマルマップについてやほかの方法を知りたい方はこちらの記事を参考にしてください。

今回つくるもの

blenderのベイクという機能を使って2D画像のノーマルマップを作成します。
ベイクとは?
3Dモデルの凹凸情報をテクスチャ(2D情報)として保存する処理です。
凹凸の大きいものや複雑すぎるものは再現しきれないため注意してください。
また、ノーマルマップを作るための元画像は事前に用意しておいてください。
それではさっそく始めていきます。
土台作り
blenderを開きます。「General(全般)」で大丈夫です。
初期状態で配置されている立方体は不要なので「選択」>[Delete]で消してください。

[Shift + A] > 「Mesh(メッシュ)」>「Plane(平面)」
から、画像を張り付けるための板(紙?)を追加します。

生成した平面を「選択」しながら[Tab]を押してEdit Mode(編集モード)にします。
次に平面を[右クリック] > 「Subdivide(細分化)」を何度か繰り返します。
細分化を繰り返すほど細かいモデリングが可能ですが、それだけ作業が面倒になります。

細分化が終わったら、[A] > [Shift + D]で平面を複製します。

右上のアウトライナーでそれぞれ名前を付けておくとよいと思います。あとからわかりやすいです。
複製した方はしばらく使わないので「目のマーク」で非表示にしておきましょう。
2D画像をblenderにインポート
「変形用(オリジナル)」に2D画像を適用していきます。

次に画面下部の時計のようなマークをクリックし、「Shader Editor(シェーダーエディター)」を選択します。(エリア上部をドラッグするとエリアの範囲を拡大できます)

平面を選択した状態で、上部の「+ New( + 新規)」を選択します。

[Shift + A]>「Texture(テクスチャ)」>「Image Texture(画像テクスチャ)」
よりノードを生成します。

「Open(選択)」より2D画像を選択し、「Open Image(画像を開く)」でインポートしましょう。
平面に画像を表示させる
さっそく画像を反映させていきます。

「Color(カラー)」から「Base Color(ベースカラー)」へノードをつなげます。
ノードのつなげ方
つなげたい点から点へとマウスポインターをドラッグするとノードをつなげることができます。
透明部分がある方は、「Alpha(アルファ)」同士のノードをつなげると反映されます。
画面右上よりこのアイコンを選択することで実際に画像が平面に表示されたことがわかるはずです。


2D画像を3Dモデリングする
モデリングに入ります。


[Tab]を押すと「Edit mode(編集モード)」になり、頂点ごとに選択が可能になります。
これらを[G + Z]でZ軸方向に動かし、凹凸をつけていきます。(X、Y軸方向には動かさない方がよいです)

一括選択も可能です。[Shift]を押しながらであれば複数選択も。

[O]キーを押し「Proportional Editing(プロポーショナル機能)」にすることで、周りを巻き込んだ頂点の移動が可能です。波線みたいなのをクリックすると上の画像のようなメニューが出てきます。
「Smooth(スムーズ)」やら「Sphere(球状)」やらをいじって自分なりにモデリングをしてみてください。「Proportional Size(プロポーショナルサイズ)」で周囲への影響範囲を設定できます。

モデリングは慣れなので、触れてみるしかないです。
3Dモデルをなめらかにする

ポリゴン状態の質感を維持したい方は読み飛ばしてください。
[Tab]をもう一度押して「Object mode(オブジェクトモード)」にします。
モデルを「選択」した状態で[右クリック] > 「Shade Smooth(スムーズシェード)」を選択するとなめらかになります。
「Shade Flat(フラットシェード)」で元に戻せます。
ベイクの準備
ベイクとは?
3Dモデルの凹凸情報をテクスチャ(2D情報)として保存する処理です。

「Shader Editor(シェーダーエディター)」から、「Image Texture(画像テクスチャ)」を新規作成して、「+ New」を選択します。
特に何もいじらずに、「New Image(新規画像)」を選択しましょう。「Color Space(色空間)」を「Non-Color(非カラー)」にしてください。(ノードはつなげません)

次に、「複製した方」のひらぺったい平面を選択して「Shader Editor(シェーダーエディター)」から「変形用」に作ったのと同じマテリアルを適用させます。
マテリアルが複数ある?どれかわからない?
「変形用」を選択した状態で「Shader Editor(シェーダーエディター)」を開くことで確認できます。
以下画像の枠線内がマテリアルの名前です。「複製した方」でも同じものを選択してください。

ベイクする

[Ctrl]を押しながら①→②の順番に選択します。

「カメラマーク」>「Render Engine(レンダーエンジン)」から、「Cycles」を選択します。

スクロールすると「Bake(ベイク)」の項目があるのでそれぞれ設定を変更します。
・「Bake Type(ベイクタイプ)」を「Normal(ノーマル)」に
・「Selected to Active(選択物→アクティブ」にチェック
・「Cage(ケージ)」にチェック
・「Extrusion(ケージを押し出し)」を「1m」に
ここまで完了したら、「Bake(ベイク)」を選択します。これでノーマルマップの制作は完了です。
お疲れさまでした。
ノーマルマップの確認
では本当にできているのか確認してみましょう。

「Image Editor(画像エディター)」を選択します。

「画像マーク」を選択して、先ほど新規作成した画像テクスチャ(名前を変更していなければUntitledまたは無題)を選択します。

すると上のようにノーマルマップが生成されているはずです。成功!!!!!!!
ノーマルマップを画像と合成する
待ちに待った合成をしてみましょう!
「複製した方(ひらぺったい方)」を選択 >「Shader Editor(シェーダーエディター)」
を開きます。

そして、先ほど作ったノーマルマップ(名前は無題またはuntitledかも)の「Color(カラー)」と「Normal(ノーマル)」ノードをつなげます。

変換ノードを追加します。
[Shift + A] >「Displacement(ディスプレイスメント)」>「Normal Map(ノーマルマップ)」
ノーマルマップノードを生成して、下の画像のようにノードをつなぎます。

カラー → ノーマル への変換は直接はできないため、変換処理してくれるノードを追加しました。
これで反映は完了です!!
完成品確認
本当に凹凸が再現されたのか確認してみましょう。ここが一番楽しいです^^
3D画面のどこかに下の画像のようにライトがあるはずです。

光源の位置を変えて陰影の変化を楽しんでみましょう。
「ライトを選択」>[G + X or Y or Z]でそれぞれx、y、z軸に平行にライトを移動させることができます。

ライトを選択した状態で、画面右側の電球マークを選択すると光源の種類、強さなどの設定を変えることができます。
左が3Dモデルで、右がノーマルマップを利用したものです。
ある程度の凹凸は再現できていますが、完全再現とはいかないようですね( ノД`)

どちらがノーマルマップによるものなのか、並べると一目瞭然
まとめ
工程をまとめると
・2D画像を3Dモデリング
・3Dモデルをベイク
・2D画像とノーマルマップを合成
でした。とにかく結論として、
手動でのノーマルマップ作成は手間がかかる!
でしたね笑。特にモデリングのところは地道な作業でした。
最近は画像だけで3Dモデルを作ってくれるAIサイトもあるようなので活用してみるとよいかもしれません。
それではここまで見ていただきありがとうございました!

コメント