哈囉!又到了快樂的教學時光。
這次的內容要來介紹一個簡單的表達式語法:if / else。如果…否則…
首先是…
這邊用三顆球球來示範。
按下Ctrl+Alt+Shift+Y創一個空物件,並取名為ctrl:
它要用來控制球球們的不透明度。
在這個ctrl空物件上加入Checkbox Control效果:
先來介紹比較特別的checkbox~
拿red開刀,按住Alt點擊不透明度的小時鐘來開啟它的表達式控制:
輸入if ()後,在括弧中,利用父子關係的迴紋針,綁到剛才加入checkbox control上(這邊先改名為red):
這樣括弧中間就會出現指定的路徑:thisComp.layer("ctrl").effect("red")("Checkbox")
然後如上圖,在指定路徑後方輸入 ==1,然後在括弧後方輸入 100。
==1的意思是checkbox打勾,反之,==0則是不打勾。
所以目前整串的意思為:如果ctrl圖層上的red效果的Checkbox ==1、打勾的話,Opacity的數值為100。
接著加上else、否則:
else 0,否則為0。
所以如果checkbox==0、沒有打勾的話,opacity的數值就會是0。
如下圖:
我將勾勾取消,red的不透明度就變成0了,在畫面上也就消失了。
也可以將否則改成value:
這樣如果沒有打勾,就會是你自己設定的值:
例如我設定22,它就會是22,而不是指定的0。
更進階一點,還有 || 和 &&兩種。
例如上圖:
if (effect("green")("Checkbox")==1 || effect("blue")("Checkbox")==1) 0
else 1
就變成,如果green的checkbox打勾 或者 blue上的checkbox打勾,我red的checkbox就不會打勾,否則打勾。
這樣條件就不只一種,而是兩種,這兩種情況都會觸發語法效果。
那另一種&&,假設一樣的語法:
if (effect("green")("Checkbox")==1 && effect("blue")("Checkbox")==1) 0
else 1
就變成,如果green的checkbox打勾 和 blue上的checkbox打勾,我red的checkbox就不會打勾,否則打勾。
這樣條件就必須滿足上述兩種情形,才會觸發語法效果。
不過這種語法無法交互控制:
如上圖,這樣的語法會相互干擾,不會如期達成「只會有一個顏色球開啟」的效果。
這就需要另外方法來控制,有機會再說說~
不過我們知道checkbox的勾勾數值是0和1,也可以延伸應用在不透明度上:
如果打勾=1的話,那我後面承上100就等於100%,所以只要將原本的數值設為0,一旦打勾,就會變成100%。
這一樣也能有打勾就出現、沒打勾就消失的效果。
所以不只不透明度或是checkbox,也可以作用在其他地方:
這邊將球球的position都分開。
表達式如下:
如果blue球球的Y座標小於480的話,數值就為0(checkbox上就等於不打勾),否則維持原本的數值。
效果如下:
blue球球的Y做標小於480(上圖為479.7),checkbox就不會打勾、等於0,因此不透明度的0*100也還是0,球球就會消失啦~
這邊額外做一個簡單的小分享,關於黑頻閃爍的小方法:
加入slider control效果。
單純的隨機也有random語法:
不過我不太喜歡用random。
這邊我會用wiggle:
頻率為30,震幅則綁到slider上,這樣會比較好控制~
頻率也可以另外控制唷~
成品範例:
※藉由表達式控制讓作業速度更快。
那這次的教學就到這此為止了,我們下次見~
※此教學AE專案檔(CC 2019 & CC 2014)下載: