飛び飛び連番調教その弐。
昨日書いたやつの、ちょっと改良したバージョンです。
ええと、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様を見習え。
いや見習うな。
.
| 固定リンク
| コメント (2)
| トラックバック (0)
最近のコメント