【Blender】レンダリングの質感(マテリアル)をテクスチャにベイクする


以前の記事でノーマルマップというテクスチャの作成手順についてご紹介しました。よろしければそちらの記事もご覧いただけると幸いです。

今回は色情報を持つテクスチャについてです。

オブジェクトに色を付ける際に行うことは、マテリアルの割り当てです。本稿ではそのマテリアルで設定し、表現している色味・光沢・影等をテクスチャとしてベイクする手段についてご紹介していきます。

最終的にはUnityにエクスポートして適用する手順までご紹介していきます。

ベイクとは

ベイクとはその名の通り、焼き付けを行う工程です。マテリアルに設定した色味、ライティングによる光の反射・影といった情報、つまりレンダリングで表現されている色・質感等をテクスチャに焼き付けることができます。

この工程を行うことには以下の様な利点があります。

  • 使用するマテリアル数の削減。
  • テクスチャを手書きで作成する手間の削減。
  • 別のソフトウェアにモデルをエクスポートした際の色設定が容易。

この手法は、Unity用に3Dモデルを作成している方にとって非常に便利なものだと思われます。積極的に使用していきましょう。

下準備

モデル作成~UV展開

今回は以下の様なカップとコースターを作成しました。

それぞれのオブジェクトのUV展開は以下の様に行っています。参考程度にご覧ください。

作成しているオブジェクトにもよりますが、なるべくストレッチが少なくなるようにシームをつけていきましょう。

ストレッチ_比較
ストレッチ

ストレッチはUVエディターで「N」キーを押した後、「ビュー」タブを展開して「ストレッチ」を適用することで確認できます。

ストレッチ_適用手順
ストレッチ 適用手順

画像追加~レンダーモード設定

UVエディターで画像を「新規作成」します。これは実際に色情報を焼き付けていくための画像となります。

テクスチャ_設定
画像 新規作成

今回は解像度を2Kに設定しています。お好みで数値を変更してください。

最後にレンダリングエンジンを「Cycles」に変更します。これでベイクが可能になります

レンダーエンジン_Cycles
Cycles

以上で下準備は完了です。

UVマップ配置

今回はテクスチャを用いることでマテリアル数を減らすことも目的の1つであります。

そのために2つのオブジェクトのUVをまとめて展開していきます。

まず、まとめて展開したい(今回はカップとコースター)オブジェクトを選択します。その後、「Tab」キーを押して「編集モード」に変更します。

一括UV展開_1
まとめて選択

この状態でUVエディターを確認してみると以下の様になっています。

UV_一括_整理前
重なったUV

カップとコースターのUVが重なっているためごちゃごちゃになっています。これを整頓していきます。

A」キーでオブジェクトを全選択した後、「U」キーを押して「展開」を選択してください。

一括UV展開_2
一括UV展開2

UVが重なることなく、きれいに展開されていることが確認できます。

しかし、現在の状態だとUV同士の距離が近いため、ベイクした際に近接したUVの色情報がお互いのUVにうつりこむといったことが起こり得ます。

それを防ぐために、ある程度距離に余裕を持たせるようにUV配置を行っていきます。

L」キーを押してマウスカーソルをかざすと離島ごとに選択が可能です。「G」キーを押すとUVを移動できます。

離島選択_UVマップ
離島選択

UV同士の距離が近く頂点等が選択しにくい場合に、分断されているUVを正確に選択できるため非常に便利です。

後は「G」キーで移動、「R」キーで回転、「S」キーで拡大縮小、させてUVを配置していきましょう。

今回は以下の様に配置しました。参考程度にご覧いただければ幸いです。

UVマップ_完成図
UVマップ 完成図

これでUVマップ配置は完了です。

ライティング

レンダリング結果をベイクするには、対象のオブジェクトにライティングを施していく必要があります。現在の状態でベイクをしても全体的に薄暗いテクスチャ出来上がってしまいます。

ここでは2つの方法をご紹介していきます。

ライトを使用する

正攻法です。どういった反射・影の表現にしたいかにもよりますが、単純にマテリアルで設定した質感をテクスチャに焼き付けたい場合は、なるべく全面に光が届くようにライトを配置しましょう。

今回はエリアライトを以下の様に設定して配置しました。

*影ごとベイクしたい方は「影を生成」のチェックボックスをクリックしてください。

オブジェクトの四方と上方にライトを配置して照らしています。

放射マテリアルを使用する

この方法では細かいライトの配置を行うことはありません。まず「Shift + A」キーを押し「UV球」を追加します。

UV球_追加手順
UV球 追加手順

UV球のセグメント・リング数は以下の通りです。お好みで設定してください。

UV球設定
UV球設定

続いて「S」キーを押してUV球を拡大します。大きさとしては、ライティングを施すオブジェクトを完全に覆う大きさまで拡大します。

UV球_拡大
UV球 拡大

UV球が拡大できたらマテリアルを新規追加します。使用するシェーダーは「放射」に変更します。

マテリアル_放射
放射シェーダー

次にUV球の法線を内側に変更します。手順は次の通りです。

  1. UV球を選択した状態で「Tab」キーを押し、「編集モード」に変更。
  2. 「A」キーを押してメッシュを全選択。
  3. 「Alt + N」キーを押して「反転」を選択。
法線反転_UV球
法線反転

これでUV球の内側に法線が向き、放射マテリアルによってカップとコースターにライティングが施されます。

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

まずシェーダーエディターを開きます。

シェーダーエディター_展開
シェーダーエディター

エディターが展開できたら、ベイクしたいマテリアルが割り振られているオブジェクトを選択し、以下の様に設定していきます。

  1. 「Shift + A」キーで「テクスチャ」->「画像テクスチャ」を追加。
  2. 画像をベイク用のもの(下準備で新規作成)に設定。

*まだノードはつながないで大丈夫です。同様の設定をベイクしたいマテリアル全てに行います

設定漏れがあると、そのマテリアルの個所だけベイクができないため注意してください。

以上で準備は整いました。

ベイク

いよいよベイクしていきます。

ベイクしたいマテリアルが割り振られているオブジェクトをすべて選択してください。

オブジェクト_選択
オブジェクト選択

選択の順番に関しては特に気にする点はありません。漏れがないように選択してください。

続いてUVエディターもしくは、画像エディターを展開し、ベイク先の画像を開いておきます。

UVエディター_ベイク前
UVエディター

いよいよ最後です。

プロパティエディターより、「レンダー」タブを開き「ベイク」をクリックすることでベイクを開始します。

ベイク_手順
ベイク

すると以下の様な画像がUVエディター(画像エディター)に表示されます。今回は放射マテリアル・エリアライトの両方でベイクしてみました。

ベイクが完了したら忘れずに画像を保存しておきましょう。

テクスチャ_保存
テクスチャ保存

シェーダーエディターでノードをつなげばベースカラーをテクスチャのものに適用できます。

ノード接続
ノード接続

質感をルック開発ビューで比較してみました。

放射マテリアルでベイクした方は光が満遍なく当たっているため、全体的に明るい感じになっています。

エリアライトは光の当たり方に少しムラがあるため暗い箇所と明るい箇所がテクスチャで表現されています。

どちらがいい悪いというわけではないため、状況に合わせて使い分けてみましょう。

うまくいかない場合

もし、ベイクされたテクスチャをオブジェクトに反映した時に、綺麗に反映されない箇所(例:シーム付近)が出てくる場合は「余白」を設定してみましょう。

余白とはUVより少し色がはみ出している箇所のことを指します。

余白_参考画像
余白箇所

通常UVよりはみ出るように設定する方がうまくいきます。

「余白」はレンダータブの「出力」から調節可能です。

余白_調節
余白 調節

値を大きくすれば余白が大きくなります。

また、ライティングをしっかり行っているのに、ベイクした際に黒くなるといったことが時たま起こります。

これは法線の向きが問題になっています。以下はエリアライトでベイクしたテクスチャを比較したものです。

該当箇所の法線の向きを確認してみましょう。確認方法は次の通りです。

まず編集モード時に3Dビュー右上の「ビューポートオーバーレイ」を開きます。

ビューポートオーバーレイ
ビューポートオーバーレイ

続いて「Normals」より面の法線を表示するように設定します。

法線_確認
Normals

法線を確認してみると以下の様になっています。

3Dビュー_法線
3Dビュー 法線

法線の向きが問題の個所は内側を向いていることが確認できます。法線の向きを光源側に向ければこの問題は解決します。

方法は該当の個所を選択し「Alt + N」キーを押し「反転」もしくは「面の向きを外側にそろえる」を選択しましょう。

法線反転
法線反転

これで正常にベイクされるはずです。

Unityにエクスポート

オブジェクト統合

使用するマテリアルを1つにするためにオブジェクトを統合します。対象のオブジェクトを選択したら「Ctrl+J」キーで統合します。

オブジェクト統合
オブジェクト統合

次に割り当てられているとマテリアルをすべて解除し、新しいマテリアルを新規作成します。

マテリアル削除_新規追加
マテリアル解除・新規追加

この状態でテクスチャをベースカラーに設定すると、カップとコースター両方に色が付きます。

テクスチャのみ
テクスチャ設定

これでマテリアルの削減が完了しました。

エクスポート

最後にエクスポートしていきます。[ファイル]->[エクスポート]->[FBX]の手順で選択してください。

エクスポート手順
エクスポート手順

続いて以下の様に設定して「FBXをエクスポート」を実行してください。

エクスポート設定
エクスポート設定

BlenderとUnityでは基準となる座標軸が異なるため、エクスポートした際にモデルに角度がついてしまうことがあります。

上記のように設定すればBlenderでの向きをUnity上でも再現可能です。

Unity上での設定

モデルがエクスポートされていることが確認出来たら、「Extract Materials」でモデルとマテリアルを分離します。

extractmaterials
Extract Materials

マテリアルが分離できたら「Albedo」からBlenderで作成したテクスチャを適用しましょう。

Albedo_設定
Albedo 設定

Metallic」と「Smoothness」を調節して質感を設定しましょう。

これで設定完了です。

まとめ

いかがでしたでしょうか。今回はBlenderで設定したマテリアルの質感をテクスチャにベイクする手順についてご紹介してきました。

UV展開、ライティング等、準備することは多いです。

しかし、テクスチャにすることで軽量化・設定の簡略化、何よりエクスポートした際に元の質感を再現しやすくなるといった利点があります。積極的に使用していくことをおすすめします。

またノーマルマップ(法線マップ)を併用することで、軽量かつ豊かな表現が可能になります。よろしければ以下の記事もご覧になっていただけると幸いです。

参考)Blender・Unityを用いたノーマルマップ(法線マップ)の作成、適用手順
   【Blender】メッシュの差分からノーマルマップ(法線マップ)をベイクする手順


カップ_コースター_レンダリング

この記事はいかがでしたか?よければシェアをお願いします。

Massuuuu