今回の記事では、Blenderでプロシージャルテクスチャをベイクして画像ファイルとして書き出す(保存する)方法を紹介します。また、ベイクできない場合の原因や対処法もあわせて紹介します。
1. Blenderでプロシージャルテクスチャのベイクが必要な理由とは?
Blenderのシェーダーエディター(Shader Editor)で、ノイズテクスチャ(Noise Texture)やボロノイテクスチャ(Voronoi Texture)などのノードをつなぎ合わせて作成したプロシージャルテクスチャは、UnityやVRChatなど他のソフトでそのまま再現できません。
そのため、プロシージャルテクスチャを画像ファイルとして書き出せるように、「ベイク(焼き付け)」という作業が必要になります。
複雑なプロシージャルテクスチャは計算負荷が高くなることがあるため、Blender内でしか使わない場合でも、ビューポート表示の軽量化やレンダリング時間の短縮のために、ベイクして画像ファイルとして書き出すケースもあります。
2. Blenderでテクスチャをベイクする基本手順
初めにベイクの基本手順として、初期配置の立方体にチェッカーテクスチャ(Checker Texture)ノードで作成したプロシージャルテクスチャを、ベースカラーマップとして割り当て(画像1参照)、

画像2のようにベイクして画像ファイルとして書き出すまでの手順を紹介します。

手順1: プロシージャルテクスチャの作成
立方体を選択し、シェーダーエディターを表示します。
ヘッダー(Header)にある追加(Add)> テクスチャ(Texture)からチェッカーテクスチャ(Checker Texture)ノードを追加して、画像3のようにつなげます。画像3の矢印がチェッカーテクスチャノードです。

簡単ですが、プロシージャルテクスチャはこれで完成とします。
3Dビューポート(3D Viewport)のヘッダーの右端にあるビューポートシェーディング(Viewport Shading)をマテリアルプレビュー(Material Preview)に切り替えると(画像4参照)、

立方体に画像5のようにテクスチャが表示されているか確認します。

手順2: 「放射」ノードの追加
立方体を選択し、シェーダーエディターのヘッダーにある追加 > シェーダー(Shader)から放射(Emission)ノードを追加して、画像6のようにチェッカーテクスチャノードとマテリアル出力(Material Output)ノードにつなぎます。画像6の矢印が放射ノードです。

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

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

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

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

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

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

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

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

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

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

3Dビューポートで画像17のように、チェッカーテクスチャノードをつないでいた場合と、書き出した画像ファイルを割り当てた画像テクスチャノードをつないだ場合との結果が、同じになっていることを確認します。

これで、プロシージャルテクスチャをベイクして、画像ファイルとして書き出す手順は完了です。
3. Blenderのプロシージャルテクスチャで作成したラフネス・ノーマルなどのマップのベイク手順
ここまではベースカラーマップのベイク手順を紹介しましたが、これ以外のマップも同様の手順でベイクできます。
ただし、以下の点に注意してください。
3.1 ラフネス・メタリック・バンプなどのマップのベイク
プロシージャルテクスチャで作成した、ラフネス・メタリック・アルファマスク・バンプなどグレースケールのマップのベイクも、ベースカラーマップと同様の手順で放射ノードを使ってベイクできます。
ただし、ベイク先の画像テクスチャノードのカラースペースは、非カラー(Non-Color)に設定してください(画像18参照)。sRGBのままだと、正しくベイクされません。

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

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

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

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

5. Blenderのベイクで作成した画像ファイルのアンチエイリアス(ジャギー)対策
Blenderのベイクにはアンチエイリアスの設定項目がないため、ベイクで作成した画像ファイルの斜めの線が階段のようにギザギザ(ジャギー)になることがあります。その場合、以下の手順で対策します。
- 手順3で設定した新規画像を作成のメニューで、目的のサイズよりも解像度を大きく設定します。例えば、1024×1024の画像ファイルを作りたい場合に、2048×2048に設定してベイクします。
- ベイク結果を画像ファイルとして書き出した後、Photoshopなどの画像編集ソフトで開きます。
- 画像ファイルのサイズを目的の1024×1024に縮小して、書き出します。
6. Blenderで新規のUVマップにベイクしたい場合
既存のテクスチャを無駄にせず新しいUVマップにベイクしたい場合は、オブジェクトに新規のUVマップを追加して、そのUVマップを選択した状態でベイクしてください。
UVマップは、プロパティ > データ(Data)> UVマップ(UV Maps)で追加できます。
詳しくは下記の記事で紹介しています。

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

8.4 「ベイク」のボタンがない
プロパティ > レンダーにベイクのメニューがない場合は、レンダーエンジンがCyclesになっているか確認してください。
以上、Blenderの「プロシージャルテクスチャをベイクして画像保存する方法」でした。

コメント
コメント一覧 (1件)
名前を付けて保存(Save As)のように日本語と英語で選択項目を書いていてわかりやすいです。
ありがとう。