今回は円運動をスクリプトで生成してみました。
gifアニメで出力
x,z軸平面で円運動した例。
zの値を計算して(この場合はyとして計算した値をそのままz代入)myProperty.setValueAtTime(i/fRate, [x , y, z]);とするだけでできました。
// 新規コンポジションを追加
// 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;
}
}