今回の記事では、Blenderで完成済みの画像テクスチャを新しいUVマップにベイクする方法を紹介します。
また、ベイクできない場合の原因や対処法もあわせて紹介します。
1. Blenderで新しいUVマップにベイクが必要な理由とは?
3Dモデリングをしていると、テクスチャをすべて描き終えた後でUVマップだけやり直したい場合や、ダウンロードしたテクスチャ付きの3DモデルのUVマップだけを修正したい場合があります。
このような場合にベイクを使用すると、元のテクスチャのデータは無駄にせず、新しいUVマップへそのまま「焼き直す」ことができます。
2. Blenderで新しいUVマップにテクスチャをベイクする基本手順
本記事では初期配置の立方体に、画像1のような完成済みのベースカラーマップを割り当てている場合を例に使用します。

このベースカラーマップをUVエディター(UV Editor)で確認すると、画像2のようになっていますが、

追加したUVマップにベイクして、画像3のようなベースカラーマップにするまでの手順を紹介します。

手順1: 現在のマテリアルの確認
初めにシェーダーエディター(Shader Editor)で、立方体に割り当てている現在のマテリアルのノードを確認します。
立方体を選択して、シェーダーエディターを表示します。
画像4の矢印で表示しているノードがベースカラーマップを設定している画像テクスチャ(Image Texture)ノードです。

手順2: 現在のUVマップの確認
立方体の現在のUVマップの名前と形状も確認します。
立方体を選択している状態でプロパティ(Properties)> データ(Data)のUVマップ(UV Maps)で、UVマップの名前(今回の場合は「UVMap」)が確認できます(画像5参照)。

画像5の「UVMap」は青色の帯(バージョンによってはグレーの帯)で表示されていますが、これは現在このUVマップを選択中ということを意味していて、UVエディターで編集する対象になります。
UVマップの名前の右側にカメラのアイコンがありますが、これは3Dビューポート(3D Viewport)での表示やレンダリングの際に使われるUVマップを意味しています。
3Dビューポートで立方体を選択して、編集モード(Edit Mode)に切り替えたら、Aキーですべての頂点を選択します。
この状態でUVエディターを表示すると、画像6のように立方体のUVの形状が確認できます。

UVエディターのヘッダー(Header)の右端の方に「UVMap」と表示がありますが(画像7参照)、名前はここでも確認できます。

手順3: 新規UVマップの追加
立方体に新しいUVマップを追加します。
立方体を選択している状態で、先ほど確認したプロパティ > データのUVマップにあるプラスのアイコンをクリックすると、「UVMap.001」という新規のUVマップを追加できます(画像8参照)。
このUVマップは、選択中の既存のUVマップを複製するかたちで追加されます。

「UVMap.001」を選択した状態でUVエディターを確認すると、画像9のようにヘッダーの右端の表示も「UVMap.001」になっています。

選択中のオブジェクトが複数のUVマップを持っている場合、プロパティ > データのUVマップから、またはUVエディターのヘッダーからUVマップの切り替えが可能です。
この後の手順は、画像10のようにカメラのアイコンは元のUVマップ(「UVMap」)に設定、選択は新規追加したUVマップ(「UVMap.001」)に設定して進めてください。この設定を間違えると、ベイクが失敗する原因になります。

手順4: 追加したUVマップの再展開
追加したUVマップを再展開して、UVを作り直します。
このとき、元のUVマップを再展開しないように注意してください。もし、元のUVマップを再展開してしまった場合は、Ctrlキー+Zキーで元に戻してください。
3Dビューポートで、立方体を選択して編集モードになっていることを確認したら、Aキーですべての頂点を選択します。
その後、Uキーを押してスマートUV投影(Smart UV Project)を選択したら(画像11参照)、

アイランドの余白(Island Margin)を0.05に設定して、展開(Unwrap)をクリックします(画像12参照)。

UVエディターで確認すると、「UVMap.001」を画像13のように再展開できました。

手順5: 「放射」ノードの追加
UVマップの追加と再展開ができたので、ここからベイクを行う準備をしていきます。
立方体を選択して、シェーダーエディターのヘッダーにある追加 > シェーダー(Shader)から放射(Emission)ノードを追加して、画像14のようにつなぎます。画像14の矢印が放射ノードです。

プリンシプルBSDF(Principled BSDF)ノードを使わずに放射ノードを使用するのは、ライティングや影の影響を受けずにベイクできるからです。
手順6: 「画像テクスチャ」ノードの追加
シェーダーエディターのヘッダーにある追加 > テクスチャから画像テクスチャ(Image Texture)ノードを追加します。
この画像テクスチャノードはベイク先として使用するため、他のノードにはつなげない状態にしておきます(画像15参照)。配置場所はどこでも問題ありません。画像15の矢印がベイク先の画像テクスチャノードです。

ベイク先の画像テクスチャノード内にある新規(New)をクリックすると、新規画像を作成(Create New Image)のメニューが表示されるので(画像16参照)、名前と解像度を好みの値に設定して、新規画像(New Image)をクリックします。

ここでは名前は「無題(Untitled)」、解像度は1024×1024のままにしています。
透過情報が不要の場合は、アルファ(Alpha)のチェックは外してください。
ベイク先の画像テクスチャノードに上で作成した「無題(Untitled)」という名前が表示されていること、カラースペース(Color Space)がsRGBになっていることを確認します(画像17参照)。

この後の操作は、ベイク先の画像テクスチャノードを選択したまま行ってください。
選択中のノードは、画像17の画像テクスチャノードのように外枠が白くなります。
手順7: レンダーエンジンを「Cycles」に変更
プロパティ > レンダープロパティ(Render Properties)でレンダーエンジン(Render Engine)をCyclesに切り替えます(画像18参照)。

Eeveeでレンダリングする場合は、ベイクが終わった後で切り替えてください。
手順8: ベイクの設定と実行
プロパティ > レンダー(Render)> ベイク(Bake)でベイクタイプ(Bake Type)を放射(Emit / Emission)に設定します(画像19参照)。
立方体を選択していること、シェーダーエディターでベイク先の画像テクスチャノードを選択していることを確認後、ベイク(Bake)のボタンをクリックします。これで、ベイクが開始されます。

※ ベイクを実行すると、シェーダーエディターで選択中の画像テクスチャノードにあるカラースペースがグレーアウトしますが、画像ファイルとして保存すると元の表示に戻ります。
画像エディター(Image Editor)またはUVエディター(UV Editor)を表示すると、画像20のようにベイク結果が確認できます。

ベイク結果が表示されない場合は、ヘッダーの画像21の部分で「無題(Untitled)」を選択してください。

手順9: ベイク結果を画像ファイルとして書き出し(保存)
ベイク結果は画像ファイルとして自動保存されないので、以下のようにして保存してください。
画像エディターまたはUVエディターのヘッダーにある画像(Image)> 名前を付けて保存(Save As)をクリックすると(画像22参照)、Blenderファイルビュー(Blender File View)が表示されます。

ここで保存場所と画像の形式などを設定して、右下にある画像を名前を付けて保存(Save As)をクリックして保存します。
各設定は、Blenderファイルビューの右側の部分で行えます(画像23参照)。
通常はそのままで問題ありませんが、透過情報がある場合はRGBAを選択してください。

Blenderには3Dデータを書き出すためのエクスポート(Export)という機能がありますが、画像専用のエクスポートという名称の機能はないので、名前を付けて保存を使って、画像ファイルとして書き出します。
「1個の変更済み画像を保存しました」について
画像を保存しないままBlenderを終了させようとすると、終了確認のダイアログに「1個の変更済み画像を保存しました(Save 1 modified image(s))」と表示されますが、チェックのオン/オフの挙動は以下のようになります。
チェックを入れてBlenderを終了した場合
- すでに保存済みの画像の場合は、自動で上書き保存されます。
- 未保存の新規画像の場合は、「.blend」ファイル内に保存されます(画像ファイルとしては保存されません)。
チェックを入れないでBlenderを終了した場合
- すでに保存済みの画像の場合は、上書き保存されません(変更内容は破棄されます)。
- 未保存の新規画像の場合は、完全に破棄されます。
手順10: 完成した画像ファイルの確認
シェーダーエディターで画像24のようにノードをつなぎ、書き出した画像ファイルを確認します。

このときプロパティ > データ> UVマップでカメラのアイコンを「UVMap.001」に設定してください(画像25参照)。

画像26のように3Dビューポートで元のベースカラーマップをつないでいた場合と、追加したUVマップにベイクしたベースカラーマップをつないだ場合との結果が、同じになっていることを確認します。

これで、Blenderで完成済みのベースカラーマップを無駄にせずに、新しいUVマップにベイクする手順は完了です。
3. Blenderでラフネス・メタリック・ノーマルなどのマップを追加したUVマップにベイクする手順
ここまではベースカラーマップのベイクだけを扱いましたが、これ以外のマップも同様の手順で新しいUVマップにベイクできます。ただし、以下の点に注意してください。
3.1 ラフネス・メタリック・バンプなどのマップのベイク
ラフネス・メタリック・アルファマスクなどグレースケールのマップのベイクも、ベースカラーマップと同様の手順で放射ノードを使ってベイクできます。
ただし、グレースケールのマップを設定している画像テクスチャノードと、ベイク先の画像テクスチャノードのカラースペースは、両方とも非カラー(Non-Color)に設定してください(画像27参照)。sRGBのままだと、正しくベイクされません。

バンプマップとして使用しているグレースケールテクスチャをベイクする場合、放射ノードに直接つないでベイクしてください。バンプ(Bump)ノードを挟む必要はありません。
3.2 ノーマルマップのベイク
バンプマップとして使用しているグレースケールテクスチャを、追加したUVマップにノーマルマップとしてベイクする場合も、ノーマルマップを追加したUVマップにベイクする場合も、ベースカラーマップと同様の手順でベイクできます。
ただし以下の点は異なります。
放射ノードは使わず、プリンシプルBSDFノードをそのまま使用します。
このとき、バンプノードまたはノーマルマップ(Normal Map)ノードもつないだままにします。
ベイク先の画像テクスチャノードのカラースペースは、非カラーに設定します(画像28参照)。
ノーマルマップを設定している画像テクスチャノードのカラースペースも、非カラーに設定します。

プロパティ > レンダー > ベイクでベイクタイプをノーマル(Normal)に設定して、ベイクしてください(画像29参照)。

4. Blenderでベイク時の「余白」の適切な設定
プロパティ > レンダー > ベイクで設定できる余白(Margin)は、デフォルトではサイズ(Size)が16pxですが、ベイク時に他のアイランド(Island)と重なってしまうような場合には値を小さくしてください。
アイランドとは、UVマップの中の構造的につながっているひとかたまりのことです。
例えば、モンキー(Suzanne)のUVマップをUVエディターで確認すると、頭・右目・左目の3つのアイランドから構成されていることが分かります。
余白の値は小さくしすぎると、背景色が黒いラインとして出てしまう原因にもなるので、注意が必要です。
余白のサイズの違いをベイクした結果で見てみると、以下のようになります。
画像30は余白のサイズを16pxにしてベイクしたものです。

画像31は余白のサイズを3pxにしてベイクしたものです。

5. Blenderのベイクで作成した画像ファイルのアンチエイリアス(ジャギー)対策
Blenderのベイクにはアンチエイリアスの設定項目がないため、ベイクで作成した画像ファイルの斜めの線が階段のようにギザギザ(ジャギー)になることがあります。この対策として、以下の手順を行います。
- 手順3で設定した新規画像を作成のメニューで、目的のサイズよりも解像度を大きく設定します。例えば、1024×1024の画像ファイルを作りたい場合に、2048×2048に設定してベイクします。
- ベイク結果を画像ファイルとして書き出した後、Photoshopなどの画像編集ソフトで開きます。
- 画像ファイルのサイズを目的の1024×1024に縮小して、書き出します。
6. Blenderでプロシージャルテクスチャをベイクしたい場合
Blenderで作成したプロシージャルテクスチャは、ベイクして画像テクスチャとして書き出せば、UnityやVRChatなど他のソフトでも再現できます。
プロシージャルテクスチャをベイクして画像として書き出す方法は、下記の記事で詳しく紹介しています。

7. Blenderで複数の画像ファイルを再配置して1つにまとめたい場合
1つのオブジェクトに2つ以上のマテリアルを追加している場合、ベイクによって画像ファイルを1つにまとめられます。これにより、マテリアルも1つにできます。
新規のUVマップに2つのUVマップをまとめて、すべてのマテリアルで手順3の作業を行った状態でベイクします。
8. Blenderのベイクでよくあるエラーとつまずきポイント解決(Q&A)
8.1 UVマップとマテリアルの設定
ベイクに使用するオブジェクトのUV展開が済んでいること、マテリアルが最低でも1つは割り当てられていることを確認してください。
8.2 「ベイク」のボタンがない
プロパティ > レンダーにベイクのメニューがない場合は、レンダーエンジンがCyclesになっているか確認してください。
8.3 「No active and selected image texture node found…」というエラーが出る
ベイク先の画像テクスチャノードが選択されていないことが原因です。
手順3で説明したように、シェーダーエディターでベイク先の画像テクスチャノードを選択してから、再度ベイクを実行してください。
8.4 「No valid selected objects」というエラーが出る
ベイク対象のオブジェクトが選択されていないことが原因です。
ベイクを実行する前に、オブジェクトの選択を確認します。
8.5 「Object is not enabled for rendering」というエラーが出る
オブジェクトのレンダリング設定がオフになっていることが原因です。
アウトライナー(Outliner)で、選択中のオブジェクトのカメラのアイコンがオンになっていることを確認します。
画像32のようにカメラのアイコンが×になっている場合は、レンダリングの設定がオフの状態です。

以上、Blenderの「既存のテクスチャを無駄にせず新しいUVマップにベイクする方法」でした。

コメント