前に書いた、職場のモーション担当の人が MotionBuilder用に Python を覚えるという事で
自分がサンプルコードを書いてそれを見ながら、モーション担当の人が、あーでもない、こーでもないといじっております。
しかし、これ日本語の資料殆どないね。
元々Pythonが出来る人じゃないと、難易度が凄い高い。
しかも、日本人でPython出来る人って少ないから、更に難易度高そう。
他にも、MotionBuilder用に Python 覚えたい人いるかもしれないので、サンプルなんぞを。
選択されている Component の名前表示 スクリプト
from pyfbsdk import FBSystem
for lComp in FBSystem().Scene.Components:
if lComp != None and lComp.Selected:
# MotionBuilder 2009
print lComp.LongName
# MotionBuilder 7.5
#print lComp.ShortName
バージョンによって、名前の参照方法が違うみたい。
LongName は、 FBModel 以下の階層に存在していて、 Unique name and namespace.
Name は、FBComponent 以下の階層に存在していて、 Unique name.
で、選択されているComponentを取得する方法はもう一通りある。
from pyfbsdk import FBModelList, FBGetSelectedModels
sels = FBModelList()
FBGetSelectedModels(sels, None, True)
for s in sels :
# MotionBuilder 2009
print s.Name
# MotionBuilder 7.5
#print s.ShortName
# 追記
MotionBuilder 7.5 と 2009 で挙動が違ったので報告。
FBSystem().Scene.Components
で、取得するコンポーネント一覧が 2009 だと FBModel オブジェクトを返していたのに
7.5 だと、 FBComponent オブジェクトを返してくる。
FBModel は FBVector3d などの情報を持っているけれど、 FBComponent は持っていないので
処理に必要な情報が足りなかった。
というわけで、バージョンによって微妙に挙動が違う。
MotionBuilder 使っている職場の人の話だと、2009 は、Pythonスクリプト強化とラグドール機能の追加がメインらしいけれど
Pythonスクリプト組める人が少ない上に、ラグドールは殆ど使っている人が居ないらしいので、操作系が使いやすい 7.5 の方が良いのだそうな。
という訳で、7.5 向きのスクリプト情報が多くなるかも。
0 Comments.