Fusion360で作成したモデルをUnityにインポートしてサクッと動かす方法

# この記事読む前に
決して「サクッと動かせたよ」っていう記事じゃないんで。はい。

# Fusion360のモデルをUnityにインポートすると

FBXに書き出して実際にインポートしてみると、なんかへんな親オブジェクトなどが
できてすごい扱いづらいんですよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/ee942b16-9e3d-2430-0d18-f2f63904defd.png)

こんな感じで。

プログラムで取得したいのは、この一番下の子の`Body1`というオブジェクト。

コンポーネントの名前とか、保存したときにつくバージョン名とかでFBXを更新するたびに名前がころころ変わるので、Unityのスクリプトで制御するのはめんどくさい。

今回は、それを解決すべく、いろいろ検証していきます。

# ソフトバージョン
Fusion360 2.0.8412
Unity 2019.3.7f1

# 検証結果
単刀直入に結果を知りたい人が大半だと思うので、先に結果を書きます。

結果は...
**Fusion360はUnity向けではない！！！**

はい。残念な結果ですね。
おとなしくBlenderとかを使えという結果になりました泣

検証の様子を見たい人は下記をご覧ください。
人生に失望した方は`Alt+F4`でウィンドウを閉じてください。

# いろいろ検証してみよう！！
いろんなパターンで検証してみました。

## パターン00：ただの円柱
ただの円柱をFusion360で作成し、fbxで書き出してUnityでインポートする。

### Fusion360
こんな感じで、直径1m、高さ2mの円柱を作成した。（デザイン>基準フィーチャソリッド>作成>円柱）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/32934946-7f06-2f23-7790-663312338504.png)

### Unity
Unityでインポートしたところ特別変なところはない。
きちんとxyz軸も同じようにインポートできるし、スケールもそのままインポートできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/60e29b51-0596-5f93-3aec-9d9e75394584.png)

Hierarchyタブでこのモデルを見ると、このような感じになっている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/71562e95-2bf9-cf69-cc0d-a3345d0bf67a.png)

Modelの名前は`Body1`、Fusion360では`ボディ1`となっているので、デフォルトでできたモデルの名前は`ボディ1`から`Body1`に変更される模様。

次は、このモデルの名前を変更してみる。
※モデルの名前が変えれることにあとから気づいたのでパターン名が00-1となっててごめんなさい。

## パターン00-1：モデルの名前を変更してみる
パターン00のモデルの名前を変更してみた。
念のため、日本語と英語の両方のモデルを作った。

### Fusion360
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/5e7e3c75-b437-b280-0859-43b2433d2727.png)


2つのボディ`円柱`と`cylinder`の2つを作った。

### Unity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/303fd5cb-5d32-d984-f1a8-833e4c7c7bd3.png)

`cylinder`と`円柱`の2つのモデルが出来ましたね。
どこかでFBXはマルチバイト文字に対応してないとか聞いてたけど、何とかなるみたいですね。

なので、モデルを2つに増やしてみる。

## パターン01：円柱と球
モデルを円柱と球の2つにしてみた。

### Fution360
球は直径1mで作成した。（デザイン>基準フィーチャソリッド>作成>球）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/ce4322ad-2984-970c-a714-1fb34e02a5a2.png)


ボディ名は`ボディ1`と`ボディ2`となる模様

### Unity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/beceb0e5-7519-118b-d581-44d5dd399229.png)

Hierarchyタブを見ると、下のように`Body1`と`Body2`があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/65cdbc00-e1b9-0975-0c45-5c21cfa8261e.png)


まぁ、ここまでは想像通りですね。

次は、ボディをコンポーネントに変更してみましょう。

## パターン02：コンポーネント化された円柱
パターン00で作った円柱をコンポーネントにしてからfbxにしてみましょう。

### Fusion360
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/787ae64e-fa49-9a4d-4750-04e29410c5fe.png)

パターン00のボディを右クリックして「ボディからコンポーネントを作成」を押して作成したコンポーネントです。
コンポーネントの名前は`コンポーネント1:1`、中身のボディの名前は、コンポーネント化する前と変わらず`ボディ1`でした。
### Unity

インポートしたところ、Hierarchyは下のようになりました。
※インポートしたときの3dViewは特に面白いところもないのでこれからは省きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/52a60348-2a90-cbf4-a9c3-1bd564c1ae9c.png)

- Component1:1
    - Component1
        - Body

こんな風に、ボディからコンポーネントにしただけで`Body1`の親オブジェクトが2つも増えましたね。
それも同じような名前のw

この謎を解明する前に、もう一つ。

## パターン03：コンポーネント化された円柱
パターン02と似ているが、ファイル内のボディをコンポーネント化したのではなく、パターン00のファイルをD&Dでインポートすることでコンポーネント化する。

### Fusion360
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/7b7b1936-4b1c-cbd6-6fa6-74fda19d0deb.png)

パターン02とは異なり、コンポーネント名がパターン00のファイル名である`00 v4:1`となっている。

### Unity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/bf681415-066b-a22e-af0a-9b54e6f8816e.png)

インポートしたところ、

- 00 v4:1
    - 00 v4
        - Body1

というような構造になっている。
こういう、オブジェクト名にバージョンが入ると、スクリプトで取得できない（FBXを更新するときに名前が変わっちゃう）からめんどくさいよね…

はい次。

## パターン04：D&Dで円柱を2つコンポーネント化する
パターン03のファイルにもう一回D&Dで円柱のファイルをインポートする。

### Fusion360
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/f81d13b8-18ac-3069-17f1-251c14d630b2.png)

このように2つのコンポーネント`00 v4:1`と`00 v4:2`が出来ました。
これで、コロンの後の数字はインポートしたコンポーネントが被ったときに増える数字でしたね。

### Unity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/dfe755a3-c42f-7007-3007-3d0da6c55856.png)

想像を絶する階層構造です。
1つ目のコンポーネントはパターン03と同じだけど、2つ目のコンポーネントの構造が

- 00 v4:2
    - 00 v4 1
        - Body 1

となっていて、なんか後ろに半角スペースを空けて1の数字が入ってますね。
こりゃあなんとも意味不明な構造だ。

## パターン05：パターン02をD&Dでコンポーネント化してみる。
パターン03,04はパターン00のファイルをD&Dでコンポーネント化しました。このパターン00はボディのままのモデルでした。

なので、パターン02のファイル。つまりコンポーネントされたモデルが含まれたファイルをD&Dでインポートするとどうなるのかをやってみます。

### Fusion360
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/05a773e5-ab09-6200-9772-63eda8832abf.png)

うん。はい。普通にコンポーネントの入れ子になっただけですね笑
さらに複雑になった感じですw

一応Unityも

### Unity
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/663a7a1f-dda6-a824-477a-eee91a26592e.png)

うん。まぁ想像通りの親オブジェクトのオンパレードw
絶対やめた方がいいw

## パターン06：プロパティ
Fusion360のコンポーネントやボディには「プロパティ」というものがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/2e3100b2-efae-89d6-df42-baef57fa9f6e.png)

そこにパーツ番号とパーツ名、説明があります。
これが変更出来たら！！と思ったけど、変更できるものは限られてるんですよね…

具体的にはパターン02の時だけで、ファイル内でボディをコンポーネントに変換したものだけ、コンポーネントのプロパティが変更できるようです。

はいくそ～。

# まとめ
やっぱりモデリングしようと思うとBlenderとかそっち系のモデリングソフトが必要ですね。

Fusion360とかは設計系だから、寸法とかもきちっと設定できて作りやすいから、Fusion360で作ったモデル（ロボットとか）をサクッと動かせたらいいなと思ってこの記事を書いてました。

だけど、検証していくうちにだんだんと可能性がなくn...

Blenderとか勉強しよっと。

# さいごに一言
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/b3c8e76a-a784-453b-7591-0e064b46821e.png)

個人的なプロジェクトでヤマハの電子オルガン「エレクトーン」ってやつをモデリングしてるんですけど、鍵盤を作っただけでHierarchyがこんな感じに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/d23e6e83-9b35-2f1c-784b-ce9996f70b0f.png)

これでもまだまだ展開しきれてない項目があります。

今はこれの鍵盤をMIDI入力で動かそうとしてるんですけど、こんなオブジェクト名`GameObject.Find()`で取得できるかい！！！！

FBXがこれで確定ならいいけど、まだ足鍵盤とかパネルとかモデリングしないといけないからどんどん更新されてくし、そのたびにこのバージョンの名前変わってくし、あーもーどうすればいいん！！！

これはUnityというかFusion360の問題だぁ。バージョン管理するのはいいけど、それって出力したFBXファイルにも必要な情報科かい？？
もうちょっと何とかならんもんかねぇ。

だれかいい方法おしえてくだせぇ