DROP FRAME EXP
ー[ 2018.06.17 AE Script ]ー
▼INTRODUCTION 作品紹介
選択したプロパティにコマ落としするエクスプレッションを書き込みます。(複数のレイヤー選択に対応しています。)
3Dセルルック作品では作画の動きに似せようとしてエフェクトもコマ落としすることが度々あるのですが、エクスプレッションは複数選択されたプロパティにコピー&ペーストができないため作業効率アップのために作成したスクリプトです。
起動後に何コマ落としにするか選択してください。アニメーションの調整が済んだらキーフレームに変換するのも良いでしょう。
▼Source code 公開
//選択レイヤーのプロパティ情報を取得--------------------------------------------------------
function getLayer()
{
var ret = null;
var ac = app.project.activeItem;
if (ac instanceof CompItem) {
ret = ac.selectedProperties;
}
return ret;
}
//プロパティを選択していなければアラートが出る----------------------------------------------
function showDialog()
{
var lyrs = getLayer();
if ( (lyrs==null)||(lyrs.length <= 0)){
alert("プロパティを選択してください。",this.cap);
return;
}
//ウィンドウパネルと各種ボタンの設定----------------------------------------------------
var w = new Window("palette","DropFrameEXP",[0,0,170,240]);
w.center();
var panel = w.add("panel",[10,10,160,185],"Select Frame");
var b1 = w.add("button",[20,35,150,75],"2コマ");
var b2 = w.add("button",[20,85,150,125],"3コマ");
var b3 = w.add("button",[20,135,150,175],"4コマ");
var b4 = w.add("button",[20,195,80,225],"keyfr変換");
var b5 = w.add("button",[90,195,150,225],"Close");
//2コマ落としにするエクスプレッションを追加----------------------------------------------
b1.onClick = function (){
var Exp = "value_at_time(Math.floor(time*12)/12)";
var undoStr = "Set Expression";
app.beginUndoGroup(undoStr);
var arr=getLayer();
for (var i=0; i<arr.length; i++)
if (arr[i]) arr[i].expression=Exp;
app.endUndoGroup();
};
//3コマ落としにするエクスプレッションを追加----------------------------------------------
b2.onClick = function (){
var Exp = "value_at_time(Math.floor(time*8)/8)";
var undoStr = "Set Expression";
app.beginUndoGroup(undoStr);
var arr=getLayer();
for (var i=0; i<arr.length; i++)
if (arr[i]) arr[i].expression=Exp;
app.endUndoGroup();
};
//4コマ落としにするエクスプレッションを追加----------------------------------------------
b3.onClick = function (){
var Exp = "value_at_time(Math.floor(time*6)/6)";
var undoStr = "Set Expression";
app.beginUndoGroup(undoStr);
var arr=getLayer();
for (var i=0; i<arr.length; i++)
if (arr[i]) arr[i].expression=Exp;
app.endUndoGroup();
};
//キーフレームに変換を追加-------------------------------------------------------------
b4.onClick = function(){
app.executeCommand(2639);
};
//閉じるを追加---------------------------------------------------------------------------
b5.onClick = function(){
w.close();
};
//-------------------------------------------------------------------------------------------
var r = w.show();
this.show = function()
{
return r
}
}
var sd = new showDialog;