【AEスクリプト】表示されないエフェクトのランチャー『NO_Category Effects』

メニューのエフェクト欄にはカテゴリー「_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」はエフェクト欄に表示されるカテゴリー「旧バージョン」のものと違い、ガチで廃止された使用非推奨のもののようです。その理由は「マルチフレームレンダーに対応した新バージョンが出たから」とか、さまざまです。
じゃあなぜ存在はしているのか?ですが、完全な想像ですが、「今は最新版に対応できてないが新バージョンを作るつもりがある」とか「消すのがめんどくさい」とかですかねえ…。

「カテゴリーなし」はアニメーションプリセットを使えば普通に出てくるものなので、使用することに問題はないようです。「いろいろなパラメータが集まってるエクスプレッション制御」として使えないこともないです。が、アニメーションプリセットのメンツの更新がいつあるかわからないので、バージョンが変わると使えなくなったりしそうではあります。ここら辺はぼく自身アニメーションプリセットをあまり使わないので、メンツの更新があるのか無いのかわからないのですが…。

という誰得スクリプトです。何かのときにもしかしたら役に立つかもしれない、的なものですね。
使用は自己責任でお願いいたします!



よかったらシェアしてね!
  • URLをコピーしました!