« 飛び飛び連番調教。 | トップページ | 貴方のセンターを私に下さい。 »

2012年4月12日 (木)

飛び飛び連番調教その弐。

昨日書いたやつの、ちょっと改良したバージョンです。
ええと、AEで、歯欠け飛び飛びの連番としてインポートされているフッテージを、イッキにアルファベット順にする(つまりちゃんと連続したシークエンスになる)スクリプトです。





JavaScript
------------------------------------------------------------

//    フレームレート入力時のデフォルト値
DefFrameRate = 12;

var aTargetItemsSelected = new Array();
var aTargetItemsAll = new Array();
var oProjectItems = app.project.items;
//プロジェクト内の全アイテム
for ( var i=1; i<=oProjectItems.length; i++ )
{
    var oItem = oProjectItems[i];
   
   
//    フッテージアイテムであり、静止画でないなら、aTargetItemsAllに拉致
    if ( oItem instanceof FootageItem && oItem.mainSource.isStill == false )
    {
        aTargetItemsAll.push( oItem );
       
       
//    選択もされてたら、さらに aTargetItemsSelected にも拉致
        if ( oItem.selected )
        {
            aTargetItemsSelected.push( oItem );
        }
    }
}


//    選択されてるものがゼロなら、aTargetItemsAllが 対象
//    選択されたら、aTargetItemsSelected が対象
//    いずれも aTargetItems に集約

if ( aTargetItemsSelected.length == 0 )
{
    var aTargetItems = aTargetItemsAll;
}
else
{
    var aTargetItems = aTargetItemsSelected;
}


//    集約されたアイテムを処理
if ( aTargetItems.length != 0 )
//ゼロじゃなければ処理
{
    NewFrameRate = prompt( "フレームレート入力汁", DefFrameRate );
    if ( NewFrameRate )
    {
        NewFrameRate = parseFloat( NewFrameRate );
       
        ResultCount = 0;
        for ( var i=0; i<aTargetItems.length; i++ )
        {
            FuckinReplace( aTargetItems[i], NewFrameRate );
            ResultCount ++;
        }
        alert( "処理したフッテージの数は " + ResultCount + " だそうです。" + "\r\n" + "フレームレートは " + NewFrameRate + " にしたそうです。" );
    }
    else
    {
        alert( "ゴルァ" );
    }
}
else
    //    ゼロなら脅す
{
    alert( "処理対象アイテムが無いのでセーブせずに今すぐマシンをシャットダウンします。慌てて下さい。" );
}


//    差し替え & フレームレート設定
function FuckinReplace( oFootage, NewFrameRate )
{
    var oFile = new File ( oFootage.file );   
//    FootageItem.file = ファイルパスだそうですがほんとですか。
    oFootage.replaceWithSequence( oFile, true ); 
//    第2引数 = アルファベット順  というのは真実ですか。
   
   
//    フレームレートに文字とか変なもの入力していたら NaN になっているので、その場合は元のフレームレートを変更しない
    if ( !isNaN( NewFrameRate ) )
    {
       
//    FootageItem のフレームレートをいじる時は mainSource オブジェクトの conformFrameRate をいじれって死んだばあちゃんが言ってた。
        oFootage.mainSource.conformFrameRate = NewFrameRate;
    }
}

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

ダウンロード ToviToviRengbangChowkyow2.jsx (2.6K)




・フッテージを選んでいた場合、そのフッテージのみが処理対象になるようにした

・何も選んでなければ、プロジェクト内の全フッテージが処理対象になるようにした
(いずれも、連番フッテージのみ)

・フレームレートを入力するようにした



とかなんとか。

昨日のバージョンより確実に使いやすい。
2コマ打ちの素材と1コマ打ちの素材が混ざったプロジェクトで、昨日のだと、1コマ打ちの素材まで2コマなフレームレート( 12fpsとか )に変えられてしまっていましたので。

最初にフレームレートの入力を促されますが、ここで数値ではなく文字列など変なものを入力すると、フレームレートは元のまま変更されません。

数値しか受け付けない入力ダイアログとかって、できるのかな。 XSI なら、例えば整数型で作ったパラメータは小数点も入力できなくなっているし、もちろん文字列も入力できないじゃないですか。それと同じこと、AE のスクリプティングでもできるのかなーと。 知っているお方はなにとぞ教えて下さい。






ふう。
少しずつ書いている。
少しずつ前進してますが。
なんだかな。

AE で取得した配列って、1スタートなんですねえ。
なんでやねん。

でも自分で配列作ったら、当然 0スタートなんですよね。
ええい面倒だ。
これに気付かず、俺などは、なぜ動かないどこも間違ってねえぞゴルァとジタバタするわけですよ。


うーむ、やはり AE のSDK はアレだと思うんですよ。
SDKマニュアルもなんか古いのしかないし、
記述も非常にわかりにくい。
必要なオブジェクト、プロパティ、メソッドもあまり用意されてないように見える。




XSI様を見習え。



いや見習うな。












.

|

« 飛び飛び連番調教。 | トップページ | 貴方のセンターを私に下さい。 »

コメント

XSIは理想とは言えないが、他のソフトを使ってみるとXSIはまだマシとすぐ分かります。XSIのSDKマニュアルもちゃんとしている方だと思いますよ。

投稿: myara | 2012年4月13日 (金) 00時47分

うん、XSI のマニュアルはロジカルでいいね。少なくともAEよりは何倍もいい。

投稿: 潤樹 | 2012年4月13日 (金) 02時10分

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 飛び飛び連番調教その弐。:

« 飛び飛び連番調教。 | トップページ | 貴方のセンターを私に下さい。 »