Hiromuブログ

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

スクリプトで円運動

今回は円運動をスクリプトで生成してみました。

AE_circle

 

gifアニメで出力

Circle

 

x,z軸平面で円運動した例。

zの値を計算して(この場合はyとして計算した値をそのままz代入)myProperty.setValueAtTime(i/fRate, [x , y, z]);とするだけでできました。

Circle_3d

 

スクリプト

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

//指定したファイル名の 画像を取得 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;

circle(60, 640, 360, 300, 10);

// ---------------------------------------------------------------------- // 円運動 // frame : フレーム数 // center_x, center_y : 円運動の中心位置 // r : 半径 // d : 毎フレームの移動角度 // ---------------------------------------------------------------------- function circle(frame, center_x, center_y, r, d) { var degree=0;

for(var i=0; i<frame;i++){
    var x = center_x + r * Math.cos(Math.PI/180 * degree);
    var y = center_y + r * Math.sin(Math.PI/180 * degree);
    myProperty.setValueAtTime(i/fRate, [x , y]);
    degree = degree+d;
}

}