FBX SDKのPython版とC++版の違い
こちらの公式ドキュメントを読んでみて、理解した内容をメモとして残します。
Differences between FBX SDK and Python FBX
Python版には、C++版の関数のほとんどが含まれていますが、以下が異なるようです。
C++版のテンプレート関数とテンプレートクラスはPython版にはない
テンプレート関数っていうのはC++の構文で、こんな感じのやつです。
template<class T> T Add(T a, T b)
{
return a + b;
}
T
の部分は様々な型を受け入れます。
Pythonにはテンプレート関数という構文はないので、代わりに、型ごとに個別の関数を提供しているようです。
配列の出力はC++版ではポインタ、Python版ではリスト
関数が配列のようなデータを出力するケースの場合、以下のような違いがあります。
- C++ ではポインタで出力する
- Python ではリストで出力する
例えば、C++版には GetPolygonVertices
という関数があります。
(参考: FbxMesh Class Reference)
こんな感じの関数です。(関数の中身は適当)
int* GetPolygonVertices(){
int* array = new int[num];
// 何らかの処理
return array;
}
この関数は、Python版では以下のようになるようです。
def GetPolygonVertices():
array = []
# 何らかの処理
return array
C++版のポインタ渡しはPython版ではタプルになる
複数の値を関数が出力するようなケースの場合、以下のような違いがあります。
- C++ は、ポインタで渡した引数に出力する
- Python は、タプル(複数の戻り値)で出力する
例えば、C++版には KeyAdd
という関数があります。
(参考: FbxAnimCurve Class Reference)
こんな感じの関数です。(関数の中身は適当)
int KeyAdd(KTime pTime, int *pLast){
// 何らかの処理
return index;
}
この関数の出力は以下の2つあります。
-
index
: 戻り値 -
pLast
: ポインタ渡しの引数
この関数は、Python版では以下のようになるようです。
def KeyAdd(KTime pTime):
# 何らかの処理
return index, pLast
1つ目の戻り値が index
で、2つ目の戻り値が pLast
になりました。
さいごに
C++とPythonの文法の違いが比較できて面白いですね。