【Blender】複数のマテリアルが当てられているオブジェクトを一枚のテクスチャにベイクする

手順解説 衣服の例

とりあえずそれぞれ色だけ変えた衣服オブジェクトが3つある。それぞれにマテリアルが割り当てられているので、一枚のテクスチャにベイクしてマテリアルを共有したい

①3つそれぞれにUVMapsを新規に追加し、追加した方の背景が青になるようにする(カメラアイコンは変えなくて良い)。

②UVEditorに移動。
右画面でみっつのオブジェクトをまとめて選択し、TabでEditモードに。3つともUV展開する。

そしたら左画面を整理する。今回は色だけ違うだけで他は一緒なので、同じ感じのUVが3つある。

③ShaderEditorに移動する。
とりあえず3つのうちひとつのマテリアルを選択し、
Shift + A -ImageTexture を出して、Newから新規にベイク先となるテクスチャを作成する。
サイズは適宜指定。

そしたらこのノードをコピーして他の2つのマテリアルにペーストする。
3つのマテリアルそれぞれに同じImageTextureNodeがある状態。

注意点として、接続する必要はないが、このノードが選択された状態にしておく(ノードの周囲に白い枠がある状態)

④3つのオブジェクトを選択状態にする。

⑤ベイク結果確認用にImageEditorを表示させておく。
デフォルトのShadingタブだと左下にある領域。

⑥RenderPropertiesを開き、RenderEngineをCyclesにする。

その項目の下にBakeという項目があるので、BaykeTypeをDiffuseい、InfluenceをColorだけにしてBakeを実行する。

⑥ImageEditorに結果が表示される。
問題なければSaveAsで保存しておく。

⑦Shaderを開く。
ベイクされた画像を割り当てる。

何もしないと、旧UVが使われているので、下の画像のように変になる。
ObjectDataPropertiesのUVMapsを新しく作った方のカメラアイコンをアクティブにする。

表示されればOK。
あとは必要に応じて、旧UVや未使用ノードなど、不要な情報を整理する。

手順 目の例

海外の人がTinyEyeというアドオンというかBlenderのファイルを配布してくれている。思い通りに目を作れるとても便利なファイル。

Tiny Eye
What is Tiny Eye?rendered with cycles (having trouble seeing the Iris in your viewport? read the FAQ!)Tiny Eye is a FREE, fully procedural, stylised eye that wo...

これを使って作った眼をゲームエンジンに持っていくためテクスチャにベイクしたかったが、どうやればいいかよくわからなかったので、いろいろ試したときのメモ。

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

デフォルトの状態だと一つの目玉オブジェクトに二つのマテリアルが割り当てられている感じになっている。

まず全選択してEditModeに移り、Mesh – Separate ―ByMaterialを実行する。

アウトライナーで見ると虹彩(目の模様)の部分と網膜(球体)の部分に分離している(オブジェクトAとBとして扱う)。

シェイプキーやモディファイアを実行しておく

オブジェクトモードに戻り、ObjectDataProperty – ShapeKeysを開く。そして下矢印アイコンを開き、その中にある ApplyAllShapeKeysを実行する。

これをオブジェクトAB両方で行う。

同じ要領でModhifierPropertyの箇所を開く。

サブディビジョンサーフェスモディファイアが未適用状態なのでApplyしておく。これもオブジェクトAB両方で(レベルの値は各自調整しよう)

UVMapを作成

オブジェクトを選択し、ObjectDataPropertyのUVMapsの箇所を開く。

プラスアイコンから新しくUVMapを制作し、そちらを選択状態(背景灰色)にしておくカメラアイコンは押さなくてよい!)。これをAB両方で。

UV展開

それがすんだら両方のオブジェクトを選択し、UVEditor画面(左右で画面が分割される。左が展開図、右が立体)に移り、シームを入れたり消したりしながらUnwrapしていく。

角膜の方のオブジェクトの虹彩との境界にある頂点をループ選択し、MarkSeamでシームを入れる。

と同時に不要そうなシームはClearSeamで消しておく(どれが邪魔かは何とも言えないのでUnwrapしながら調整する)

そして左画面にベイク先となるテクスチャを準備する。Image -Newでサイズやら名前を付けていく。

注意点として、色を透明にしておくこと(ColorのAlphaをゼロにする)

最終的な左画面はこんな感じ(一番大きなアイランドが虹彩の色部分。)

ShaderEditorでの準備

オブジェクトモードに戻り、シェーダーエディター画面を出す。

そこにShift +A – Texture – ImageTextureノードを出し、UV展開の時に作成した背景透明画像を割り当てる。(ノードを繋ぐ必要はない)

そしてそのImageTextureノードをアクティブ状態(白枠がついた状態)にしておく。

これを網膜と虹彩両方のオブジェクトで行う。

注意点、網膜オブジェクト(球体の方)のSpecularの値はゼロにしておくこと。でないと角膜の部分が透明にならないので注意。

ベイク

網膜虹彩両方のオブジェクトをまとめて選択する。

RenderPropertyを開き、RenderEngineをCyclesに変更する。

ベイク速度が遅いと感じるときはサンプル数などをいじって調整する。

で下にあるBakeの項目に移動し、BakeTypeを今回はベースの色テクスチャを作りたいのでDiffuseに変更する。

Contributionsの部分もColorだけにしておき、Bakeボタンでベイクを実行。

確認してみる

虹彩オブジェクト

まず虹彩オブジェクトを選択し、シェーダーエディターを開く。

そしてベイクした画像を繋いでみる。

それだけだとこんな感じで表示がおかしくなる。

ObjectDataPropertyのUVMapsの箇所から新しく作ったUVをアクティブにする(カメラアイコンをオンにする

うまく表示されればベイクはOK。

網膜オブジェクトのチェック

網膜オブジェクトの場合はまず、ちゃんと角膜の部分が透明になっているかが重要。

ベイクされた画像を確認し、角膜のアイランドが透明になっているか確認する。

角膜が透明でない

画像のように角膜部分に色がついていた場合はベイクをやり直す必要がある。

網膜オブジェクトのシェーダーエディターにいくと、Specularの部分が1になっているはずなので、これをゼロにしてベイクし直すとうまくいくはず。

角膜が透明になっていればベイクはOKなので、同じ要領でUVMapsの部分に移動し、新しく作った方のカメラマークをオンにする。

シェーダーエディターでベイクしたテクスチャを、PrincipleBSDFノードを介して繋ぐ。

PrincipleBSDFのAlphaで角膜の透明度を設定する(注意点として網膜全体が透明になってしまうので場合によっては角膜部分を別オブジェクトにしてしまうのもありかもしれない)

Roughnessを調整することでツルツルした質感が出せる。

さらに反射の度合いをSpecularで調整するとだいたい下のようになる。

必要があれば網膜と虹彩のオブジェクトをJoinする。

コメント

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