AutoDeskが定める3Dデータ標準形式であるfbxは、アバター等の3D形式を扱う際においてデファクトスタンダードとなっていますが、これを扱うためのSDKがAutoDeskにより公開されています。本来はC++のためのものらしいですが、Python用で同じ操作をするための(バインディングというらしいです)ライブラリもあり、そちらの方が簡単そうなので導入してみることにしてみます。
ただしこのSDK、
- Python3.3系または2.7系しか対応していない
- pipでインストールすることが出来ない
という代物でして、最新のPythonをインストールしてpipで一発だぜイェーイという感じではなかったので、Win/Mac両環境において備忘録代わりに手順を示しておきたいと思います。
Windowsの場合
基本的な手順はこの方の記事にあるのですが、一点躓いたポイントがあるのでそこを中心に解説。
まずは https://www.python.org/downloads/ からPythonをインストールする必要がありますが、最新のものだとライブラリが使えないので、旧式のものをインストールする必要があります。また上に挙げた2バージョンのうち、なぜか3.3系はインストーラが公開されていないという謎の状態なので、実質的には2.7系しか選択肢がないということになります。
上の画像は現時点での2.7系での最新(ややこしいな)である2.7.16のインストーラの配布ページになります。予めネタバレをすると、ここで「64bitOSだから当然x64でしょ!」とWindows x86-64 MSI installer
をDLすると後で詰みます。理由はよくわかりません。ぱっと見AMDとIntelの違いかな……と思いましたが、他のライブラリは余裕で動いているので違いそうです。詳しい人教えてください。
「Windows x86-64 MSI installer」の方(x64って書いてるのに……)ではなく「Windows x86 MSI installer」の方をDLしてください。
さて、インストーラを回すと、C:\Python27
というフォルダが出来ているはずなので、その下にあるC:\Python27\Lib\site-packages
にライブラリファイルを入れていきます。FBXSDKのインストーラを回すと以下のようなフォルダが出来るはずなので、
「Python27_x86」(2.7系の32bit)(わかりづらいですがx86は32bitを表します)を選択して、
中のファイルを……
こんな感じにPythonの方のファイルに入れます。
PATH(追加ライブラリを参照するパス)についてはPythonをインストールした時点で通っているはずですが(以下は、sys.pathで確認した図)
もしなければ、sys.path.append(追加したいパス)
で追加できるはず。あまりない状況だとは思いますが……。
さて、これでライブラリがインストールできたので、Python上でfrom fbx import *
を打ってエラーがなければインストール完了。
ちなみに最初64bit版のPythonインストーラでやった所、以下のようなエラーが出ました。
ImportError: DLL load failed: 指定されたモジュールが見つかりません
😭
ちなみに赤丸の部分が、成功したバージョンとの相違点。「手順は解説ページと完全に合っているはずなのに、なぜ……」と半日ぐらい悩み続けていましたが、「このAMD64ってのがよくなさそうだな(適当)」という仮説を基に、ためしに32bitを入れてみたら上手くいった、というのが実際の流れになります。ちなみにOSはWindows10、もちろん64bitです。CPUは(たぶんあまり関係ないですが)Intel Core i9-9900K。
Macの場合
Macの場合はpyenv
を使えるので、導入さえしてしまえばもう少し簡単になります。3.3にも入れられます。pyenv
の導入方法についてはこの方の記事とかがわかりやすいので割愛させてください。
一点PATHで躓いた点があって、簡単にいうと上の解説ページにあったPATHを追加しても通りませんでした。ちなみにPATHについてはMacは、
ユーザーディレクトリ直下にある.bash_profile
というファイルで管理していて、他の解説記事だとコマンドだけでオシャレにこれをPATHを追加する方法がのっていますが、ファイル自体を開いた方がわかりやすいと思うのでその方法でいきます。
ターミナルを開いた状態でopen .bash_profile
と打つと
こんな感じのテキストファイルが開かれると思います。要はここに乗っているテキストがそのままPATH群となる訳です。(といった感じでファイルが目に見えた方が、初めての人は安心するのではないでしょうか?)(少なくとも私はそう😅)
で、ここの末尾に直接テキストでexport PATH="$HOME/.pyenv/shims:$PATH"
を打ち込んで保存! 私の環境ではとりあえずこれでうまくいきました。
後は、pyenvに3.3系のpythonを入れた後、~/.pyenv/versions/3.3.7/lib
にFBXSDKのライブラリファイルを置きます。
こんな感じ。
インポートも上手くいきました。ところでWindowsだとOS環境を示していたところにある[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.4)] on darwin
なる文字列の意味がまったくわかりませんが、いずれわかりたいと思います。
環境は、MacBook Pro (13-inch, 2018)、macOS Mojave 10.14.6、プロセッサ 2.3 GHz Intel Core i5といった感じです。