【AE表達(dá)式】基于不規(guī)則形狀生成點線動畫

/*表達(dá)式文末自取*/
另外貼一個官網(wǎng)表達(dá)式解釋:
https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html
思路
通過讀取源路徑上的點,再進(jìn)行連線

實現(xiàn)
準(zhǔn)備工作
新建形狀圖層,用鋼筆隨便畫一個路徑

再建一個形狀圖層,用于表達(dá)式生成路徑
并為內(nèi)容添加路徑和描邊

再給這個圖層的添加兩個滑塊控制//之后要用

建議用表達(dá)式把兩個圖層的PSR鎖好,以免鼠標(biāo)誤操作

給路徑圖層下的路徑添加表達(dá)式

先定義一些變量并賦值
從這里開始需要一些基本代碼知識了
首先需要把取到的點的位置放在一個數(shù)組里
以便之后給createPath使用
于是先定義一個數(shù)組
再用for循環(huán)+pointOnPath取所有點
關(guān)于pointOnPath用法的官網(wǎng)解釋

簡單說就是
路徑.pointOnPath(百分?jǐn)?shù),time)
返回路徑上一點的位置//起點百分?jǐn)?shù)為0,終點為1
取得點后用createPath描點連線
createPath用法詳見

或者看我上篇文章

也可以看官網(wǎng)解釋

回到取點過程,因為pointOnPath是通過百分?jǐn)?shù)i/n進(jìn)行點的定位
那么需要i/n+c就能實現(xiàn)相位變化
但i/n+c為百分?jǐn)?shù),只取0到1的數(shù)
則進(jìn)行模運算,改為(i/n+c)%1
這樣無論c如何增加,(i/n+c)%1都不會超過1

但目前只生成了路徑,還需要畫點
創(chuàng)建點
動畫中的點實際上就是正圓形
新建形狀圖層,添加橢圓路徑及填充

用P鍵打開圖層位置屬性,添加之前的變量

再添加
如果想要很多點,Ctrl+DDDD……就好了
后記
前天在群里看到這個表情包,就想模仿一下

不知道有什么用,說不定就可以用在視頻里呢
之前兩篇感覺講得太麻煩了,這次就講得更簡單了些,有不懂的地方歡迎私信

路徑
path_=thisComp.layer("源路徑").content("形狀 1").content("路徑 1").path;
n=effect("點數(shù)")("滑塊");
n=clamp(n,20,1);
c=effect("相位")("滑塊")/100;
c=clamp(c,50,0);
?
pos=[path_.pointOnPath((0/n+c)%1,time)];
for(i=1;i<=n;i+=1){
?????? p=path_.pointOnPath((i/n+c)%1,time);
?????? pos.push(p);
}
createPath(pos,[],[],1)
點
path_=thisComp.layer("源路徑").content("形狀 1").content("路徑 1").path;
n=thisComp.layer("路徑動畫").effect("點數(shù)")("滑塊");
n=clamp(n,20,1);
c=thisComp.layer("路徑動畫").effect("相位")("滑塊")/100;
c=clamp(c,50,0);
?
o=index-1;
if(o>n){
?????? o=0;
}
path_.pointOnPath((o/n+c)%1,time)+value