新規ヌルレイヤーを作成して、名前を「Controller」にする。

Controllerをガイドレイヤーに変更する

エフェクト→エクスプレッション制御→スライダー制御を選択(2つ複製して合計3つ作成)

スライダーの名前を「Number of Points」と「Max Y Value」、「Min Y Value」に変更する。

新規シェイプレイヤーを追加する

コンテンツに「線」を追加する

任意の色を設定する

コンテンツに「パス」も追加する(最終的にはパスが線の上にある必要あり)

csvフォルダを作成し、そこにcsvをドラッグ&ドロップ

csvはこんな構成↓


パスのエクスプレッションを開く

以下のコードをエクスプレッションに記入(csvのファイル名や列番号(0-indexed)は適宜修正)
==================================================
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;
arrayOfPoints.push([startingPointX, lineHeight]);
startingPointX += spacingForPoints;
}
createPath(arrayOfPoints, [], [], false);
==================================================
【注意】エラーがでる時は、ウィップでControllerと再接続したり、コードをマニュアルで書き直したりする必要あり。csvのファイル名もマニュアル修正要。

Controllerの値を適宜調整

とりあえず描けたっぽい

パスを線の上に持ってきたら、線が描画された

位置を「0,960」にしたら、真ん中に配置された

シェイプレイヤーを3Dレイヤー(クラシック3D)に変更する

y軸(緑軸)の回転を30度にしてみた。

z軸(青軸)の位置を1000にしてみた

パスのトリミングを追加して、5秒のアニメーションにしてみた

同じ要領で、2つの波を重ねてみた。

ヌルを中央に配置して、そこにリンクを設定した上で、スケールや回転の調整をすれば、アンカーを中央に設定したままでシェイプの調整が可能。
というより、各シェイプでコントロールせずに、ヌルで調整した方が良い!

最終的にアニメにしてみた
(参考ウェブサイト)
【追加】スケールや位置もスライダー制御できる
「X position」、「Y position」、「X scale」、「Y scale」

==================
xPosition = effect(“X position”)(“スライダー”);
yPosition = effect(“Y position”)(“スライダー”);
[xPosition, yPosition]
——————-
xScale = effect(“X scale”)(“スライダー”);
yScale = effect(“Y scale”)(“スライダー”);
[xScale, yScale]
==================
※追加エフェクトもマニュアルで作業しないとエラーが出る可能性が高い。その際、ウィップでリンクさせると、temp = thisComp…..とxの分しか作成されないので、自分でyの分を書く必要あり。
