シェーダーエディターをテクスチャにベイクしてUnityにインポートする方法【Blender4.0】

Unity

こんにちは、トナカイです。

Blenderで作成した3DCGモデルをUnityに持っていく時に、マテリアルの情報も反映させたい時があります。

しかし、シェーダーエディターでマテリアルを設定している場合、Unityにもマテリアルの情報を反映させるためにはベイクという作業が必要になります。

Unityでシェーダーエディターの結果を表示させる機会があったのですが、ベイク初心者には難しかったです。

とはいえ学べたものは多かったため、記事にまとめました。

以下の項目について解説します。

  • ベイクとは何か
  • ベイクが必要な理由
  • ベイクのやり方
  • ベイクした画像をUnityに反映させる方法

ベイクとは

※トナカイの理解が及ぶ範囲で書いています。間違っている可能性もあるので、ご了承ください。

ベイクとは、レンダリングの結果を画像にすることです。

シェーダーエディターを使ってレンダリングをするときは、計算によって光の反射具合などのマテリアルを表示しています。

あくまでも計算であって、画像としてマテリアルを表示している訳ではありません。

レンダリングの結果をテクスチャにベイクすれば、画像として扱うことができます。

シェーダーエディターでマテリアルを設定した場合、ベイクしないとUnityで表示できないことが多いです。

Unityでシェーダーエディターの結果を表示するためにベイクが必要な理由

Blenderでシェーダーエディターを使いマテリアルを設定したとしても、Unityで表示できるとは限りません。

BlenderとUnityのシェーダーには、互換性がないためです。

英語しか読めない人に日本語の文章を渡しても解読できないのと似た現象だと思います。

その一方で、画像ファイルであればBlenderでもUnityでも使うことができます。

そこで、Blender側でシェーダーエディターの結果をベイクをして画像ファイルにし、Unityでも表示できるようにしているのです。

ただし、ベースカラーのようなマテリアルプロパティでも設定できるものは、メッシュをエクスポートするだけでもUnityで反映されました。

ここは互換性がある、ということなんでしょうか……? もう少し調べてみたいです。

シェーダーエディターをテクスチャにベイクしてUnityで表示する方法

実際に、Blenderで作成した3DCGモデルを、Unityで表示してみます。

インポートするもの

こちらの記事で作成したリンゴをUnityにインポートします。

前提条件は以下の通りです。

  • メッシュの作成が完了
  • リンゴの果実部分の色やグラデーションはシェーダーエディターで設定。ノードは画像の通り。
  • 葉っぱと枝の色はマテリアルプロパティのベースカラーで設定しているため、シェーダーエディターは使用していない

1.メッシュをUV展開する

①リンゴの側面の辺をAlt+Sで選択し、Ctrl+E→「シームをマーク」を選択します。

②画面最上部にある「UV編集」を選択します。

③Uキーを押して「UVマッピング」の画面を表示させ、「展開」を選択します。

すると、左の画面にリンゴを平面に展開したメッシュが表示されます。

表示されない場合は、画面左上にある「UVの選択を同期」がオフになっている可能性があります。

2.ベイクする

①シェーダーエディターを表示します。

右側の3Dビューポートはしばらく使わないため、ここにシェーダーエディターを表示させます。

左上にある「エディタータイプ」から「シェ―ダーエディター」に変更できます。

②Shift+A→「テクスチャ」→「画像テクスチャ」を選択し、画像テクスチャノードを追加します。

③画像テクスチャの「新規」ボタンをクリックし、ベイクするための画像を作成します。

設定は変えず、OKボタンを押します。名前は任意でも大丈夫です。

④レンダープロパティの「レンダーエンジン」「ベイクタイプ」を画像のように設定します。

また、画像テクスチャのノードを選択した状態にしてください。

ポイント

画像テクスチャのノードを選択していないと、ベイクが失敗します。

⑤ベイクボタンを押します。

ベイク完了までは時間がかかります。画面下に、「Texture bake」と表示されている間はベイク中です。

ベイクが成功していれば、下の画像のようになります。

ポイント

ベイクタイプを「ディフューズ」にすると、真っ黒な画像がベイクされてしまいます。

画像が黒くなる場合には、ベイクタイプを変更してみると解決するかもしれません。

⑥ベイクした画像を保存します。

UVエディターの上部にある「画像」→「保存」を選択し、画像を保存します。

Blenderのデータと画像のデータは別物です。

Blenderは保存したけれど画像のデータを保存し忘れた、といううっかりミスを防ぐために、画像の保存はこまめにしておくことをおすすめします。

これで、ベイクは完了です。

3.fbxファイルをエクスポートする

①リンゴのメッシュをエクスポートします。

「ファイル」→「エクスポート」から、fbxファイルを選択します。エクスポートするオブジェクトを選びます。

ここでは、「メッシュ」と「その他」を選択しました。

「その他」を選択したのは、リンゴの枝を作るためにベジエを使っており、メッシュを選択するだけではエクスポートされないためです。

ポイント

ここでランプをエクスポートすると、fbxファイルをUnityに移したときに、Unityのライトと光が干渉してマテリアルが白くなってしまいます。

4.Unityにインポートする

①ここからはUnityで操作を行います。

UnityのProjectに、先ほどエクスポートしたfbxファイルと、ベイクした画像ファイルをインポートします。

②fbxファイルをHierarchyにドラッグした後に、リンゴの果実部分(下の画像では球)に画像ファイルをドラッグします。

これで、Unityでシェーダーエディターの出力結果を表示することができました。