見出し画像

[AfterEffects]レイヤーの順番を保ったままコピペしたい

レイヤーを選択してコピー!

そしてペースト!!

は??????


こんなことがよくあります。
AEではレイヤーは選択順に配列に格納されていき、ペーストすると格納された順に上から貼り付けられていくんですね。画像の例は適当な順に選択してコピペした状況です。

AEで映像作る際って大体下から上にレイヤーを積み上げていくイメージだと思うのですが、その感じで下から上の順でコピーして貼り付けると上下反転してしまいます。これが毎回ストレス(上から順に選択すればいい話なのですが、面倒くさいですね)
同コンポジションなら複製して引きずった方が楽だったり。

それをちょっとスクリプトで解決してみます。

var comp = app.project.activeItem;
var layers = comp.selectedLayers;   

まずはいつも通りコンポジションと選択レイヤーを変数に入れてあげて。

で、このlayersってのがレイヤーの配列になっているわけで、その配列の順番をレイヤー番号順にソートしてあげる処理を書きます。

    function compareFunc(a, b){
       return a.index - b.index;
   }
   layers.sort(compareFunc);

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Javascriptで配列をソートするコードはこちらを参考にしました。

で、これで配列はレイヤー番号の昇順になったのでその配列を元にレイヤーを再選択していきます。

for (i =0; i< layers.length; i++) {
       layers[i].selected = false;  
       layers[i].selected = true;       
               }

これで選択順がレイヤー番号の昇順になりました。


あとはついでにコピーもしてあげたいので

    app.executeCommand(19);

コマンドIDでコピーの処理も追加してあげます。
プロパティリンクと一緒にコピーなら(10310)、相対的なプロパティリンクと一緒にコピーなら(10313)でおそらくできると思います。

これでスクリプトができたので、こいつを適当な名前.jsxで保存。

出来上がったものがこちら


https://note.com/murimi/n/n698ebd0ec409
あとは前に書いたこちらの記事を参考に適当なショートカットにそのスクリプトを割り当てます。
Ctrl+Cに割り当てちゃえば便利かなーと思ったらエフェクトだけコピーすることができなくなってしまったので、それ以外のキーに割り当てるのが無難かと思います

すると、こんな感じでレイヤー順を保ったままコピペできるようになりました。やった~~

適当に書いたスクリプトなので間違ってるところやもっと簡単にできるところなどあるかもしれないですが、一応僕の環境では問題なく動いています。
不具合等により生じたいかなる損害に関しましては一切責任を負いませんのでご了承ください~

それぞれの環境や用途に合わせてカスタマイズして、みなさんもぜひ使ってみてください。


こちらのスクリプトももし良かったらぜひ
https://nisai.booth.pm/

この記事が気に入ったらサポートをしてみませんか?