[After Effects]画像の大きさを揃えるエクスプレッション◆スクリプト配布◆
こんにちは合同会社Cinergia(シネジア)のシマダです。
普段僕が仕事で使用しているエクスプレッションをどんどん公開していきます。
「エクスプレッションってそもそも何?」という方はまずはこちらの記事をお読みください。『After Effectsのエクスプレッションって、そもそも何ができる?[エクスプレッション超初級①]』
ということで第1弾のエクスプレッションはこちらになります。
バラバラのサイズの画像の高さもしくは幅を揃えるエクスプレッションになります。
複数の商品を紹介したり、フェスの演者を紹介したりする際に使用できるんじゃないでしょうか?
「Photoshopであらかじめ大きさを揃えておく」「手作業でスケールを合わせる」でもできますが、修正や微調整をする際にまた同じ作業をしなくてはなりません。
エクスプレッションで制御する事で修正や微調整が楽になります。
ベースになるエクスプレッションを書いてみよう
まず高さを揃えるエクスプレッションを書いていきます。
下記エクスプレッションをスケールに打ち込みます。
mySize = thisLayer.sourceRectAtTime().height;
targetLayer = thisComp.layer("monkey");
targetScale = targetLayer.transform.scale;
targetSize = targetLayer.sourceRectAtTime().height;
resultW = targetSize * targetScale[0]/100 / mySize * value[0];
resultH = targetSize * targetScale[1]/100 / mySize * value[1];
[resultW,resultH]
※ targetLayer = thisComp.layer("monkey"); の「monkey」は高さをそろえたいレイヤーの名前を入力します。
では解説していきます。
【 sourceRectAtTime().height 】
【 thisComp.layer("monkey") 】
【 transform.scale 】
【 resultW = targetSize * (targetScale[0]/100)/ mySize * value[0]; 】
【 resultH = targetSize * targetScale[1]/100 / mySize * value[1] 】
【 [resultW,resultH] 】
これで指定したレイヤーと同じ高さに揃えるエクスプレッションができました。
幅を揃えるエクスプレッション
高さではなく幅を揃えたい場合は
「mySize = thisLayer.sourceRectAtTime().height;」と
「targetSize = targetLayer.sourceRectAtTime().height;」の
「height」を「width」に置き換えます。
「mySize = thisLayer.sourceRectAtTime().width;」
「targetSize = targetLayer.sourceRectAtTime().width;」になります。
置き換えたコードはこうなります。
mySize = thisLayer.sourceRectAtTime().width;
targetLayer = thisComp.layer("monkey");
targetScale = targetLayer.transform.scale;
targetSize = targetLayer.sourceRectAtTime().width;
resultW = targetSize * targetScale[0]/100 / mySize * value[0];
resultH = targetSize * targetScale[1]/100 / mySize * value[1];
[resultW,resultH]
高さと幅をドロップダウンメニューで変更
コードをいちいち打ち替えて高さと幅を変更するのは面倒です。
そのためにドロップダウンメニューで簡単に変更できるようにしていきましょう。
ドロップダウンメニュー制御を適用
まずエフェクト&プリセットパネルのエクスプレッション制御の中にある「ドロップダウンメニュー制御」を適用します。
「ドロップダウンメニュー制御」の項目の名前を変更していきます。
外面上の青い文字で「編集」と書かれている部分をクリックすると、編集画面が出てくるので、そこで項目名を「高さ」「幅」に打ち替えましょう。
※「+」を押すと項目が増え「-」を押すと項目が削除されます
「ドロップダウンメニュー制御」のエフェクトの名前を「リサイズタイプ」に変更します。
ドロップダウンメニューで「高さ」「幅」をのどちらを選んだかで分岐されるエクスプレッションを作ります。
「if」で条件分岐
分岐をするエクスプレッションは「if」を使用します。
このように条件が真か偽を判断して分岐します。(ifについては今後また別の記事で書いていきます。)
ifを使用して書いたエクスプレッションがこちらになります。
mySizeW = thisLayer.sourceRectAtTime().width;
mySizeH = thisLayer.sourceRectAtTime().height;
targetLayer = thisComp.layer("monkey");
targetScale = targetLayer.transform.scale;
targetSizeW = targetLayer.sourceRectAtTime().width;
targetSizeH = targetLayer.sourceRectAtTime().height;
if(effect("リサイズタイプ")("メニュー") == 1){
resultW = targetSizeH * targetScale[0]/100 / mySizeH * value[0];
resultH = targetSizeH * targetScale[1]/100 / mySizeH * value[1];
}else if(effect("リサイズタイプ")("メニュー") == 2){
resultW = targetSizeW * targetScale[0]/100 / mySizeW * value[0];
resultH = targetSizeW * targetScale[1]/100 / mySizeW * value[1];
};
[resultW,resultH]
【 if(effect("リサイズタイプ")("メニュー") == 1) 】
【 else if(effect("リサイズタイプ")("メニュー") == 2) 】
これで高さと幅で分岐ができるようになりました。
「レイヤー制御」で指定するレイヤーを選択する
大きさを参照するレイヤーを簡単に変更できるようにしていきましょう。
レイヤー制御を適用
エフェクト&プリセットパネルのエクスプレッション制御の中にある「レイヤー制御」を適用します。
「レイヤー制御」のエフェクトの名前を「ターゲットレイヤー」に変更します。
選択したターゲットレイヤーの大きさを参照できるようにコードを打ち替えます。
mySizeW = thisLayer.sourceRectAtTime().width;
mySizeH = thisLayer.sourceRectAtTime().height;
targetLayer = effect("ターゲットレイヤー")("レイヤー");
targetScale = targetLayer.transform.scale;
targetSizeW = targetLayer.sourceRectAtTime().width;
targetSizeH = targetLayer.sourceRectAtTime().height;
if(effect("リサイズタイプ")("メニュー") == 1){
resultW = targetSizeH * targetScale[0]/100 / mySizeH * value[0];
resultH = targetSizeH * targetScale[1]/100 / mySizeH * value[1];
}else if(effect("リサイズタイプ")("メニュー") == 2){
resultW = targetSizeW * targetScale[0]/100 / mySizeW * value[0];
resultH = targetSizeW * targetScale[1]/100 / mySizeW * value[1];
};
[resultW,resultH]
「targetLayer = thisComp.layer("monkey");」を
「targetLayer = effect("ターゲットレイヤー")("レイヤー");」に変更しました。
これで参照する先をレイヤー制御で選択することができるようになりました。
今回のふりかえり
スクリプトのダウンロードと使い方
こちらが今回紹介したエクスプレッションをワンクリックで適用するためのスクリプトになります。
わざわざ打ち込まなくても簡単にエフェクトとエクスプレッションが適用されるので、どんどん使ってくださいね。下記にてダウンロードが可能です。
ここから先は
¥ 300
この記事が気に入ったらサポートをしてみませんか?