HOME

モーションFBXのフレーム数を取得

解析目的で全モーションを動かすような事例を考え、インポートしたアニメーションからフレーム数を参照したい

環境

Houdini Indie 20.5.410

テストに使ったデータ

mixamo
https://www.mixamo.com/

ClipInfoから算出する

Fbx Animation Importノードから入力された情報を確認するとdetailにclip_infoというアトリビュートが追加されている。

追加された clip_info detail attribute

公式ドキュメントに記載されているように、FBXで保存されたアニメーションの範囲を保存している値。

「range」, 「rate」, 「source_range」, 「source_rate」の4つの値があり、このうちsourceが付く2種類はFBXに保存されているフレームレートでの値。
range、rateが現在シーンのフレームレートに換算されている際の値になる。試しにシーンのFPSを変更するとrateの値も変わる。

シーンFPSの変更でrateの値が変わり、source_rateは変わらない

これをフレームに直して入力されたアニメーションのフレーム数を参照する。
※注意書き:明確な計算方法として記載されたページが見つからなかったのでもしかすると間違ってる可能性もあります…。

dict clip_info = detail(0, "clipinfo", 0);

u@range = clip_info["range"];
f@rate = clip_info["rate"];

f@animation_length = (@range[1] - @range[0])*@rate + 1;
アニメーションのフレーム数が算出できる

MotionClipから取得する

入力した Motion を Motion Clip に変換し、Motion Clip Extractを接続しても参照できた。
ただし MotionClip を作成するのは少し時間がかかる。

Motion Clip ExtractはDetailのclip_infoからフレーム数分動きを抽出できる

ジョイント1つをフレーム数分で抽出したポイント数をアトリビュートとして持たせると前述のclip_infoから算出したものと同じ値になる

f@animation_length = npoints(1);
上述の計算式と同じ値が取得できた

fish_ball

プロシージャル魚類