今回は実践的な項目としてFBObjectへのplot方法を書きます。
意外に日本語ページで説明されていないのでびっくりしています。
plotと一言で言っても多岐にわたりますが今回はその中でも使用頻度の高そうな
PlotTakeOnSelectedProperties
について書きます。
まず、plotに絶対に必要なクラスはたった2つ
■絶対に必要なクラス
[python]
FBSystem
FBPlotOptions
[/python]
FBSystemクラスには
CurrentTake
というAttributeがいます。
で、このAttributeが持つ、
PlotTakeOnSelectedProperties(FBPlotOptions)
を使ってplotします。
引数にはFBPlotOptionsを使用します。
このFBPlotOptionsの設定が手動でplotする時のplotウィンドウの内容になります。
実際にスクリプトを動かす要所だけ引き抜くとこんな形になります。
■サンプルスクリプトの骨格
[python]
from pyfbsdk import FBSystem,FBPlotOptions
## plotするObjectを選択する
lOptions = FBPlotOptions()
## plotOptionを設定する
FBSystem().CurrentTake.PlotTakeOnSelectedProperties( lOptions )
[/python]
すでにオブジェクトが選択してある場合は 3行目は無視してください
その他細かい設定をお望みの方はこれらも必要になります。
■その他細かい設定に必要なクラス
[python]
FBRotationFilter #RotationFilterの種類を決めるため
FBTime #PlotPeriodに代入するため
FBTimeMode #plotする時のfpsを決めるため
[/python]
■既存のキューブにplotするサンプル
[python]
from pyfbsdk import FBSystem,FBPlotOptions,FBFindModelByLabelName,FBRotationFilter,FBTime,FBTimeMode
lCube = FBFindModelByLabelName("Cube")
lFPS = FBTime(0,0,0,1,0, FBTimeMode().kFBTimeMode60Frames)
lCube.Selected = True
lOptions = FBPlotOptions()
lOptions.PlotLockedProperties = False
lOptions.ConstantKeyReducerKeepOneKey = True
lOptions.PlotAllTakes = False
lOptions.PlotOnFrame = True
lOptions.PlotPeriod = lFPS
lOptions.PlotTranslationOnRootOnly = True
lOptions.PreciseTimeDiscontinuities = False
lOptions.RotationFilterToApply = FBRotationFilter.kFBRotationFilterUnroll
lOptions.UseConstantKeyReducer = False
FBSystem().CurrentTake.PlotTakeOnSelectedProperties( lOptions )
[/python]
このサンプルではアニメーションがないと実行されてもアニメーションキーは打たれません。
ちなみに豆知識としてkFBTimeModeCustomはいくら好きな値を入力しても
FBTimeModeのAttributeのいずれかの値に丸め込まれます。
custumの存在価値は?って思わず聞きたくなりますよね(^^;
■FBTimeModeのAttribute一覧
[python]
object kFBTimeModeDefault
object kFBTimeMode1000Frames
object kFBTimeMode120Frames
object kFBTimeMode100Frames
object kFBTimeMode96Frames
object kFBTimeMode72Frames
object kFBTimeMode60Frames
object kFBTimeMode5994Frames
object kFBTimeMode50Frames
object kFBTimeMode48Frames
object kFBTimeMode30Frames
object kFBTimeMode2997Frames_Drop
object kFBTimeMode2997Frames
object kFBTimeMode25Frames
object kFBTimeMode24Frames
object kFBTimeMode23976Frames
object kFBTimeModeCustom
[/python]
※追記
さり気なく引数が変わっていたので書いておきます。
MB2014…PlotTakeOnSelectedProperties(FBPlotOptions)
MB2012…PlotTakeOnSelectedProperties(FBTime)
注意点としてMB2012以前では
PlotTakeOnSelectedPropertiesだけでplotOptionの設定を反映できません。
FBPlotOptionsが引数になっているメソッドで一度plotしてあげましょう。