ReplaceEffect - [レンダー乙女とか]
目次
[レンダー乙女とか]
replaceProperty暫定版 readme.txt
プロジェクト内のエフェクトを一括で置き替えるスクリプトです。
こちらの版には対話メニューがありませんので、目的のエフェクトはご自分でスクリプトを書き換えて設定してください。
ダウンロード
http://www.nekomataya.info/cgi-bin/control.cgi?PAGE=85&ITEM=071119
使い方:
実行前に以下の処理をお願いいたします。
- スクリプト冒頭の置換元・置換先エフェクトの指定の書き換え
置換元は matchName で指定 置換先は matchName および name で指定可能です。matchName推奨初期状態では"ブラー(ガウス)"を"ブラー(滑らか)"に置き替えるスクリプトになっています。
- 同、冒頭の置換スクリプトの修正
パラメータの設定や引き継ぎがなければ特に書き換えなくても大丈夫ですが、ここを置き替えてプロパティの設定ができます。
エフェクト置き換え後に元のエフェクトを削除しますので、置き換え時に元のプロパティを参照して引き継ぐことが可能です。
関数実行時点で元のエフェクトは"tgtProp" 新規のエフェクトは"myProp"で参照できます。
サンプルでは、新しいエフェクトの名前を "__元のエフェクト名(replace)"に変更していますが、nasライブラリなしでこのスクリプトを実行した時、新しい名前が31バイトを超えるとエラーがでます。
その場合は、この一連の処理を書き換えて下さい。(nasライブラリがあれば名前は31バイトでクリップされます)
暫定版なので、サンプルの状態ではキー情報がコピーされません。ご注意ください。
実行
スクリプトの実行前にプロジェクトを開き、置換したいレイヤを選択した状態でスクリプトを実行してください。
プロジェクトウインドウで選択されているアイテムを対象に置換を行います。
アクティブアイテムがあればアクティブアイテム内で置換を行います。
なにも選択されていない状態では、プロジェクト内すべてのアイテムに対して置換を行います。(スイッチで切換可能)
リザルトは、作業が止まらないよう情報ウインドウに書き出されます。
手持ちにないプラグインの一括置換が欲しかったのですが…ご存じの方はご存じの理由により今回急遽作成いたしました。
急造でないしっかりした物はそのうち作成予定です。
なにか問題ありましたら、BBSまたはメールで連絡ください。
--- おことわり このプログラムの著作権は「ねこまたや」にあります。 あなたは、このプログラムのこの著作権表示を改変しないかぎり 自由にプログラムの使用・複製・再配布などを行うことができます。 あなたは、このプログラムを自己の目的にしたがって改造することができます。 その場合、このプログラムを改造したものであることを明記して、この著作権表示を 添付するように努めてください。 このプログラムを使うも使わないもあなたの自由なのです。 作者はこのプログラムを使用したことによって起きたいかなる 不利益に対しても責任を負いません。 あなたは、あなたの判断と責任においてこのプログラムを使用するのです。 なんか、困ったことがあったら以下で連絡してもらえると何とかなるかもしれません。 http://www.nekomataya.info/ mailto:nekomata_ya@mac.com
ソース
/*(レイヤプロパティ置換)
レイヤプロパティ置き替えスクリプト暫定版(2009/05/13)
このスクリプトの動作は以下の変数を編集して決定して下さい。
これはGUIなしの版です。GUI版は選択動作が発生するので別スクリプト
このスクリプトを使う場合はこの下を編集して置換するプロパティを決定してください。
現在プロジェクトウインドウで選択したアイテムの内コンポアイテムが操作の対象です。
選択アイテムがなくアクティブアイテムがある場合はアクティブアイテムが操作対象になります。
選択アイテムもアクティブアイテムもない場合は、"setAllItems"の値で動作が変わります。
true > なにも選択していない時全アイテムを操作対象にする。
false > なにもしない
お好きな方に設定してください。
** このスクリプトは、nasライブラリがなくても動作します。
2009.05.13
カメラ・ライトレイヤ等のエフェクトを持たないレイヤを無視するコードを追加
AE7以降でエラーが出ることが判明したけど未修正
*/
var setAllItems =true; //操作フラグ
var undoName ="エフェクト置換"; //undoに使う名前
var tgtName ="ADBE Gaussian Blur"; //置換元エフェクトのmatchName
var dstName ="ADBE Fast Blur"; //置換先エフェクトの指定 matchName or name
/* 変換先は matchName と name どちらの指定も可能です */
// nasがインストールされていない場合を判定
try{if(nas){;}}catch(err){var nas=new Object();nas.biteClip=false;}
/*
この下は実際の置換スクリプトです
以前のプロパティを引き継ぐ必要がある場合は"tgtProp"のプロパティを参照できます。
ここを書き換えて操作を指定して下さい
ここでのPropはエフェクトのことです。
引数は、置き替えるエフェクト
戻値は、作成したエフェクトそのもの
*/
function replaceProp(tgtProp){
var myProp=tgtProp.parentProperty.addProperty(dstName);//エフェクトかける
myProp.property("ブラー").setValue(tgtProp.property("ブラー").value);//元の値を引き継ぎ
// myProp.property("ほげふが").setValue("もごもご");//必要に応じてプロパティに値をセット
//マーカーとして名前を変更
if(nas.biteClip){
myProp.name=nas.biteClip("__"+tgtProp.name,22)+"(replace)";
}else{
myProp.name="__"+tgtProp.name+"(replace)";
};
return myProp;//作成したプロパティを返す
}
//=====================================================================以下変更不要っぽい
/*
指定されたアイテムの中からコンポを抜き出し
コンポのレイヤに対して指定のスクリプトを実行するスクリプト
アイテム指定がない場合はapp.project.activeItemが対象
引数: 実行する関数(アイテムの指定はセレクト状態を参照)
戻値: サブスクリプトのリザルトを配列で
*/
var eachLayer=function(action){
var myResult =new Array;
var bkupArray =new Array;//選択状態の保存配列
for(var idx=0;idx<app.project.numItems;idx++){bkupArray.push(app.project.item(idx+1).selected);};//現在の選択状態を保存
//アイテムの選択 選択が無い状態ではアクティブアイテムを選択 それもなければ、オプションで 全アイテムを選択/処理しない
if(app.project.selection.length==0){
if(app.project.activeItem){
app.project.activeItem.selected=true;
}else{
if(setAllItems){
for(var idx=0;idx<app.project.numItems;idx++){app.project.item(idx+1).selected=true};//全部選択
};//フラグなけりゃ何もしない
}
}
// 前処理してなおかつ対象アイテムがあれば設定されたアクションを実行
// この時点で選択アイテムがなければ何もしない
if(app.project.selection.length){
app.beginUndoGroup(undoName);
for(var idx=0;idx<app.project.selection.length;idx++){
myItem=app.project.selection[idx];
if(myItem instanceof CompItem){
for(var id=0;id<myItem.layers.length;id++){myResult.push(action(myItem.layer(id+1)));};
};//アイテムがコンポだった場合のみ各レイヤを引数にaction()を実行して リザルトを積む
};
for(var idx=0;idx<app.project.numItems;idx++)
{
app.project.item(idx+1).selected=bkupArray[idx];
};//選択状態を復帰
app.endUndoGroup();
};
return myResult;//なにも実行していな時は空配列をリザルト
}
/*
レイヤに特定のエフェクトが あったら 別のエフェクトに 置き換える
tgtNameに検索するエフェクトのmatchNameを設定して
関数replaceEffectのエフェクトを書き換えて下さい。
関数内に必要なプロパティがあれば値の設定をお願いします。
関数replaceEffects()内ではオリジナルのエフェクトは tgtProp として参照可能です。
引数: レイヤアイテム
戻値: 置き替えたエフェクト数
*/
var replaceEffects=function(myLayer){
if(! myLayer.property("エフェクト")){
return 0;//レイヤにエフェクトがない場合は即戻り
}else{
var replacedIndexes=new Array();
var myEffects=myLayer.property("エフェクト");
for(var idx=1;idx<=myEffects.numProperties;idx ++){
var targetEffect=myEffects.property(idx);
if( targetEffect.matchName==tgtName){
// alert(targetEffect.propertyIndex +" : "+tgtName);//debug
/* ここで新エフェクトを挿入 */
var newEffect=replaceProp(targetEffect);//新しいエフェクトを作成
newEffect.moveTo(targetEffect.propertyIndex+1);//作ったエフェクトをターゲットの直下に移動
replacedIndexes.push(targetEffect.propertyIndex);//リザルト積む
targetEffect.remove();// ターゲット消去
};
}
return replacedIndexes.length;
}
}
if(app.project){
myReplaced=eachLayer(replaceEffects)//
myCount=0;
for(var idx=0;idx<myReplaced.length;idx++){myCount+=myReplaced[idx]};
writeLn(myCount.toString()+"個のエフェクトを置換しました。");
}
;//
Nekomataya/kiyo 2007/11/30
Powered by YukiWiki 2.1.2a / Modified by Nekomataya.

