WindowsでUnity用のFBX SDKをビルドする

# WindowsでUnity用のFBX SDKをビルドする

Unity用のFBX SDK（[com.autodesk.fbx](https://github.com/Unity-Technologies/com.autodesk.fbx )）のビルドをやってみたところ、READMEの手順通りにやってもうまく行かなかったので、忘れないうちにメモを残します。



## 試したPC環境

- Windows 10
- Chocolatey 0.10.14



## Unity 2018.1のインストール

[Unity公式サイト](https://unity3d.com/jp/get-unity/download/archive) からUnity Hub等でインストールしてください。

（ちなみに、私のPC環境にはすでに `2018.4.11f1` がインストール済みだったため、改めて `2018.1` はインストールしませんでしたが、後工程でエラーはでませんでした。）



## CMakeのインストール

以下のコマンドで `3.12` をインストールします。

```bash
choco install cmake --version=3.12.4 --installargs 'ADD_CMAKE_TO_PATH=System'
```

`ADD_CMAKE_TO_PATH` をつけ忘れた場合は、以下のパスを環境変数 `PATH` に手動で追加してください。

- `C:\Program Files\CMake\bin`



（ちなみに、私のPC環境にはすでに `3.19.5` がインストール済みだったため、改めて3.12はインストールしませんでしたが、後工程でエラーはでませんでした。）



## SWIG 3.0.12のインストール

以下のコマンドで `3.0.12` をインストールします。

```bash
choco install swig --version=3.0.12
```

試しに、最新版の `4.0.2` をインストールしたところ、後工程で以下のようなエラーが発生してしまうので、 `3.0.12` をインストールしましょう。

```
com.autodesk.fbx\Source\fbxproperty.i(87): error : A deprecated csdestruct typemap was found for FbxPropertyFlags, please remove it and replace all csdestruct, csdestruct_derived and csfinalize typemaps by the csdispose, csdispose_derived, csdisposing and csdisposing_derived typemaps.
```



## Python 2.7のインストール

Python 2.7をインストールします。以前、インストール方法の記事を書いたことがあるので、ご参照ください。

[WindowsにPython2.7とPython3.7が共存できるようにインストールする](https://qiita.com/segur/items/23f276320216c3aa7cf7)

※Python 3系のインストールは不要です。



## Visual Studioのインストール

[Visual Studio公式サイト](https://visualstudio.microsoft.com/ja/vs/older-downloads/) から `Visual Studio Community 2017` をインストールします。

※READMEには `Visual Studio Community 2015` と書いてありますが、 `2017` でないとダメでした。

以下も追加でインストールする必要があります。

- `.NET デスクトップ開発`（C# sdk）
- `C++ によるデスクトップ開発`（C++ sdk）
- `ユニバーサル Windows プラットフォーム開発`（Universal Windows App Development Tools）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221845/c4dc4f76-2ec6-4f4d-027b-ddc0879a4efe.png)



## FBX SDKをインストール

[FBX SDK 公式ページ](https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2020-0) から `FBX SDK 2020.0.1 VS2017` のインストーラーを入手してインストールしてください。

※Python版ではなくC++版をインストールしてください。

インストールできたら、以下のパスを環境変数 `PATH` に追加してください。READMEには記載がありませんが、後工程でCMakeが参照するため、この手順は必要です。

- `C:\Program Files\Autodesk\FBX\FBX SDK\2020.0.1\lib\vs2017\x64\release`



## ビルドする

`com.autodesk.fbx` フォルダーで以下のコマンドを実行します。READMEには `build.cmd` と書いてありますが、そのようなファイルは存在しないためご注意ください。

```bash
python build.py
```

`build/install/com.autodesk.fbx` フォルダーが生成されていれば成功です！

### エラーが出た場合

もし、エラーが発生した場合は、エラーメッセージを読んで1つずつ修正していきましょう。

`File Not Found` のようなエラーメッセージが表示されている場合、環境変数 `PATH` の定義漏れが濃厚です。

また、再度ビルドする際には、 `build` フォルダーを削除した上で実施した方がよいです。私の環境ではこれによってエラーメッセージが消えたこともありました。


## Unityプロジェクトに導入する

生成された `com.autodesk.fbx` フォルダーを、使用したいUnityプロジェクトの `Packages` フォルダーの直下にコピーすればOKです。

Unityでプロジェクトを開いた際に、Consoleに以下のようなエラーが発生する場合があります。

```
Assembly has reference to non-existent assembly 'UnityEngine.TestRunner' (Packages/com.autodesk.fbx/Tests/Runtime/BuildTestsAssets/FbxBuildTestAssets.asmdef)
```

`FbxBuildTestAssets.asmdef` をInspectorで開き、 `Test Assemblies` をONにして `Apply` すれば、エラーは消えます。



# さいごに

いろいろつまづきポイントがありましたが、何とかビルドできてよかったです！

作業にあたり、以下の記事を参考にさせていただきました。ありがとうございました！

- [com.autodesk.fbx](https://github.com/Unity-Technologies/com.autodesk.fbx )
- https://github.com/OSGeo/gdal/issues/1725