FBX SDK Pythonを使ってプログラムを作るにはどんなスキルが必要なの?


FBX SDK Pythonを使ってプログラムを作るにはどんなスキルが必要なの?

3DCG知識ゼロのプログラマー(仮にAさんとします)に、「FBX SDK Pythonを使ってプログラムを作るにはどんなスキルが必要か教えてください」と言われたので、簡単なまとめ資料を作りました。

意外と同じ悩みを持つ人が他にもいるかもしれませんので公開します。

Aさんにとってわかりやすい表現となるように資料を作りましたので、用語解説があまり正確ではないかもしれません。なにとぞご了承ください。

大きく3つのカテゴリーに分けました。

  • 数学
  • 3DCG
  • プログラミング

数学編

3DCGやプログラミングの経験があったとしても、数学スキルがないとFBX SDK Pythonを利用するのは難しいです。まずは数学の勉強から始めることをオススメします。

3次元ベクトル

(x,y,z)の3つの数値で、3次元空間内の位置や方向を表現する手法です。

3次元ベクトルの加算・減算・内積・外積はよく使うので、抑えておいた方がよいです。

ディグリー[°]とラジアン[rad]

どちらも角度の単位です。180°=π[rad]になります。

ラジアンは三角関数を理解するための前提知識となります。

三角関数

sin, cosのことです。

オイラー角を計算するための前提知識となります。

オイラー角

3回の回転で回転方向を表現する手法です。


※Wikipediaから引用

「どの軸をどの順番で回転させるか?」で、 z-y-xz-x-y 等の表現方法があり、全部で12通りあります。

以下の記事が詳しいです。
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E8%A7%92

クォータニオン(四元数)

(x,y,z,w)の4つの数値で回転方向を表現する手法です。

クォータニオンの乗算や共役クォータニオン等を抑えておくとよいと思います。

以下の記事が詳しいです。
https://qiita.com/kenjihiranabe/items/945232fbde58fab45681

右手系と左手系

3次元座標系の向きの話です。

これによってベクトル・クォータニオンの正負が変わってしまいますので、注意が必要です。

以下の記事がわかりやすいです。
https://ja.wikipedia.org/wiki/%E5%8F%B3%E6%89%8B%E7%B3%BB

どちらもよく登場しますので、間違えないように注意する必要があります。

3DCG編

数学とプログラミングの経験があっても、3DCG関連の知識がないと、FBX SDK Pythonを利用するのは難しいです。

ここでは3DCG関係の知識・スキルを列挙します。

y-upとz-up

天空方向がy軸なのか、z軸なのかという話です。

y-upとz-upどちらもよく登場しますので、間違えないように注意する必要があります。

メートル単位とセンチメートル単位

長さの単位が、1メートルなのか1センチメートルなのかという話です。

どちらもよく登場しますので、間違えないように注意する必要があります。

スケルトン(ボーン・ジョイント・アーマチュア)

人型キャラクターの骨格のことです。

たとえば、右肩を動かせば、右肘も追従して動きます。しかし、右肘を動かしても、右肩は動きません。

そういった関節同士の関係は、右肩→右肘→右手首といった階層構造で表現します。

関節1つ1つに回転方向(クォータニオンやオイラー角)を設定することで、全身のポーズ(姿勢)を決めることができます。

詳しくは以下をご覧ください。
https://styly.cc/ja/tips/blender-modeling-start5-2/

Tスタンス

Tスタンスとは、人型キャラクターのポーズの一種です。初期姿勢としてよく使われます。

アニメーションカーブ

横軸を時間軸、縦軸を変化量とする領域に描かれる折れ線グラフのことです。

たとえば関節のオイラー角の時間変化をアニメーションカーブとして記録します。

詳しくは以下をご覧ください。
https://docs.unity3d.com/ja/2018.4/Manual/animeditor-AnimationCurves.html

フレームレート

1秒間に何個のフレームがあるかということです。

30や60がよくつかわれます。

FBX

3DCG系のファイルフォーマットです。

ポリゴン・スケルトン・アニメーションカーブ等を保存できます。

プログラミング編

FBX SDK Pythonを扱うのに必要なプログラミング関係スキルもまとめました。

Python

まずは、Pythonを使える必要があります。

下記のレッスンがオススメです。
https://dotinstall.com/lessons/basic_python_v4

FBX SDK Python

当たり前ですが、FBX SDK Pythonを導入する必要があります。

詳しくは以下をご覧ください。

パッケージ管理ツール

FBX SDK Pythonと直接は関係ありませんが、Pythonのライブラリを管理するツールを導入した方がよいです。

個人的にはPoetryがオススメです。

詳しくは以下が参考になります。
https://qiita.com/sk217/items/43c994640f4843a18dbe

テストフレームワーク

FBX SDK Pythonと直接は関係ありませんが、単体テストを書くためのフレームワークを導入するかと思います。

個人的にはPytestがオススメです。

詳しくは以下が参考になります。
https://dev.classmethod.jp/server-side/python/pytest-getting-started/

さいごに

ずらずらと列挙させていただきました。

未経験からとなると非常に遠い道のりですが、がんばりましょう!

参考になりましたら幸いです。