Blender で初めてモデルを作成し FBX形式で Unity にインポートしてみた

この週末、Blender の操作にチャレンジしてみたので、ざっとメモを残しておきます。簡単なモデルを Blender で作成して、FBX形式でインポートし、それを Unity で読み込んで表示させる、までやってみました。初心者なので無駄も多いとおもいますが、生暖かい目で見ていただければw

使用したのは Steam で配信されている 2.79b というバージョン。[日本語化](https://blender-cg.net/nihonngoka/) は実施済みです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/02621487-291c-31c1-d051-72c27e5f5ff7.png)
Blender 操作を学んだのは以下のサイトで、作者の方々に感謝です。

* [かんたんBlender講座](http://krlab.info.kochi-tech.ac.jp/kurihara/lecture/cg/BlenderWeb_Hayashi/html/index.html)
* [Blenderの易しい使い方](https://blender-cg.net/)

# 起動直後

Blender 起動直後の画面はこんな感じ。最初から光源とカメラ、そして Cube オブジェクトがひとつ定義されているみたいですね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/ba837b19-81fc-22b7-a73d-f40403852872.png)
右上に [アウトライナー](https://docs.blender.org/manual/ja/2.79/editors/outliner.html) がありますが、これだけでもう情報多い！2つある Cube は、上にあるのが Cube オブジェクトで、その子になっているのが Cube メッシュデータのようです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/990305f7-85a8-7f9c-4a54-694e8d7e00e7.png)

# 設定

[BlenderでUnity向けにFBXをエクスポートする時のまとめ：メッシュ編](http://soucolle.jp/workflow_of_export_only_the_mesh_from_blender_to_unity/) を参考に「単位」を変更しておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/245f589d-c781-a6cd-b6f7-ebe290159c09.png)
確か Unity でもキューブは 1m 四方のサイズ感だったと記憶しているので、これでサイズ感は合いそうです。

# 今回もまた3色キューブ

まずは慣れたところから。Unity の時と同じ [3色キューブ](https://qiita.com/yamachan360/items/43b6d63f74b782ff1ba3#%E7%B7%B4%E7%BF%92%E7%94%A8%E3%82%B7%E3%83%BC%E3%83%B31-3%E8%89%B2%E3%82%AD%E3%83%A5%E3%83%BC%E3%83%96) を定義してみましょう。

## キューブの作成

先ほどのアウトライナーで Cube オブジェクトを選び、左に表示されたメニューで「複製」を2回クリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/eb38a826-c195-e296-5532-a2cc3d33d8d6.png)
すると Cube が複製され、アウトライナーに追加されたことがわかります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/062fca6a-6470-5cd4-2bf2-b12763f24127.png)
このままだと紛らわしいので、アウトライナー上で右クリックメニューから「名前変更」します。Cube, Cube.001, Cube.002 はそれぞれ、Red Cube, Green Cube,  Blue Cube とします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/34f35b26-cfa4-4559-f8d9-6a12438a036a.png)

## 位置とサイズの変更

オブジェクトの操作にはいろいろ方法がありますが、Nキーを押して「数値」シェルフを表示し、「トランスフォーム」パネルを使って数値で指定する方法が、Unity っぽくて判りやすいな、と思いました。

アウトライナーで Red Cube を選択し、トランスフォームで位置のz軸を -2m に、各辺のサイズを 1m に設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/8c898f49-5241-9840-afec-621279165094.png)
Green Cube は位置は原点のまま、各辺のサイズを 1m に設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/00167f5e-8bbd-482e-f7c4-f98507679fda.png)
Blue Cube は位置のz軸を 2m に、各辺のサイズを 1m に設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/d7d7cbe2-7256-0a54-3b8a-f662a6bffc7c.png)
3Dビューをグリグリ動かして、3つのキューブがz軸上に並んでいるのを確認しましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/c35ec82c-67c6-85ff-11bb-0d6aa08e2c10.png)

## 色をつける

まずはオブジェクトモードで Red Cube を選択し(アウトライナーで Red Cube オブジェクトを選択し)、その下のマテリアル設定パネルで、まずマテリアル名をダブルクリックで編集して Red に変更し、ディフーズをクリックして赤色をセットします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/b9d8491b-8cfc-f622-3438-f4e37fe59ccf.png)
すると3Dプレビューでは3つの箱が全て赤色に変わります。これは最初から用意されているマテリアルが1つしかなく、Cube をコピーした際に、このマテリアルの指定もコピーされたから。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/f358d5b6-3af6-ab84-a554-eb340608ae1d.png)
次は Green Cube を選択し、まずはセットされている Red マテリアルを - アイコンで削除します。そして + アイコンで新しいマテリアルを追加して Green にリネームし、ディフーズをクリックして緑色をセットします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/3537b70c-fd8b-9b3b-81b3-80d8d96882c5.png)
Blue Cube も同じで、まずはセットされている Red マテリアルを削除します。そして新しいマテリアルを追加して Blue にリネームし、ディフーズをクリックして青色をセットします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/deb140c2-1114-1968-a8ac-553333837d42.png)
3D プレビューで、それぞれのキューブにちゃんと色が設定されたことを確認してください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/dbd8d472-ece2-0ccf-0096-1e8a0019ab2f.png)

## ついでにグループ化

これで3色キューブは完成したのですが、個人的な興味で [グループ化](https://blender-cg.net/group/) も実施してみます。

3つのキューブのうち赤と緑を選択(Shift+右クリック)し、グループ化(Ctrl＋G)します。グループ名を訊かれたので Red and Green と入力してみました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/ccde0d2c-19f5-0516-3a9e-cc893ac1f68f.png)
さてこのグループは Unity 上ではどう扱われるのでしょうか？ちょっと楽しみです。

# FBX形式でエクスポートする

さて [参考ページ](http://soucolle.jp/workflow_of_export_only_the_mesh_from_blender_to_unity/#%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E8%A8%AD%E5%AE%9A) を参照してFBX形式でエクスポートを実施してみましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/56d8f6ed-06d2-9093-861a-7851586488fd.png)
エクスポート対象をメッシュだけに限定し、トランスフォーム適用とやらの実験的機能をチェックしてみました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/210187a7-7404-0486-dc5a-311386b1a58c.png)

# Unity で読み込んでみる

エクスポートで作成された *.fbx ファイルを、Unity のアセット欄に追加し、新しいシーンに読み込んでみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/cb9db413-0eaa-9472-7d0a-32a772d2cc98.png)
おお、Blender で作成したほぼそのままで読み込まれました。ちょっと気になるのは

* z軸にズラしたはずのキューブがy軸方向にズレている (これはエクスポート時の設定どおり)
* キューブの拡大/縮小が 49.99998 と微妙に誤差のある数値になっている
* グループ化は特に反映されないようだ

だけど、今回のサンプルに関しては特に大きな問題ではない気がします。

なお確認のために Unity 側でキューブを1つ追加してみましたが、読み込んだモデルの Green Cube とぴったり重なって表示されたので、サイズ感も問題なさそうです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/7d979a31-1fd9-40ec-4cc4-9f1842d2f36e.png)
うん、良い感じ！これで今後は、少なくともパーツ作成に関しては Blender で実施したほうが楽な気がします。

# まとめ

今回はシンプルなモデルを Blender で作成して Unity にインポートしてみました。思った以上に手軽にできてびっくり。Unity 側で複雑なモデルを作成するのは難しいので、今後はこの方法でパーツを作成したいな、とおもいます。

とりあえず今、気になっていて調査したいことは以下かな。

* パーツのグループ化について。市販モデルでは、ある程度以上は分割できないパーツがあるが、あれはグループ化ではないのか？
* モデルごとに回転の中心(ピポット)を設定できるはずなので、実際に試してみたい
* 今回は単純なマテリアルなので問題なくインポートできたが、複雑なものは Unity 側で定義したほうが良いとの記述があったので、そのあたりの確認

まあでも、その前に Blender の操作にもう少し慣れないと！とおもいましたw もう少し入門サイトを読み、幾つかパーツ/モデルを作成して慣れていきたいとおもいます。

それではまた。