Blender初心者のためのマテリアル&テクスチャ取り扱い

BlenderからUnityに3Dファイルを取り込むアイキャッチ画像

Blenderで作成したファイルのUnity取り込み

Unity に取り込むのを前提で Blender2.74 にてマテリアルおよびテクスチャの設定を行うときの手順や注意事項をまとめたものです。

特に、 Blender で割り当てた情報のどの3Dデータ情報(形状とか色など)が、 Unity に取り込めるのかを整理するために書いたものです。

blendファイルのUnity取り込み

Blender (.blend形式ファイル)を Unity に取り込むときは Unity 側で内部で FBX形式に変換して取り込んでいるようです。(これについては公式ドキュメントを参考にしています。)

モデリングについては 前に書いた内容 をご参照。

マテリアル&テクスチャ情報の割り当て

Blenderファイルとして持っている材質設定(Material)、色合いや画像貼り付けの情報(UVマッピング)についてまとめます。

材質設定(Material)、色合い(Diffuse Color)のFBX変換

Blender 上で設定するマテリアル名や設定の色合いDiffuse Color)については Unity に取り込みできます。それ以外の補足情報である、Diffuse Color の強度とか、スペキュラー とか 放射(Emit) とかは設定しても Unityには引き継がれないようです。(FBX形式に変換した時点でこれらの情報は失われる。スペキュラーについてはFBX形式に変換した時点では色情報は保存されているっぽい)

Diffuse Color の設定方法はマテリアルを設定したいオブジェクトを選択し、ディフューズカラーの項目の色を選択するのみで特に悩むことはないかと思います。

blender_material_texture_icon

画像貼り付け(UVマッピング)のFBX変換

テクスチャの UVマッピング についてはUV情報(2次元画像データをどのようにメッシュ上に展開するか、メッシュ頂点⇔画像データの位置のマッピング情報)と、貼り付ける画像データが必要となります。

まずUV情報を作成します。貼り付けたいオブジェクトのメッシュを編集モードで選択し、UV/画像エディターウィンドウを開くことでマッピングが出来ます。( UV/画像エディター ウィンドウは ウィンドウのアイコンから選択するか、情報ウィンドウのウィンドウセットを「default UV Editing」に切り替えてあげることでも表示できます。)

UV/画像エディター ウィンドウを開く

UV/画像エディター ウィンドウを開く

UV/画像エディターウィンドウの下部メニューから、「新規」テクスチャ作成を選択し、貼り付ける画像のベースを作成します。ここで画像サイズや背景色を決定します。ここでは 64 × 64 ピクセルに設定して例をのせいています。

UV/画像の新規追加メニュ-

UV/画像の新規追加メニュ-

作成されたUV用画像の上に、UVマッピング情報を設定します。メッシュ一つ一つに手動で設定するのではなく、ある程度自動的に設定する機能を利用します。(スマートUV展開)

ツールシェルフから、「シェーディングUVマッピングの項目で 展開スマートUV展開」でマッピングします。(ショートカット U キー)

スマートUV展開

スマートUV展開

あとは画像を保存し、Photoshop や Gimp 等で編集し、UV/画像エディター下部メニューの「画像」から再度読み込みをします。なお画像については後々Unityに取り込むことを考え blendファイル内に「Textures」フォルダを作成して保存すると分かりやすいです。

Blenderでの簡単なUVマッピング手順

UVマッピングするときに「カラーグリッド」を選択すると、Blenderが用意した虹色なテクスチャが生成されます。(まだここでは生成された画像をテクスチャとして3Dオブジェクトには割り当てられていません。)

3Dオブジェクトにテクスチャ(画像)を貼り付けて表示するために、次のステップとして参考のキノコ・オブジェクト「MushroomRoof」 にこの虹色のテクスチャ情報を追加してみます。

キノコの頭のオブジェクトを選択し、テクスチャ情報を確認すると、現在は以下の通りテクスチャが一つも割り当てられていません。

blender_see_texture_none_info_of_the_mushroom_roof_texture

「新規」の左のテクスチャアイコンを押し、先ほど作成したUVマッピング画像を指定します。これでテクスチャ情報が確認できます。

割り当てテクスチャ リストの一つを選択し、先ほどのテクスチャを指定します。これで割り当て完了。実際に確認してみると・・・。ちゃんとキノコの頭がカラフルになりました!

キノコの頭にUVマッピング

キノコの頭にUVマッピング

なお、確認にあたっては3Dビュー下部のシェーディング(赤で囲んだアイコン)を押し、「ソリッドレンダー」に切り替えてみて下さい。テクスチャをちゃんと描画するモードに切り替わることで、画像貼り付けが行われます。

以上、最も簡単なUVマッピングの手順でした。

Blender のマテリアル・テクスチャ情報をUnity に取り込み

画像ファイルへの参照を相対パスに変更

Blender で作成した3Dのファイルにつき、頂点やメッシュの形状、UV情報、ボーン、スキンメッシュ情報、アニメーションはFBX形式を経由してそのまま取り込み可能ですが、画像ファイルを割り当てたテクスチャ等をUnity 上で表示するには少し注意してあげる必要があります。

以下、FBX 6.1 ASCII形式で 刀 をモデリングし、柄の部分に画像をUV マッピングしたもののファイル内容です。FBXファイル内には画像へのファイル名・相対ファイルパスが記載された状態であり、FBXファイル自体に画像ファイル情報を取り込んでいるわけではないので、 UVマッピングに利用した画像ファイルも一緒の相対パスで Unity にインポートしてあげる必要がある、ということのようです。

FBXファイルの中身例(画像をUVマッピングした時)は画像ファイルのファイル名、ファイル相対パスが記載される。

FBXファイルの中身例(画像をUVマッピングした時)

作成している blender ファイル配下に「Textures」フォルダを作成し、Unity 側に取り込む際、FBXファイル本体と一緒に Textures フォルダも取り込んであげると、正常に画像読み込みおよびマッピングをしてくれます。(別に Textures という名前でなくても動きますが、このフォルダ構成にしていることが多いっぽい。違う名前だとダメなのかな・・?)

マテリアル情報のUnity 取り込み

マテリアル情報を Blender 側で作成しておくと、Unity に取り込んだときに「Materials」というフォルダが自動的に生成され、マテリアルごとに matファイルが生成されます。

Unity の特定の階層に複数の Blend や FBX を取り込むときの注意

同じマテリアル名をいろんなオブジェクトにつけて、同じUnity 上の階層に突っ込むと同じ名前のマテリアルがすでに存在した場合は新しいものに更新されないようですので注意。(ということは、既にUnity プロジェクトに取り込み済みのFBXやBlendファイルのマテリアルを更新するときは、取り込み済みのファイルを直接おきかえないと更新されない?)

Unity 取り込み後の高速化をあらかじめ意識

マテリアルを割り当てするとき、同じマテリアルを割り当てられそうな所には極力同じマテリアルを設定してあげると、後々のUnity 上の描画上、高速化できるようなので、意識して割り当てしてあげると良いようです。これはバッチング(Batching) という、同じマテリアルを共有しているオブジェクトをまとめて描画できる高速化の機能が Unity にあるためです。コチラ(公式ドキュメント)にバッチングという高速間の処理の概要が記載されています。

Blender 側でオブジェクトに割り当てていないマテリアル情報

Blender では作成したマテリアルを手動で削除する、という機能はないようです。ファイル保存時に利用していないマテリアルについては自動的に削除されるようです。

Procedural Texture(プロシージャル・テクスチャ) の利用

画像データや法線マップ等をプログラムから2次元座標や3次元座標、時間、乱数を引数として関数的に生成したテクスチャをプロシージャル・テクスチャと呼びます。

プロシージャル・テクスチャを利用すると、高画質テクスチャを画像としてあらかじめファイルなどで用意しておかなくて良い(つまり容量が削減できる)、与える乱数の種(パラメータ)を変えることで、類似するパターンだが、細部が乱数により異なるテクスチャを生成できる、など良いことが沢山あります。

欠点としては画像を関数的に生成するための事前の計算(時間)とメモリが必要になることでしょうか。

なお、Unity5 では Allegorithmic社 のSubstance という プロシージャル・テクスチャ生成エンジンを取り込んでおり、Allegorithmic社の「Substance Designer」という製品から出力した「SBSARファイル(SuBStance ARchive)」をUnityに取り込んで、UV情報を与えてあるメッシュオブジェクトに対してドラッグ&ドロップで適用可能です。

同社のツールについては30日無料トライアルもあるので、今度ためしてみようかな。ちなみに同社の日本語ページのトライアルのDownload用のアドレスがリンク切れとなっていました。探してみたところ、英語版(こちら)のページの下のほうにお試し(30日間)のリンクがありますので、参考までに。STEAMや公式ページから購入可能です。このブログを描いている時点(2015.12.08)では STEAM で Substance Indie Pack が 29,990円、公式サイトIndie License が $149でした。(公式のほうが安い・・!?なんか違うのかな。知っている人、いたら教えてくれるとうれしいです。)

プロシージャル・テクスチャには沢山の利点があるのですが、ゲームで利用したい意図するテクスチャを自力で Substance Designer で生成するのと、必要な画像を自分で描いて生成するのにかかる時間とコストとの比較しだいでしょうか。時間があれば、綺麗で容量も小さいプロシージャルの仕組みを是非使いたいのですが。

なお、Unity5 でのプロシージャル・マテリアルへの適用手順の流れはコチラ(海外のUnityブログ)のサイト様が丁寧で参考になりました。SBSARファイル形式で公開されている素晴らしいテクスチャ(Unity Asset)もありますので、選択肢の一つとして考えておきたいです。

非常に参考になりましたサイト様

ページの更新履歴

更新日 更新内容
2015.12.18 ページ公開
2018.3.18 スマホからレイアウトが崩れて読みにくいのでデザインを全般的に修正。ついでに文章構造と内容も訂正。誤字脱字・文章のわかりづらい記載を修正。アイキャッチを追加。

著作権・補足

以下、このページのアイキャッチ画像でUnityロゴやBlenderロゴを利用させていただきました。ご参考までにそれぞれ利用にあたってのガイドラインへのURLを追記しておきます。

コメント

  1. sorime より:

    とても参考になりました!
    ありがとうございます(*‘ω‘ *)

    • あまじ より:

      >> sorimeさま
      コメント頂きありがとうございます!
      未熟者なりに調べてはいるつもりですが、
      誤った情報もあるかと思いますので、ご参考程度にでもお役立ちいただければと思います。

  2. Siteman より:

    The default scene in Blender. The box has to be removed and the user defaults saved for it to play well with Unity.

    • あまじ より:

      thanks for comment.
      I wrote down this article for blender 2.74.
      is there something difference between the newest version, 2.79beta?
      i’m so glad if you teach me. thanks.

      コメントありがとうございます。
      記事について、 2018/11 現在の最新2.79ベータでも確認 IF そんなに変更ないと思ってましたが、もし何か変更があったら知りたいです。