【Blender】ベイクする

ベースカラーのノードがやたら多くなったので一枚のテクスチャにベイクしたい。

ベースカラーをベイクする場合

一つのオブジェクトに一つのマテリアルというシンプルな事例。

UV展開する

UVEditorを開き、UV展開をする。

そして左画面のImageの箇所からNewでベイク先となる画像を新規に作成する。

作った画像はSaveAsから名前を付けて保存しておこう。

ShadeEditorでの準備

ShaderEditorを開く。そこに新しくShift + A – Texture – ImageTexture ノードを出す。

出したノードに上で作ったテクスチャ画像を割り当てる。そしてそのノードが選択されている状態にしておく(白枠が表示されている状態)

レンダリングの設定とBakeの実行

レンダーエンジンをCyclesに変更する。

さらにその下の方にあるBakeという項目に移動する。

今回は色のベイクなので、BakeTypeをDiffuseにする。

そしてInfluenceの部分はColorだけアクティブにして他はチェックを外しておく。

そしてBakeボタンを押して実行する。

終わったら確認

終わったらImageTextureノードをベースカラーにつないでちゃんとベイクされているか確認しよう。

ベイクに時間がかかる

ベイクに時間がかかる場合、Deviceの部分をGPUに変更する。

またSamplingの箇所でサンプル数を減らすことで速くはなる。がクオリティーが下がる可能性はあるのでうまく使い分けよう。

白くなる  Baking return white texture

Diffuseでベイクしているのにこんな感じになることがあった。

これはSubSurfaceの値をゼロにすることで解消できる。

参照
https://blenderartists.org/t/cycles-baking-returns-white-image/1369028

ノーマルマップをテクスチャにベイクする

ハイポリからローポリへ転写という奴でなく、単純にあるオブジェクトのノーマルマップをテクスチャとしてベイクする手順。手順は上で記したのと似ているので相当省略している。

参考動画

準備

UV展開をして、ベイク先の画像を新規に生成しておく。

そして作った画像をシェーダーエディターのImageTextureノードに設置、選択状態にしておく

ひとつ違うのは、ColorSpaceの部分をNonColorに変更しておくこと

ベイクを実行

あとはレンダリング設定をCyclesにして、Bakeの箇所に移動。

BakeTypeをNormalにしてベイクを実行する。

今回はハイポリの凹凸をローポリに写し取るというやつではないのでSelectedToActiveはチェックを入れなくてよい。

青紫っぽいテクスチャが生成されればOK。

確認

できたらテクスチャを保存し、シェーダーエディターに移動。

ImageTextureノードにはベイクしたノーマルマップテクスチャを。

さらにVector – NormalMapノードを出し、それを間に挿入してPrincipledBSDFのNormalにつなぐ。

これでうまく表示されればOK。

複数のマテリアルを一枚のテクスチャにベイクする

複数のマテリアルが割り当てられているオブジェクトAがあるとする。それらのマテリアルを一枚のテクスチャにベイクしていく方法。

マテリアルごとにオブジェクトを分離する

オブジェクトAを選択して編集モードに移動。頂点を全選択した状態で、Mesh – Separate – ByMaterialを実行する。例えばマテリアルが二つならオブジェクトはオブジェクトAとBに分解される。

アウトライナーを見ると二つのオブジェクトになっている・

ベイク用のUVマップを作成

分離されたオブジェクトAを選択し右サイドのObjectDataProperty – UVMapsを開く。そしてプラスアイコンから新しくベイク用のUVマップを作成し、そちらを選択状態にする(選択すると背景が薄くなってい /カメラアイコンはいじらない!)。

これを分離されたオブジェクトすべてでやっていくこと。

そして両方のオブジェクトを選択した状態でUVEditorを開き、UnwrapなりSmartUV展開なりを実行してUV展開を済ませる。

そして左画面上部のImage – Newから、新しくベイク先となるテクスチャを生成し、SaveAsで保存しておく。

シェーダーエディターの設定

シェーダーエディターに移り、ImageTextureノードを出す(ノードを繋げる必要はない!)。そして上で作ったテクスチャを割り当て、選択状態にしておく(白枠で囲われている状態ならOK)

この作業も分離されたオブジェクト全部で(AとBで)それぞれ行う。(ただしImageTextureノードのコピーペーストで簡単にできる!)

ベイクを実行

準備ができたらオブジェクトABを選択する。

あとはレンダープロパティのレンダリングエンジンをCyclesに変更する。

ついでにサンプル数はいじらなくてもよいが重い遅いと感じる場合は下げる。

そして今回はベースカラーをベイクしたいのでBakeTypeをDuffuseにし、ContributionをColorだけにしてベイクを実行する。

確認

確認のためにベイクされたテクスチャを繋ぐ。

それからUVMapのカメラアイコンをアクティブに切り替える(新しい方をアクティブにする)

それで正しく表示されればベイクは完成。

ついでに必要があれば、分離していたオブジェクトを結合しておこう。

コメント

タイトルとURLをコピーしました