FBX Python Bindings を maya2023向けにビルドする
fbx.pyd および fbxsip.pyd をwindowsでビルドする手順を紹介
目次
Autodesk より配布されている FBX関連ファイル、そのなかに PythonよりFBXを読み書き操作するためのモジュールを含む Python Bindisgがある。このモジュールは Python のバージョンごとに用意する必要がある。(後方互換あるバージョンもあるケースもあるのだが割愛)しかし、事前に用意されている Bindings は Python3.7 のみであり、それ以外のバージョンでは利用不可だ。maya2023の Python 3.9からは使用不能だ。そのうえ公式サイトにはビルド手順が紹介されておらず、また用意されているファイルは罠だらけだ。ここに記録を残しておく。 なお Windows環境についてのみ記載するが、他のプラットフォームでも事情は同じと思われる。
ビルド環境
まずはビルドに必要な環境・コンパイラを用意しよう。Microsoft より、BuildTools for Visual Studio のインストーラををDLし読み込みたい Python環境に合わせたバージョン、ここでは Python3.9に必要な 2019 をインストールしておく。 Python3.9 環境自体も必要なので用意する。あるいは mayapy を用いてもよいが、パスの設定手間なのでこの記事では割愛。
関連ファイルの収集
つぎにビルドに必要なファイルを用意しよう。 Autodesk のサイトより
- FBX SDK 2020.3.2 VS2019
- FBX SDK 2020.3.2 Python
- FBX SDK 2020.3.2 Python Bindings
および
- SIP v4 4.19.13 (←バージョンが重要)
以上をDL & インストールしておく。なお 昔の記事では Riverbank よりSIP をDLするように案内されていることがあるが、現在は必要なバージョンにたどり着くのが難しいため sourceforge よりアーカイブをDLすることをおすすめする( https://www.autodesk.com/company/legal-notices-trademarks/open-source-distribution にも置いといてくれよなー )。v4最終バージョンや、v5, v6ではビルド不可なので注意しよう。
これらのファイルを ファイルパスにスペースを含まない場所に配置する (用意されているビルドスクリプト(後述)がスペースに対応できていないため。まじかよ)ここでは d:\fbx
に配置したとする。解凍直後のフォルダにスペースが含まれている場合、リネームしておく
ビルドスクリプトの編集
用意されているファイル PythonBindings/2020.3.2/PythonBindings.py
を編集する。(開いていきなりびっくりするが)コンパイラバージョンがハードコーディングされているので修正する。
- vsCompiler = "vs2015"
+ vsCompiler = "vs2019"
vcvars.bat へのパスも buildtools に対応していない。必要に応じ各自のパスに修正する。
def vcvars(platform_tag):
+ # ちゃんとするの面倒だった
+ return "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat"
+
prefix = vcCompiler.replace('vc', 'VS')
vc_common_tool_dir = os.path.expandvars('$'+prefix+'COMNTOOLS')
if platform_tag == 'FBX_X64':
result = os.path.normpath(os.path.join(vc_common_tool_dir, '../../VC/bin/amd64/vcvars64.bat'))
else:
result = os.path.normpath(os.path.join(vc_common_tool_dir, '../../VC/bin/vcvars32.bat'))
return result
ビルド
準備ができたのでビルドスクリプトを実行する
cd /d %~dp0
SET FBX_VERSION=2020.3.2
SET FBXSDK_ROOT=D:\fbx\FBXSDK\%FBX_VERSION%
SET FBXSDK_LIBS_64_FOLDER=D:\fbx\FBXSDK\%FBX_VERSION\lib\vs2019\x64\release
SET SIP_ROOT=D:\fbx\sip-4.19.13
cd D:\fbx\PythonBindings\%FBX_VERSION%
python PythonBindings.py Python3_x64 buildsip
コマンドプロンプトより以上の内容のバッチを実行。あるいは同等のコマンドを発行しビルドする。
成功すると D:\fbx\PythonBindings\2020.3.2\build\Distrib\site-packages
以下に必要な成果物ができあがる。
以上。