« マークされたパラメータの取得2。 | トップページ | なんで 1+18 とか好きなんですか。 »

2012年4月27日 (金)

選択中のキーフレームを現在フレームにポン。

たった今書きました。




JScript
---------------------------------------------------------------

//    現在フレームをゲット
var oPC = Dictionary.GetObject( "PlayControl" );
CurrentFrame = oPC.Current.value;

//    現在選ばれているFカーブを、Fカーブコレクションとしてゲット
var oFcurves = Application.FcurveSelection;

//    ゲットしたカーブをループ
for ( var i=0; i<oFcurves.count; i++ )
{
    var oFcurve = oFcurves(i);

 //    選択中のキーフレームを、キーフレームコレクションとしてゲット
    var oSelectedKeys = oFcurve.SelectedKeys;

 //    ゲットしたキーフレームをループ
    for ( var j=0; j<oSelectedKeys.count; j++ )
    {
       
//    現在フレームをセット
        var oKey = oSelectedKeys(j);
        oKey.Time = CurrentFrame;
    }
}


---------------------------------------------------------------



Fカーブエディタ上でキーフレームを選択し、このスクリプトを実行すると、そのキーフレームが現在フレーム上に移動します。 そんだけ。 以上です。



モーション作業やってると、けっこうこの操作は多いのです。

で、Fカーブエディタの設定で、キーフレームはフレーム上ににスナップするようにしてあるので、マウスでやってるときなんかはあまり問題ないんです。ドラッグして現在フレームに持って来るだけだから。

でもペンタブでやっているとドラッグが正確にできなくて困ることが多いです。特に、キーの値を変えないまま現在フレームまでドラッグするとなると右クリックすることになるので、ペンタブの右ドラッグはかなりやりにくい。 なのでスクリプトを書いてみました。 どの程度便利になるかは未知数でこれから数日の作業でわかるでしょう。 ひとまずブログに載せておきます。




以下若干スクリプティングな話ですが、



現在選択中のFカーブは、 Application.FcurveSelectionプロパティ で取得できます。戻り値はFカーブコレクションです。Fカーブオブジェクト単体じゃないのです。 なのでループして、ひとつずつFカーブオブジェクト単体として取り出し、何かを実行します。


この場合は SelectedKeysプロパティを使って選択中のキーフレームを取得しています。 戻り値はキーフレームコレクションです。 キーフレームオブジェクト単体じゃないです。 なのでまたループして、ひとつずつキーフレームオブジェクト単体として取り出し、何かを実行します。


この場合、キーフレームオブジェクトに効く Timeプロパティを使って、そのキーの時間軸(フレーム)を指定しています。このスクリプトの場合は現在フレームを指定しています。 もう目的のキーフレームにオブジェクト単体としてたどりついているので、何をやろうと自由です。 キーフレームオブジェクトに有効なメソッドとプロパティが、全て使えるということです。

という単純な構造のスクリプトですね。






Fカーブがらみのスクリプトって、実はなんとなく楽しい気がすることが多い。
なんでだろう?
Fカーブオブジェクトにはメソッドやプロパティがいっぱい用意されているから、
色々できそうだというトキメキがあるのかあ。
わかんないけど。





.

|

« マークされたパラメータの取得2。 | トップページ | なんで 1+18 とか好きなんですか。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/54572356

この記事へのトラックバック一覧です: 選択中のキーフレームを現在フレームにポン。:

« マークされたパラメータの取得2。 | トップページ | なんで 1+18 とか好きなんですか。 »