0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Blender To Unity】Blenderで作成したマテリアルをBakeしてUnityにインポートする方法

Last updated at Posted at 2025-01-23

 Blender上でテクスチャをBakeし、Unityにインポートする方法です。Bakeのやり方だけ知りたい方は【手順】をお読みください。
 また、この記事は以下の記事のトラブルシューティング用に作成したものです。Unityへのエクスポート方法がわからない方は、以下の記事をお読みください。

【使用ツール】
Blender 3.6
Unity 2022.3.22

【問題点】

 BlenderからFBX形式でモデルをエクスポートし、Unityにインポートしました。しかし、Unity上で作成されたマテリアル内にテクスチャが貼られておらず、Texturesフォルダにも格納されていません。
※ここでいうTexturesフォルダは、テクスチャ抽出時にそのテクスチャを格納したフォルダを指します。

(本来であれば、マテリアルのinspector上でAlbedoの左側にテクスチャが貼られている状態でエクスポートされる)
image.png

(しかし、BlenderからUnityにエクスポートしたところ、テクスチャが貼られておらず、テクスチャを格納したフォルダ内にも存在しない)
image.png

image.png

【回答】

 Blender上で作成したノードベースのマテリアルはUnityに正しく反映されないことがあります。Blender上でテクスチャをBakeし、Unityにその画像をそのままインポートする必要があります。

 前提として、Blenderでマテリアルを作成する際に使用したノードは、Unityでも全て不都合なく使えるわけではありません。Unityで使用できないノードが使われているマテリアルは、Unityにインポートする時にはじかれます。そのため、上述した問題点のようにテクスチャが貼られていない(+存在しない)という問題が生じます。

 例えば、Blenderでノードを使用して作成したマテリアルを例に考えます。
image.png

Image Texture(下記画像1枚目)やPrincipled BSDF(下記画像2枚目)は、何ら問題なくUnityにインポートできます。

image.png
image.png

そのため、これらのノードのみを使用して作成したマテリアルの場合は、Unityに正常にインポートできます。

(インポートした結果↓)
image.png

しかし、Image TextureとつないでいるRGB CurvesはUnity上で使用できません。
image.png

そのため、Unityにインポートした際、テクスチャがフォルダに格納されず、またマテリアルにも貼られていないという問題が発生します。

【手順」

 Blender上でテクスチャをBakeし、Unityにインポートする手順を紹介します。

 今回は、Planeオブジェクトを作成し、そこにマテリアルを割り当ててBakeすることで、正方形のテクスチャを作成する方法を紹介します。
 本来であれば、すでに作成したモデルを選択してBakeします。しかし、めんどうくs...((
以下の方法では、汎用性の高いテクスチャを作成することができるため、この方法で進めていきます。

①Blender上でShadingタブを開き、Bakeするマテリアルを表示します。

(以下では、deskwoodマテリアルをBakeします)

②Bake用にImage texturesを新規作成します。

image.png

作成したImageTextureはどこにも繋がずおいておきます。
image.png

③Image Texture内で+Newを押下し、新規イメージを作成します。

今回は、wooddesktextureという名前でテクスチャを作成します。
image.png

【Tips】
 WidthとHeightでイメージのサイズを決定します。ここのサイズは高ければ高いほど、テクスチャが鮮明になりますが、その分パフォーマンスにも影響してきます。UnityにBakeしたテクスチャをインポートした後、Unity上でここのサイズを調整することができますので、今回はある程度サイズを大きくして作成しています。
 サイズ調整部分については、きじいちばんしたのTipsで解説します。

④画面右側のプロパティタブからRender Propertyを表示し、Render EngineをCyclesにします。

image.png

⑤Render Property内のBakeタブを開き、Bake TypeをEmitにします

image.png

⑥マテリアル内でBase ColorにつないでいるノードをEmissiionにも接続します。

image.png

⑦画面上部の3D ViewでBakeするオブジェクトを選択し、続けて②で作成したImage Textureを選択します。

image.png

image.png

⑧Render Property内のBakeタブから、Bakeボタンを押下します。

image.png

すると、画面下部に下記画像のようなローディング画面が出てきます。ここが100%になるまで待ちます。
image.png

⑨画面上部のUV Editingタブを開きます。

image.png

⑩画面左側に出てくるUV Editor画面上部のImageを押下し、Saveを選択します。

わかりやすい場所に保存してください。
image.png

⑪Unityの画面を開き、Bakeした画像をProjectタブのわかりやすい場所にドラック&ドロップします。

⑫Unity上でテクスチャを張りたいマテリアルを選択し、Albedo左側の正方形部分にテクスチャをドラッグ&ドロップします。

※マテリアルのEmission下部にあるTilling値をいじることで、テクスチャの拡縮を変更できます。
image.png

以上がテクスチャのBake方法になります。Normal Mapをbakeする場合は、bake TypeをNormalにして上記の方法と同じことをやればできます。

【Tips】
 BakeしてUnityにインポートした後に、テクスチャサイズを変更して最適化する方法について紹介します。
※ここでいうテクスチャサイズの変更とは、テクスチャの拡縮のことではなく、テクスチャの容量のことを指しています。

 まず、Unityにインポートしたテクスチャを選択し、Insepectorを表示します。
 image.png

 Inspector下部のMax Sizeを変更することで、テクスチャサイズを増減させることができます。見た目に大きな影響のない範囲で調整し、なるべくサイズを小さくすることで最適化を実現できます。
image.png

 Max Sizeを変更した後に、右下のApplyボタンを押下することで変更を保存できます。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?