2014-10-09

キーフレームにアクセスする

今回も、果たして誰かの役にたっているのだろうか・・・ というかなり備忘録的なpythonに関してです。

あるattributeにアニメーションがついているとして、そのキーフレームにアクセスして値を取得したり、シフトしたりしたいとします。
たとえばその場合、Transform1ノードのtranslateにx,yについている2個目のキーフレームの値を取得したい場合。



nuke.toNode('Transform1')['translate'].animation(0).keys()[1].y
となり、これが、xのアニメーション( animation(0) )の2個目のキーフレーム( keys()[1] )の値( y ) となります。
また、その2番目のキーフレームが何フレーム目に存在しているかってのは、

nuke.toNode('Transform1')['translate'].animation(0).keys()[1].x

となります。実行すると、そのフレームナンバーが返ってきます。
Graph Editor上でのxとy、つまり時間軸とその値です。

また、そのキーフレームの値を変更する場合は・・・

nuke.animation("Transform1.translate.x" , "x", ("2", "10"))

これで、Transform1 ってノードのattribute "translate.x" ( 位置のx座標 ) をフレームナンバー的( x ) に3個目のキーフレーム ( "2" ) を10フレーム目 ( "10" ) に移動させるといったことになります。

nuke.animation("Transform1.translate.x" , "y", ("2", "-30"))

これで、Transform1 の translate.x の3個目のキーフレームの値を( GraphEditor的にy値を )、-30 にするってことになります。

値を取得する場合は、

animation(i).keys() 

で、値を変更したい場合は、

nuke.animation("ノード名.アトリビュート名" , "コマンド名", (コマンドの種類に応じた引数))

となります。
後者はココが参考になるかと。
http://www.nukepedia.com/python/using-nukeanimation-without-tearing-your-hair-out


No comments:

Post a Comment