// パラメータの設定 var radius = 200; // らせんの半径 var numTurns = 5; // らせんの巻き数 var height = 500; // らせんの高さ(Z軸方向の広がり) var speed = 1; // らせんの回転速度
// 頂点ごとの位置を計算 var points = content(“多角形パス 1”).points; var newPoints = [];
for (var i = 0; i < points; i++) { var angle = (i / (points – 1)) * Math.PI * 2 * numTurns; // 角度を計算 var x = Math.cos(angle) * radius; // X座標 var y = Math.sin(angle) * radius; // Y座標 var z = (i / (points – 1)) * height – height/2; // Z座標(中央を0とする)
// 3Dレイヤーに変換されたときの見た目を考慮して、パースを適用 // ここでは簡易的にZ値をXとYに影響させています var perspectiveScale = 1 + z / 500; // 簡易的なパース計算
newPoints.push([x * perspectiveScale, y * perspectiveScale]);
// パラメータの設定 var amplitude = 200; // 波の振幅 var frequency = 0.05; // 波の周波数 var speed = -20; // 波の移動速度 var points = 200; // 頂点数
// 頂点ごとの位置を計算 var newPoints = []; for (var i = 0; i < points; i++) { var x = i * (thisComp.width / (points – 1)); var y = Math.sin(x * frequency + time * speed) * amplitude; newPoints.push([x, thisComp.height / 2 + y]); }
================================================== var numberOfPoints = thisComp.layer(“Controller”).effect(“Number of Points”)(“スライダー”); var maxYValue = thisComp.layer(“Controller”).effect(“Max Y Value”)(“スライダー”); var minYValue = thisComp.layer(“Controller”).effect(“Min Y Value”)(“スライダー”);
var startingPointX = 0; var spacingForPoints = thisComp.width / (numberOfPoints – 1); var arrayOfPoints = [];
for (var i = 0; i < numberOfPoints; i++) { // Read CSV: row i+1 (skip header), column 1 = Y values var values = thisComp.layer(“【ファイル名】.csv”).footage(“【ファイル名】.csv”).dataValue([【列番号】,i]);
// Normalise Y to comp height (flip so bigger values go upward) var lineHeight = linear(values, minYValue, maxYValue, 0, thisComp.height) * -1;