Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

スクリプトで放物運動

こちらのエントリーでは選択したコンポジションに画像を追加していましたが、今回はコンポジションを新規に自動で作成し、ファイル名を指定した画像を追加するように改造しました。

そしてスクリプトの内容ももう少し意味のある放物運動をするようなものにしてみました。そしてせっかくなのでこのブログ用にgifアニメで出力。

 

anime

 

After Effectsがだいぶわかってきてうれしくなってきました。

 

スクリプトは以下になります。

// 新規コンポジションを追加
// app.project.items.addComp(name, width, height, pixelAspect, duration, frameRate)
var mycomp = app.project.items.addComp("マイコンポ", 1280, 720, 1, 10, 30);

// コンポジションに平面追加(地面として表示) // app.project.item(index).layers.addSolid(color, name, width, height, pixelAspect, duration) var myPlane = mycomp.layers.addSolid([0.1, 0.1, 0.1], "平面", 1280, 82, 1.0, 2); myPlane.position.setValue([1280/2, 720-82/2]);

//指定したファイル名の 画像を取得 var imgItem; for(var i=1;i<app.project.items.length;i++){ if(app.project.items[i].name == "circle_image.png"){ imgItem = app.project.items[i]; // alert(imgItem.name); } }

// コンポジションに画像を追加 // app.project.item(index).layers.add(item, duration) var myLayer = mycomp.layers.add(imgItem, 2);

// レイヤーの(位置)プロパティの取得 var myProperty = myLayer.position;

// コンポジションのフレームレートを取得 var fRate = mycomp.frameRate;

// キーフレームの生成 // x方向の距離は「x= x0 + v x * t」 // y方向の距離は「y = vy0 * t + 1/2 * a * t2

// 初期位置 var x0 = 200; var y0 = 600;

var vx = 30; var vy = -100; var a = 9.8;

// 放物運動 for(var i=0; i<60;i++){ var x, y; x = x0 + vx * i; y = y0 + vy * i + 1/2 * a * i * i; if(y >= 720 -82/2 -75){ y = 720 -82/2 -75; } // 指定された時間(time)にキーレフームの値を設定 //   time     時間(秒)。コンポジションの開始は0になる。 //  newValue  プロパティに応じたタイプの値。 // 詳細はhttp://aejsx.hiroshisaito.net/property-object/methods/setvalueattime参照 myProperty.setValueAtTime(i/fRate, [x , y]); }