この記事にはプロモーションが含まれています。

【Blender4.4】ベイク基礎:ノーマルを焼くコツ

blender

以前Blenderで色(Diffuse)を焼く基礎の記事を書きましたが、ノーマルを焼くことも多いだろうと思うので、ノーマルを焼くコツも解説しておこうと思います。

今回は、ローポリ(ローポリゴン:ポリゴン数の少ないオブジェクト)にハイポリ(ハイポリゴン:ポリゴン数の多いオブジェクト)の凹凸を焼いていく方法を書いていきます。

いつもベイクを失敗してしまうという方は、まず比較的難易度の低い、色(Diffuse)を焼くことから始めてみましょう。ここで自分がやりがちなミスを自覚し、基本的なベイクの工程をある程度理解してからノーマルを焼くことをオススメします。↓

では、ノーマルを焼くコツとか、気を付ける点を解説していきますので、失敗せずに最後までノーマルを焼けるように書いていこうと思います。

スポンサーリンク

ノーマルを焼く意味、モチベ

そもそも、なぜノーマルを焼く必要があるのか

左の図を見てほしいんですが、これはソファの一部です。

大雑把に作ると左のオブジェクトで、204ポリゴンです。(ローポリ)

ソファってボコボコしてて、凹んでるところにボタンが埋まってたりしますよね。これを表現しようとして作ると

右のようなモデルになり、12,620ポリゴンにもなります。(ハイポリ)

ちょっとボタンとかつけようと思うと60倍くらいポリゴン数が多くなってしまいます。

ゲームや、VRChatなどにモデルを置きたい場合、ポリゴン数が多いと重くなったりするのでポリゴン数を抑えないといけません。

そこで、ノーマルマップ(Normal Map)という凹凸情報が入ってるマップを使って、ポリゴンが少なくても細かい凹凸を表現するという技術を使うことになります。下の図を見ていただくとわかるように、ポリゴンはおおざっぱにしか割ってないのに(204ポリゴン)、ボタンがついてたり、綿が入ってるような膨らんだ凹凸を表現することに成功しています。

なので、このノーマルマップというものを焼いていく必要があるということです。

スポンサーリンク

ノーマルを焼く工程

ノーマルを焼く段階として

  • オブジェクトを作る
  • UVを作る
  • マテリアル設定をする
  • ベイクの設定をする
  • ベイクする
  • ノーマルを貼り付ける

という工程があります。必要最低限のことしかしませんが、結構ありますね。でも慣れたら簡単にできるようになります。

スポンサーリンク

①オブジェクトを作る

とりあえず作るオブジェクトのローポリとハイポリを作ります。例ではソファの座る部分を作っていきます。

作るコツ

  • まずローポリを作ります
    • 大きい外形部分はノーマルで凹凸をつけてもごまかせないので、おおざっぱな形は作っておいてください。
    • 面がひっくり返ってないことを確認してください。
  • ローポリのオブジェクトを複製してハイポリのオブジェクトを作ります
    • ローポリとハイポリの大きさは一致するようにしてください。
    • ボタンなど、部品をつけたら、ハイポリのオブジェクトとしてハイポリオブジェクトと統合しておいてください
  • ローポリハイポリ、両方のオブジェクトのトランスフォームを適用しておいてください。

わかりやすいようにずらしていますが、同じ大きさでつくってください。

トランスフォームを適用するって何?

画面の右上のところにTransformっていうメニューがあります。オブジェクトモードで回転や移動、スケールをするとここに数値が入ります。(編集モードで作業すると変化しません)

ここをデフォルトの
Location XYZ…0
Rotation XYZ…0
Scale XYZ…1
にするために、Ctrl + Aで適用させます。この中のAll Transformを押せば全部がデフォルトの値に直るので、それを「全トランスフォームする」などと言われてます。

スポンサーリンク

②UVを作る

ノーマルを焼くときに、オブジェクトのどの場所にどの凹凸情報が来るのかを決めるために、UVを作成しておく必要があります。ローポリにノーマルを焼きつけるので、ローポリオブジェクトのUVです。

UVを作るためにUV展開が必要になります。

UV展開についてどのメソッドを選べばいいのかの記事がありますので、わからないという方はどうぞ

ここでは簡単に、ローポリオブジェクトの底の一周にシームを入れて、Angle BasedでUV展開しました。

左図のような感じ。

ノーマルマップで色がはみ出すと形がおかしくなるので、下の方のオプションにMarginのパラメータがありますので、0.027に少し上げてあります。

左側のUVがぎゅうぎゅうにくっつかないように各自調整してください。

スポンサーリンク

③マテリアル設定をする

ノーマルを焼くために、焼き付ける新しい画像を設定していきます。

ローポリのオブジェクトを選択し、マテリアルを新規作成します。

そこにImage Texture ノードを出してNewで新しい画像を作っていきます。

名前をsofa-normalとして、Alphaのチェックを外してください。

New Imageで新規画像を作成します。

(ハイポリのマテリアルは作成する必要ありません。)

できたImage Textureノードはどこにもつながずに放置しておいてください。

スポンサーリンク

④ベイクの設定をする

右のメニューのレンダープロパティでレンダーエンジンをCyclesにしてください。

Cyclesじゃないとベイクできません。

その下のところにBakeという項目があるので、

Bake Type…Normal
Selected to Active…チェックを入れる
(Selected to Activeを開いたら出てくる項目です)Extrusion…適当な数値を入れます(0.05~0.1)

Selected to ActiveのExtrusionとかMax Ray Distanceとは何なのか

図にすると下のようになります。

Extrusionとは、中のローポリオブジェクトを外側にどれだけ押し出すかの数値。(みなさんが作るオブジェクトの大きさによって違うと思いますが、0.05~0.1くらいが普通)押し出した大きいローポリをケージとして、そこからレイ(図中の青線)を内側に飛ばし、凹凸を見ます。(ローポリが実際押し出されるわけではありません、計算するだけです)

Max Ray Distanceは内側へ伸びるレイのMaxの長さです。0に設定していると、制限無しということになるので、ハイポリに当たるまで伸び続けますレイは内側にしか伸びないので、Extrusionを0にしたままレイを伸ばしても、ハイポリに当たらないからベイクできません。)

ノーマルをベイクしたとき、うまく焼けない、色が変なところがある、うまく焼けてない箇所があるときは、このExtrusionの値が適切でなく、ハイポリをうまく囲めていないハイポリとローポリの位置関係を間違えている、などの問題があります。
位置関係を確認し、Extrusionの数値を変えてベイクしなおしてみましょう。

※まだBakeのボタンは押さないでください

スポンサーリンク

⑤ベイクする

Shadingの画面へいき、

  • ローポリオブジェクト
  • ハイポリオブジェクト

の順でShiftCtrlでも可)を押しながら選択していきます。

選択しづらいのでアウトライナーから選択してくださいレイアウトビューポート上で、オブジェクトを選択していくなら、順番は逆になります。アウトライナー上で、ローポリ、ハイポリの順番で選択してください。

さらにローポリオブジェクトにつけた、放置してあるImage Textureノードも選択します。

ローポリオブジェクトオレンジ線
ハイポリオブジェクト…赤線
Image Textureノード…白線

で囲まれていて、ちゃんと選択されていることを確認し、右のメニューにあるBakeボタンを押します。(選択する順番がわからなくなっても、アクティブ要素がオレンジになるということは変わらないので、わからなくなったら色を見てください。とにかくローポリオブジェクトをアクティブ要素(オレンジ線)にしたいだけです)

ベイクが終わったら、Texture Paintの画面に移動。

ここにベイクしたノーマルの画像が表示されているはずです。

左図のように紫、水色、ピンクのような色合いだと成功しています。

黄色など別の色が出ている場合失敗しています。

成功していたらImageタブからSave As…を選択し、この画像を保存するのを忘れないようにしましょう。(保存せずにいると消えてしまいます。)

スポンサーリンク

⑥ノーマルをはりつける

せっかくノーマルマップができたので、マテリアルに設定してみます。ハイポリは非表示にしてしまって大丈夫です。ローポリを選択し、Shadingの画面に移動。

できたノーマルマップをImage Textureにセットし(自動で入ってますが)、これをNormal MapノードのColorにつなぎます。さらにNormal Mapノードからprincipled BSDFノードのNormalにつなぐと、凹凸がちゃんと表現されるようになります。

ここで大切なのは、Image TextureColor Space(色空間)の設定をNon-Colorにすることです。

さっきまで紫色だったノーマルマップがちょっと薄いピンクのようになると思いますが、これが正確なベクトル情報としての色なので、これが正解です。

以下に、Image TextureColor Space(色空間)の設定をsRGBにした画像を載せますが、これだと、ノーマルマップをただの色情報だと読んでしまい、凹凸がぼやけます。見比べると、下の画像の凹凸がぼやぼやして弱くなっていることがわかると思います。

ノーマルに接続するときの話は詳しくは以下の記事にも書いたので、もっと詳しく知りたいかたは参考にどうぞ↓

スポンサーリンク

まとめ

ノーマルを焼くことができましたでしょうか?

工程が多く、〇〇を選択してから〇〇を選択する…みたいな細かい重要な順番があったりするので、一つ一つ正確にやってみてください。

あとノーマルの色がおかしい、きちんと焼けなかった、というときは、Bakeの設定で失敗していたり、そもそもオブジェクトの面の法線の向きがおかしかったりするかもしれませんので、そこもチェックしてみてください。

あとは、ノーマルって実はBakeの設定でスルーしましたけど、Cageを使うともっときれいに焼けてプロ仕様になるみたいなことを小耳にはさんだので、またいつかCageを使ったベイクにも挑戦してみたいなと思いました。