After Effects用のスクリプトを書いてみる

開発課

こんにちは。かつたです。

 

もうこのブログではAEネタばかり書いてますが、今回もAEネタです。
AEを使いはじめてから何だかんだ時間が経ちましたが、
スクリプトを自分で書いて実行するってことはしてなかったので
今回いい機会なのでちょこっと書いてみました。


/****************************
黒いシネマスコープを追加する
****************************/
var name        = "CinemaScope"; //コンポジションの名前
var width       = app.project.item(1).width; //コンポジションの横幅
var height      = app.project.item(1).height; //コンポジションの高さ
var pixelAspect = app.project.item(1).pixelAspect; //アスペクト比
var duration    = app.project.item(1).duration; //コンポジションの長さ(時間)
var frameRate   = app.project.item(1).frameRate; //フレームレート
 
var comp        = app.project.items.addComp(name, width, height, pixelAspect, duration, frameRate);
var layerTop    = comp.layers.addSolid([0, 0, 0], "Top", width, height / 2, 1.0, duration);
var layerBottom = comp.layers.addSolid([0, 0, 0], "Bottom", width, height / 2, 1.0, duration);
layerTop("position").setValue([width / 2, height / -7]);
layerBottom("position").setValue([width / 2, height * 1.15]);

コンポジションを実行中のプロジェクトに追加する簡単なスクリプトになります。

javacriptの文法で書けます。
このスクリプトを実行すると、映画のような画面の上部と下部にある黒帯が設置されます。
(コンポジションとは映像だったり静止画だったり、動画の情報をひとまとめにした箱みたいなものです。)

 

app.project.item()で実行中のプロジェクトの情報が取得できます。
widthやheightといった指定で横幅だのを取ってきてる感じですね。
多分こんな感じで指定してあげれば汎用的なスクリプトになるんじゃないかなと思います。

 

そんな感じで作った変数をcompに引数として渡します。
addComp()はコンポジションの新規作成をするメソッドです。

 

そして作成したcompの中にlayerToplayerBottomで1つずつレイヤーを追加します。
addSolid()は平面レイヤーをつくるメソッドです。

引数で渡してる配列はrgbを意味しています。全て0なので黒い平面が追加されます。

これが黒帯の上下になります。
とりあえずコンポジションの高さの2分の1で指定して、その後各レイヤーの位置をsetValue()メソッドでいい感じの高さにそれぞれ指定しています。
ちょっと乱暴なやり方でしょうか…。

 

jsxで保存してAEのメニューから

ファイル⇒スクリプト⇒スクリプト を実行とすれば

黒い帯が出てくるかと思います。

 

今回はコチラを参考にしました ⇒http://aejsx.hiroshisaito.net/reversereference

思ってたよりは簡単に書けた気がします。

記述・実行する際、AdobeのExtendScript Toolkitを使ってみたのですが、

全然補完してくれないし、ECMAScriptの仕様が古いのかエラーが結構出ました。

ES2016とかで書いてる訳でもないのに。アップデートして欲しいですね…。

 

もっと色々試してみたいですね~!
どんなメソッドを使えばいいのかってところで悩むことが多かったので、日本語の公式リファレンスがマジで欲しいです。

Adobe様お願いしますっ!

▼ 感じるほどテクってる 関連記事