Blenderでひとつのオブジェクトに複数のマテリアルを割り当てることは珍しくない。作ったオブジェクトをUnityに持って行ってもそのまま問題なく表示されることもあるが、やはりパフォーマンスを考えるとマテリアルの数は少ないに越したことはない。なのでこれをひとつの画像にベイクするという記事。
下の刀には五つのマテリアルを割り当てている。これをひとつの画像テクスチャにまとめる。
1 UV展開をする
画面分割をして UV Editor を開く(こちらの画面を画面Bとする。メイン画面は画面A)
UV Editor内で新規に画像を作成する(今回はデフォルトのままで作成したが、必要に応じてサイズを変更する)。
そして作成した画像に名前を付けておく。
画面AでUV展開したいオブジェクトを選択した状態でTabキーを押し、Edit Modeに入る。
UV展開の方法は下記画像のように色々ある。全選択した状態でまとめて展開もシンプルなオブジェクトならできるだろうが、今回はマテリアルごとに展開していく。
右サイドからマテリアルのプロパティを開き、特定のマテリアル選択、さらにその状態で下の Selectボタンを押すと、当該マテリアルが割り当てらている箇所が選択される(この画像の場合 mineマテリアルが割り当てられている部分)
この状態で画面Aツールバーの UV → Smart UV Project を実行すると、画面BのUV Editor内に当該箇所のUVが展開された状態で表示される(画像のオレンジ部分。ただし画像では他のUVをすでに展開済みなので色々ある)。
こいつを移動させたりサイズを変えたりしながら、作成した画像テクスチャの適当な場所に配置する。
これを繰り返してUVを全部展開していく。
2 Shader Editorでの準備
画面Bか新しく画面Cを呼び出し、そこで Shader Editorを開く。
そしてベイクしたいマテリアルを選択した状態で、このShaderEditorの Add → Texture → Image Texture と進んでいく。
そうするとオレンジのノードが生成されるので、ここに①で作成した画像を配置する。そしてこのノードが選択された状態にしておくこと!!!(白枠がついているか確認! ノードを接続する必要はない)
以上ノード追加の作業をベイクしたいマテリアルの分だけやっていく。例えば下のように6つのマテリアルをベイクしたいなら、それぞれにkatanatextureノードを配置していく(ノードはコピペできるので簡単)
3 ベイク
画面Aでベイク対象のオブジェクトを選択しておく。
右下で RenderPropertyを開き、 Render EngineをCyclesに設定する。
さらにその下にBakeという項目があるのでそこに移動する。そしてBakeTypeを Diffuseに ,またContributionsは Colorだけを選択した状態にしておく。
これで準備は終わったのでBake項目の最上部にあるBakeボタンを押してベイクを実行する。
ベイクを実行すると、画面B、UVEditorの背景画像が変化する。うまくできていたら Image項目を選択して画像を保存する。ちゃんと保存しないと消えるので注意
うまくベイクできない場合とかベイク結果の確認とか
マテリアルのメタリック設定が0でない場合
例で用いた刀モデルは刃の部分がベイクされておらず真っ黒になってしまっている。
マテリアルのMetalic項目が効いている場合、ベイクの Diffuseだとうまくベイクされない。
ちゃんと色を出す方法としては、マテリアルのMetalicを0にしてベイクし直す というのが一番簡単。
ただ金属の質感が消えてしまうのでそれを出したい場合は、ライトを設定し、さらにベイクの設定を Combinedにし、ライティングを反映させてベイクするとうまくいく。
ベイク結果を確認する
画像のベイクはできたとして実際に割り当てるとどうなるかを確認するには、とりあえずオブジェクトを複製して、複製したオブジェクトBに新規にマテリアルを作成。そのマテリアルのイメージテクスチャに作った画像を割り当てる、これで確認可能。
コメント