Blenderでテクスチャのベイクをする方法を紹介します。
1 テクスチャをベイクする手順
ここでは例として初めからある立方体を使用してテクスチャのベイクをする方法を紹介します。
それ以外のメッシュを使用する場合は、UV展開が済んでいることとマテリアルが追加されていることを確認してください。
また、この記事ではベイクするテクスチャについてはディフューズ(Diffuse)のみ取り上げます。
手順1
ベイクはCyclesを使用時のみ可能なので、プロパティ(Properties)>レンダ―プロパティ(Render Properties)でレンダ―エンジン(Render Engine)をCyclesに切り替えます(画像1参照)。
手順2
3Dビューポート(3D Viewport)で立方体を選択したらシェーダーエディター(Shader Editor)で画像2のようにノードをつなぎます。
左のチェッカーテクスチャ(Checker Texture)ノードは追加(Add)>テクスチャ(Texture)から追加できます。
プリンシプルBSDF(Principled BSDF)ノードとマテリアル出力(Material Output)ノードは初めからあったものです。
ノードをつないだら3Dビューポート(3D Viewport)の3Dビューのシェーディング(Viewport Shading)をレンダ―(Render)にすると(画像3参照)、
立方体は画像4のようになっています。
立方体はこの後の手順でも選択したままにしておきます。
手順3
シェーダーエディター(Shader Editor)で追加(Add)>テクスチャ(Texture)から画像テクスチャ(Image Texture)ノードを追加します(画像5参照)。
画像テクスチャ(Image Texture)ノードの配置場所はどこでも構いませんが、どのノードともつなげないでおきます。
画像テクスチャ(Image Texture)ノード内にある新規(New)をクリックします(画像6参照)。
新規画像(New Image)というメニューが表示されるので、名前と解像度を好みの値に設定して(ここでは名前は「無題(Untitled)」、解像度は1024*1024にしておきます)、OKをクリックします(画像7参照)。
画像テクスチャ(Image Texture)ノードに上で作成した「無題(Untitled)」というテクスチャ名が表示されていることを確認します(画像8参照)。
画像テクスチャ(Image Texture)ノードは選択した状態にしてこの後の作業を行ってください。
手順4
プロパティ(Properties)>レンダ―プロパティ(Render Properties)のベイク(Bake)でベイクタイプ(Bake Type)をディフューズ(Diffuse)に設定して、影響(Influence)の直接照明(Direct)と間接照明(Indirect)のチェックを外します。設定ができたらベイク(Bake)のボタンをクリックします(画像9参照)。
手順5
画像エディター(Image Editor)またはUVエディター(UV Editor)のヘッダーの画像10の部分で「無題(Untitled)」を選択します。
すると画像11のようにベイクされたテクスチャが確認できます。
手順6
画像エディター(Image Editor)またはUVエディター(UV Editor)のヘッダーの画像(Image)>名前を付けて保存(Save As)をクリックします。
Blenderファイルビュー(Blender File View)というウィンドウが表示されたら、保存場所と保存する画像の形式などを設定して、右下にある画像を別名保存(Save As Image)をクリックして画像を保存します。
保存する画像の形式はデフォルトで画像12のようになっていますが、このまま保存するとテクスチャの背景が透過した状態になります。
透過情報が扱えない画像形式で保存するとテクスチャの背景は黒くなります。
手順7
最後に作成したテクスチャをつないで確認してみます。
シェーダーエディター(Shader Editor)で画像13のようにチェッカーテクスチャ(Checker Texture)ノードを外して画像テクスチャ(Image Texture)ノードをつなげます。
3Dビューポート(3D Viewport)では画像14のように、チェッカーテクスチャ(Checker Texture)ノードをつないでいたときと画像テクスチャ(Image Texture)ノードをつないでいたときの結果が同じになっていることが確認できます。
2 補足
2.1 ディフューズBSDF(Diffuse BSDF)
手順2と手順3で紹介したようにノードをつないでベイクする場合、プリンシプルBSDF(Principled BSDF)ノードのベースカラー(Base Color)以外の設定を変更していると、ベイクしたテクスチャにも影響が残る場合もあるようです。確認した限りではサブサーフェス(Subsurface)やメタリック(Metallic)などは影響が残ります。
影響を残さないようにするにはプリンシプルBSDF(Principled BSDF)ノードの設定をリセットするか、ベイクするときだけプリンシプルBSDF(Principled BSDF)ノードの代わりにディフューズBSDF(Diffuse BSDF)ノードを使用するのもいいと思います。
2.2 ベイク(Bake)ができない場合に確認すること
2.2.1
「No active image found in material …」というエラーが表示される場合には、手順3のところで画像テクスチャ(Image Texture)ノード(画像5の枠で囲んだノード)が選択されているか確認してください。
2.2.2
「No valid selected objects」というエラーが表示される場合は、手順4でベイク(Bake)のボタンを押す際にオブジェクトが選択されているか確認してください。
2.2.3
「Object is not enabled for rendering」というエラーが表示される場合には、選択中のオブジェクトのレンダリングの設定がオンになっていることを確認してください。レンダリングの設定については下記の記事で紹介をしています。
2.3 画像の追加
手順3では画像テクスチャ(Image Texture)ノードを追加してベイク用の画像を追加という手順にしましたが、画像エディター(Image Editor)またはUVエディター(UV Editor)でベイク用の画像を追加した後で画像テクスチャ(Image Texture)ノードを追加して追加した画像を設定という順番でも同じ結果になります。
2.4 ふたつ以上のマテリアルを設定している場合
ひとつのオブジェクト内でふたつ以上のマテリアルを設定している場合、全てのマテリアルで手順3の作業を行ってからベイクすると、全てのマテリアルがひとつのテクスチャとしてベイクされます。
このとき画像テクスチャ(Image Texture)ノードで設定する画像はすべてのマテリアルで同じ画像にしてください。
2.5 余白(Margin)
プロパティ(Properties)>レンダ―プロパティ(Render Properties)のベイク(Bake)で設定できる余白(Margin)は、デフォルトでは16pxですが、他のUVマップと重なってベイクされてしまうような場合には値を小さくしてください。
画像15は余白(Margin)を16pxにしてベイクしたものです。
画像16は余白(Margin)を3pxにしてベイクしたものです。
余白(Margin)の値をあまりに小さくしすぎるとUVマップの内側にベイクされてしまう場合もあるので、最低でも2か3あたりがいいかもしれません。
2.6 複数のUVマップを使用している場合
ひとつのオブジェクト内で複数のUVマップを使用している場合は、プロパティ(Properties)>オブジェクトデータプロパティ(Object Data Properties)>UVマップ(UV Maps)で選択中のUVマップを使用してベイクします。
2.7 解像度・頂点数・アンチエイリアス
この記事ではテクスチャの解像度を1024*1024に設定しましたが、4096*4096などのように解像度を上げるときれいにベイクできる場合もあります。
AOなどはベイクに使用しているメッシュの頂点数が少ないときれいにベイクできないことが多いです(ハイポリからローポリへのベイクも含む)。
Blenderのデフォルトの機能ではアンチエイリアスが使用できないようなので、アドオンを使用するかxNormalやSubstance 3D Painterなどの別のソフトを使用するのもいいと思います。
以上、Blenderの「テクスチャをベイクする方法」でした。
コメント
コメント一覧 (1件)
名前を付けて保存(Save As)のように日本語と英語で選択項目を書いていてわかりやすいです。
ありがとう。