AfterEffects エクスプレッションのみでカウントアップ


やりたかったこと

動画作成中(作成してないけど(笑))に〇〇と発言した数をカウントする!!
的な事を考えた時に発言した時にレイヤーマーカーを打ってそれをカウントアップさせる。
とりあえずAE内ではテキストレイヤー1つのみで完結させたかった。

実際の作ろうとしたイメージの動画と実際に作成した物を動画にしました。

内容

テキストレイヤーには2つのスライダーエフェクトを使用しています。
①スライダー名 「Sp」
②スライダー名 「PsitionY」

①Spはマーカーの何秒前からカウントアップが始まるかです。
②PositionYはテキストの移動位置です。
②はフォントサイズとか変わるとずれるのでこれで調整して下さい。

テキストのソースのエクスプレッションはこちら

var mnk = thisLayer.marker.nearestKey(time);
var count;

if (time < mnk.time){
count = mnk.index-1+"\r"+mnk.index;
}else if ( time < thisLayer.marker.key(1).time ){
count = mnk.index-1+"\r"+mnk.index;
}
else{
count = mnk.index+"\r"+Number(mnk.index+1);
}

count

テキストレイヤーにはウィグリーセレクタを追加していますがこれは数字が上下に揺れるだけのものなので
入れなくても大丈夫です。

ウィグリーセレクタ

x=value[0];
y=wiggle(5,30);
[x,y[1]]

ここからは必要なものです。

テキストレイヤーに
アニメータを3つ追加しています。
①位置
②不透明度
③不透明度

Position(①位置アニメーター)

var mnk = thisComp.layer("0 ").marker.nearestKey(time).time;
sp=effect("Sp")("スライダー");
posY= effect("PositionY")("スライダー");

if ( ( time > mnk-sp )&&(time < mnk) ){
linear(time,mnk,mnk-sp,[0,0],[0,-posY])
}else{
[0,0]
}

transparent(②不透明度アニメーター 下の数字に対して)

var mnk = thisComp.layer("0 ").marker.nearestKey(time).time;
sp=effect("Sp")("スライダー");

if ( ( time > mnk-sp )&&(time < mnk) ){
linear(time,mnk,mnk-sp,0,100)
}else{
0
}

transparent2(③不透明度アニメーター 上の数字に対して)


var mnk = thisComp.layer("0 ").marker.nearestKey(time).time;
sp=effect("Sp")("スライダー");

if ( ( time > mnk-sp )&&(time < mnk) ){
linear(time,mnk,mnk-sp,100,0)
}else{
100
}

不透明度のパラメーター

これであとはカウントしたい所にテキストレイヤー上にマーカー打つだけです。

以上です。