Blenderのベイクを完全に理解する

Blenderの上達には、上手なテクスチャ作りが欠かせません。

どんなにいいメッシュを作っても、テクスチャがイマイチだと、モデルのリアリティは損なわれます。

今回はテクスチャ作りで多用されるベイク機能について解説します。

テクスチャベイクとは

ベイクを簡単に説明すると、テクスチャの焼きこみです。ベイクを使用すると以下のようなことができます。

  • テクスチャAからテクスチャBに色を転写
  • 複数のマテリアルから成るモデルを1枚のテクスチャにまとめる
  • ハイポリとローポリの差分をノーマルマップに保存する

ベイクを使いこなすと、テクスチャ作りは飛躍的に効率的になります。

また、Unityのようなゲームエンジンにモデルを持っていく場合は、テクスチャをできるだけまとめることが必要になります。

しかし、今日のBlender入門サイトを覗いてみると、どうにも説明不足なところが多い印象です。

本記事では、自分が実践しているワークフローを交えながら紹介しようと思います。

レンダリングエンジンはcycles

Blender2.8にバージョンアップしてから、標準のレンダリングエンジンがEeveeとなりました。

初心者の方はあまり気にしたことがないかもしれません。

実はEeveeにまだベイク機能が搭載されておらず、プロパティを探しても項目が見つかりません。

ベイクを使用する際は、Cyclesに戻す必要があります

ベイクの手順まとめ

ベイクの手順は以下のとおりです。

  1. シェーダーエディターにImageTextureノードを追加
  2. 新規画像を作成
  3. 新規画像をソフト外に保存
  4. ベイク先のノードを選択※超重要!!
  5. モードを選択してベイク
  6. 結果に問題なければ保存
  7. 2から5を必要なテクスチャ分繰り返す
  8. 完成

①シェーダーエディターにImage Textureノードを追加

ベイクするには、シェーダーエディターで下準備が必要です。

エディターでは、Shift + Aでノードを追加できます

マテリアルにテクスチャをセットするには、Texture > Image Textureを呼び出します。これをBase colorにつなげます。

ベイクに限っていえば、ノードをつながなくても大丈夫ですが、変化がわかりやすいようにつないでおきます。

ノードは繋げないと反映されません。
テクスチャをセットしたのにモデルの色が変わらない、などといった場合は、
ノードがつながっているかをチェックしましょう。

②ベイク用の新規画像を作成

newを押して 新規に テクスチャを作成します。

テクスチャ設定はこれがベスト(たぶん)

ベイク用にテクスチャを新規作成しますが、ベストな設定は目的によって変わります。

とりあえず、自分がunity用に作っているテクスチャの設定は、

  • ファイル名は、xxx(モデル名)_colorとかxxx_metallicとか
  • alphaはいらない
  • 32bit floatは使ってません
  • サイズは2k(2048 x 2048)

alphaはゲームエンジンで使用することがあまりないので、容量削減のために切っています。

32bit floatを使用すると、使える色域が広くなる(らしい)のですが、正直違いがイマイチわからないので使っていません。

4k? いらないかな。

unityでは手動で4kテクスチャに切り替える必要があり、デフォルトの上限は2kです。
キャラクターモデルや乗り物では4kにまとめることもありますが、小物で4kを使うのは無駄です。

③新規画像はすぐに保存

ベイク先のテクスチャを新規作成したら、すぐに保存します。

保存するには、UVエディターもしくはイメージエディターで作成したテクスチャを開き、Alt + SもしくはImage > Save as…で保存できます。

Blenderはソフト内部にも保存できる機能がありますが、ここではソフト外に保存することが重要です

というのも、ベイクが失敗した場合や調整が必要な場合にテクスチャを復元する必要があるためです。

また、ソフトを閉じたり、UVエディターの画像を切り替えたりといった、ちょっとした操作であってもベイク結果は消去されます。

そのため、ベイク結果はこまめなセーブが必要です

Imageの横にアスタリスクがついていると保存されていない状態です。もう一度いいますが、こまめなセーブが必要です。

④ベイク先のノードを選択する

ベイクするテクスチャを間違えてしまうことはやりがちなミスです。自分もしょっちゅう間違えます。

ベイクでは、選択しているノードがベイク先となります。

この説明が抜け落ちているサイトが多いので気を付けてください。

選択中のノードは細い白線でハイライトがかかります。(これが分かりずらいことがミスの原因)

もし、ベイク先を間違えたら、UVエディターでImage > ReloadもしくはAlt+Rから保存前のテクスチャに戻します。

こまめなセーブが必要なのは、ベイク先を間違えることが多いことも理由の一つです。

また、マテリアルが複数ある場合はすべてにベイク先をセットする必要があります。

複数のマテリアルがある場合のベイクは正直めんどくさいので、
後述する別モデルからのベイクを利用した方が楽です。

⑤モードを選択してベイク

ベイクを実行するボタンはレンダープロパティの下方にあります。

ベイクモードよりベイクする情報を選択できます。よく使うものとその効果をまとめると、

  • Diffuse ・・・色
  • Emit・・・発光
  • Roughness・・・つや感
  • Normal・・・凸凹
  • Ambient Occlusion・・・陰(影ではありません)

モードを選択したら、ベイクしたいオブジェクトを選択し、ベイク先のノードを忘れずに選択して、ベイクボタンを押します。

テクスチャサイズが大きかったり、書き込む範囲が大きいとベイクに時間がかかります。

ベイク中にソフトが落ちることもあるので、ベイク前にプロジェクトをセーブすることをおすすめします。

ベイク周りのtips

ここからはベイクで知っておいたほうがよいテクニックについてまとめました。

別のモデルから転写する

自分はマテリアルを分けた状態のオリジナルモデルを作りこんでから、unity用にマテリアルをまとめたモデルを作ることが多いので、この方法をよく使用しています。

別のモデルからテクスチャをベイクするには、Selected to Activeにチェックを入れます。

次に、3Dビューで「ベイク元になるオブジェクト」から「ベイク先のオブジェクト」の順番で、Shiftを押しながら選択します。 Outlinerのヒエラルキーからctl+左クリックでも同じ操作ができます。

  • オレンジにハイライトがかかるオブジェクトはSelected状態です。
  • 黄色にハイライトがかかるオブジェクトはActive状態です。

このとき、二つのオブジェクトをできるだけ重ねます。オブジェクト同士がずれた位置にあると、その分ずれてテクスチャにベイクされます。

この状態で、ベイク先のノードを選択することを忘れずに、ベイクボタンを押しましょう。

ハイポリからローポリへノーマルマップを転写

これ、すごい重要なテクニックです。

さきほど紹介したモデル間での転写を応用したテクニックです。

ハイポリをSelectedに、ローポリをActiveに選択してノーマルをベイクすると、ハイポリとローポリの差分をノーマルマップとしてベイクできます

ゲーム用にポリゴンを落としたモデルを作ると、ディテールが落ちがちですが、この方法を使えばディテールをある程度残せます。

傷、ネジ、紐といった細かい部品はノーマルマップに焼きこんで、ポリゴンを節約しましょう。

重ね描きするには

重ね描きをするなら、Clear Imageのチェックを外します

自分は一年近くこれを 「より鮮明な画像にする」オプションだと勘違いしてました(笑)

Clear Imageは、ベイク前にテクスチャを真っ黒の初期状態にするかどうかのオプションです、お間違え無く。

テクスチャの一部分だけをベイクしなおしたり、パーツに分けたモデルを段階的にベイクするのに使用します。

ベイク周りのハマりポイント

メタリック値は0に。メタリックマップはEmitで代用

ベイクするときは、マテリアルのメタリック値を0に設定してください。

メタリック値が1の場合、Diffuseでベイクすると色が映りません。ベイク結果が真っ黒になる場合は、マテリアルのメタリック値をチェックしてください。

また、残念なことにメタリック値だけはベイクできません。Glossyでのベイクがそれに近いのですが、思った結果にならないことが多いです。

自分はメタリック値をエミッションに置き換えてベイクしています。幸い、メタリック値が1と0以外になることがほとんどないので代用できます。

メタリックマップがほしい場合は、金属部分のエミッションを最大まで上げて、Emitモードでベイクしましょう。

アンビエントオクルージョンのベイクはコレクション単位で

アンビエントオクルージョンをベイクすると、変な筋が入ったり真っ黒になったりと挙動がおかしくなる場合があります。

それ、ヒエラルキーのhideだけを消していませんか?

ヒエラルキーの目玉ボタンは3Dビューでの表示を切り替えているだけで、シーンには存在しています。

アンビエントオクルージョンは実際にライトを焚いて陰を計算しているので、交差するオブジェクトがあるとその影響を受けます。

これを解決するには、ベイクしたいオブジェクトだけを別コレクションに移動し(Mキーで移動)、関係ないコレクションは非アクティブにします。

まとめ

ベイクだけに特化してまとめまてみました。

基本的にはこの記事で紹介したことを実践すれば、ゲームエンジンで使用できるモデルになるでしょう。

この記事を通して、ベイク機能を理解する助けになれば幸いです。

(、、、「完全に理解する」とか風呂敷広げまくったけど、足りないかもしれない(笑))

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です