メニューのエフェクト欄にはカテゴリー「_Obsolete」と「カテゴリーなし」のエフェクトは表示されません。それらを適用できるスクリプトを作ってみました。
以下のコードをテキストにコピーして、拡張子を.jsxにすれば完成です。
右上のマークをクリックすれば全文をコピーできます。
(function (aGbl){
//メインウィンドウ作成関数。
function mCreateUI(aObj) {
var mPW = (aObj instanceof Panel) ? aObj : new Window("palette", "NO_Category Effects", undefined);
mPW.preferredSize = [200, 200];
mPW.margins = [4, 4, 4, 4];
mPW.spacing = 10;
mPW.alignment = ["fill", "fill"];
mPW.mBt = mPW.add("button {text: '',preferredSize: [180, 20] }");
mPW.mBt.text = "NO_Category";
mPW.mLst = mPW.add("listbox {preferredSize: [180, 400] }");
mPW.mLstInfosObj = {};
return mPW;
}
//--------------------------------------------------------------------------------------------
//mPnlという名でメインウインドウを作成。
var mPnl = mCreateUI(aGbl);
if (mPnl instanceof Window) {
mPnl.center();
mPnl.show();
} else if (mPnl instanceof Panel) {
//UIパネルの場合は以下をしないと自動レイアウトされない。
mPnl.layout.layout(true);
}
//初回リフレッシュ。
mRfrshList( "" );
//リストをダブルクリックでエフェクト適用。
mPnl.mLst.onDoubleClick = function () {
try {
var mLstSelIdx = mPnl.mLst.selection.index;
var mMthNm = mPnl.mLstInfosObj.mMns[mLstSelIdx];
var mAi = app.project.activeItem;
var mSl = mAi.selectedLayers[0];
mSl.effect.addProperty(mMthNm);
//最後にビューワーをアクティブにしておく。
app.activeViewer.setActive();
} catch (e) {
alert(e.message + "\n" + e.line + "\n" + e.fileName);
}
}
//ボタンクリックで検索名変更&リスト更新。
mPnl.mBt.onClick = function () {
try {
var mSrchNm = null;
if( mPnl.mBt.text === "_Obsolete" ){
mPnl.mBt.text = "NO_Category";
mSrchNm = "";
}else if(mPnl.mBt.text === "NO_Category" ){
mPnl.mBt.text = "_Obsolete";
mSrchNm = "_Obsolete";
}
mRfrshList( mSrchNm );
} catch (e) {
alert(e.message + "\n" + e.line + "\n" + e.fileName);
}
}
//--------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------
//使用関数。
//リストをリフレッシュする関数。
function mRfrshList( aCtgyNm ){
//ウインドウのObj内容(名前sとマッチネームs)を更新。
mPnl.mLstInfosObj = mGetEftNmAndMns(aCtgyNm);
//リストを全削除する。
mPnl.mLst.removeAll();
//リストに名前を追加する。
for (var i = 0; i < mPnl.mLstInfosObj.mNms.length; i++) {
mPnl.mLst.add("item", mPnl.mLstInfosObj.mNms[i]);
}
mGetEftNmAndMns( aCtgyNm );
//-----------------------------------------
//エフェクト情報Objを得る関数。
function mGetEftNmAndMns( aCtgyNm ){
var mEfts = app.effects;
var mNms = [];
var mMns = [];
for(var i=0; i<mEfts.length;i++){
if( mEfts[i].category === aCtgyNm ){
mNms.push(mEfts[i].displayName);
mMns.push(mEfts[i].matchName);
}
}
var mObj ={};
mObj.mNms = mNms;
mObj.mMns = mMns;
return mObj;
}
}
})(this);
使い方
jsxを実行すると、ウインドウが出てきます。
レイヤーを選択しつつ、リストをダブルクリックすると適用されます。
一番上のボタンはカテゴリー「_Obsolete」と「カテゴリーなし」の切り替えです。
解説
「_Obsolete」は旧版ではあったが、廃止されたエフェクト群です。
「カテゴリーなし」はアニメーションプリセットなどで適用される、とくに効果がないコントローラー群です。
「_Obsolete」はエフェクト欄に表示されるカテゴリー「旧バージョン」のものと違い、ガチで廃止された使用非推奨のもののようです。その理由は「マルチフレームレンダーに対応した新バージョンが出たから」とか、さまざまです。
じゃあなぜ存在はしているのか?ですが、完全な想像ですが、「今は最新版に対応できてないが新バージョンを作るつもりがある」とか「消すのがめんどくさい」とかですかねえ…。
「カテゴリーなし」はアニメーションプリセットを使えば普通に出てくるものなので、使用することに問題はないようです。「いろいろなパラメータが集まってるエクスプレッション制御」として使えないこともないです。が、アニメーションプリセットのメンツの更新がいつあるかわからないので、バージョンが変わると使えなくなったりしそうではあります。ここら辺はぼく自身アニメーションプリセットをあまり使わないので、メンツの更新があるのか無いのかわからないのですが…。
という誰得スクリプトです。何かのときにもしかしたら役に立つかもしれない、的なものですね。
使用は自己責任でお願いいたします!