今回はその5でもちらっと紹介したFBPropertyListについて簡単に説明します。
FBPropertyListが何かといえばこのpropertyウィンドウに表示されているプロパティのことです。
このプロパティの項目はオブジェクトによって異なります。カメラならこんな感じです。
オブジェクトの全プロパティを知りたい時にはこんな感じで調べれます。
■オブジェクトのプロパティを調べる(シーン内に”Camera”が存在するとき)
[python]
from pyfbsdk import FBFindModelByLabelName
lCam = FBFindModelByLabelName("Camera")
for lProper in lCam.PropertyList:
print lProper.Name
[/python]
プロパティウィンドウに表示されている項目は全て操作可能なのでその4で取り扱ったTRSも扱えます。
■プロパティリストを使ってTranslationを動かす
[python]
from pyfbsdk import FBFindModelByLabelName,FBVector3d
lCam = FBFindModelByLabelName("Camera")
lTrans = lCam.PropertyList.Find("Translation (Lcl)")
print lTrans.Data
#lTrans.Data[0] -= 20 #この書き方では設定できない
lVec = lTrans.Data
lVec[0] -= 20
lTrans.Data = lVec
print lTrans.Data
[/python]
FBPropetyListのDataアトリビュートはプロパティのオブジェクトを返してくれます。
この例では、lTrans変数が受け取っているオブジェクトはFBVector3dになります。
故に要素ごとに値を設定できるはずなのですが
lTrans.Data[0] -= 20
を実行しても何も変化が起きませんでした。。。もしかしてAnimationKeyを打てばうまくいくのか?
面倒ですがlTrans.Data = FBVector3d()の形式で設定するのが吉です。
ただし、プロパティリストからの値の変更できる項目はLocal値!
なのでGlobal値を変更したい場合はSetVectorを使いましょう。