AE表達式江湖文檔【全】

2021-02-20 壞印表機

    拖延症斷斷續續寫了差不多一個月了,終於填完坑了,總共碼了四千餘字,主要還是配圖麻煩。

    

· 前言

· 表達式基礎

· 表達式的規則

· 掌握常用的表達式等於掌握90%

· 其他表達式的學習方法

· 怎麼優雅地鞭撻表達式

· 附帶:AE表達式學習資源推薦

一、前言

    一直以來,大多數人都不想去碰AE的表達式,覺得和編程掛鈎的東西都很難。於是我嘗試著去思考怎麼簡單地做AE表達式的教程,讓大部分人能接受。 
於是,這篇非官方的來自江湖的AE表達式文檔就出爐了。

    江湖就有江湖的規矩。 
    不拘小節不刻板,不可能像官方文檔一樣每個函數都單獨拿出來講,官方文檔是讓人們當做字典查找的,我們只講有用的,講少一點,講簡單一點。

    本文的目的不在於全面,在於力爭各位讀完之後,看得懂AE表達式,會寫AE表達式!

二、表達式基礎

①、如何添加表達式 
    再深厚的功夫也是從扎馬步開始的。如何添加表達式呢?兩個動作。 
    ①按住[Alt鍵],②點擊你要添加表達式的屬性前面的[秒表]。 
    這個時候就會出現一個編輯框,把表達式寫進去就可以啦。

    示例:用表達式讓[ball]的位置固定在[200, 200]處。 


②、表達式開關 
    這個開關是[開啟/關閉]表達式,可以令你在不清除表達式框的情況下,禁用表達式。

    示例:表達式的開啟和禁用 


③、表達式拾取器 
    它在民間有多個名字,飄忽不定,有人說是拾取器,有人說是關聯器,有人說是橡皮筋。 
    打個比方,你在寫一篇叫做《我的同學》的作文,你的同學名字叫做沃爾塔·薩斯皮諾斯·阿卡貝斯基,你記不住,於是你用手指一指你的同學,他的名字就自動出現在你寫的文章裡面,多方便呀,多偉大的手指呀。表達式拾取器就是這隻神奇的手指。

    示例:用表達式讓[ball]圖層的位置位於[anotherBall]的下面50px處 


④、函數菜單 
    AE有很多已經內置的函數給你用,你並不需要記住它們每個的名字和參數,只需要記住有這麼一個函數存在就可以,需要用的時候可以在這個菜單裡面搜索你想要的函數。 


三、表達式的規則


    AE表達式的規則,等同於我們平日說話的時候主謂賓等語法規定,我們需要遵守,AE和你才能正常愉快地交流啊。

規則一:它要啥你就給它啥 
    無論你表達式寫得多麼長多複雜,前面一大堆,都是為了計算出最後那個AE所要求的格式的東西。

    [位置]:我要的是一個格式為[x, y]的東西,我好知道我在哪個地方。 
    [不透明度]:我只要一個數值就可以了,比如0,比如50,比如100。 
    [填充顏色]:我需要一個格式為[r, g, b, alpha]的東西,我好知道我是個啥顏色。

    【示例】: 

規則二:類型 
    在AE表達式中,變量a常見的類型有 
    ①、數值。例如數字1、1.5、-10。
    ②、字符串。用引號包括起來,例如一個字符串」哈嘍你好呀」、」我在寫文檔ing」 。
    ③、布爾值。判斷對錯的布爾類型 true 和 false 。
    ④、數組。由許多元素組成的一個組。 



規則三:基本的計算 
    加減乘除就不用說了,在這裡提一個常用的[取餘數]的符號——%。 
    比如:a = 100 % 3; 
    那麼a的值就是1。

    【示例】: 

    註:[time] 是AE提供的,表示當前的時間。例如1s時,time = 1;2.5s時,time = 2.5。我們經常利用[time]的值跟隨時間變化這個特性來製作動畫。


規則四:變量


    不要覺得[變量]這個詞很陌生可怕,其實,初中開始我們的數學引入的字母,可以說就是[變量],它的作用就是來存儲數值的。

    【示例】: 

    註:[time] 是AE提供的,表示當前的時間。最後一個示例中的」time % 1」,表示當前時間對1取餘數。例如time = 1.5s處,time % 1 = 0.5。因此,(time % 1) 隨著時間在0~1之間不斷變化。


規則五:語句 
    表達式是由一行一行的語句構成的,每個語句以一個分號結尾,當然AE表達式允許你忽略分號,不過在每個語句後面添加分號,是一個好的習慣。


規則六:注釋 
    先看看下面兩個表達式: 


    上面那個可能你一開始看到,一時半會不知道它是用來做什麼的。 
    但是下面那個表達式,添加了作者的注釋,一目了然!

    有兩種注釋的方法: 
    ①、單行注釋:兩個斜槓 // 可以注釋掉同一行後面的所有內容。 
    ②、多行注釋:可以用 /* 和 */ 把要注釋的內容括起來,這種方式可以注釋多行內容。

    話說回來,注釋可以解釋代碼的作用,增加可讀性,同時它不會被運行,直接被AE忽略掉。簡單來說,表達式是寫給AE看的,注釋是寫給人看的

【示例】: 

規則七:條件 
    條件語句的結構其實很簡單,總結來說就是:

 

    注意: 
    ①、一個if後面可以跟著無數個else if,但是只能跟著一個else,且必須在最後面。 
    ②、{} 花括號後面不需要加分號。 
    ③、if 和else if後面的括號裡是判斷的條件,常見的判斷有以下: 
    1、a == 1 (判斷a的值是不是等於1,切記是兩個等於號) 
    2、a >= b (判斷a的值是不是大於等於b) 
    3、 !(3 > 1) (!表示取反,因為3>1是true,所以取反之後這個條件是false) 
    4、flag (判斷flag是布爾值true還是false) 
    5、0 (當判斷條件是0,則表示false,若是0以外的其他數字,則表示true)

    【示例】: 


規則八:循環 
    個人感覺:循環在AE表達式裡面的使用其實還挺少見的(所以循環的例子好難想呀) 。
    循環有三種形式,你可以根據具體情況選擇任意一種。 




    舉個例子我們看看怎麼使用。 




    註:在循環塊裡面添加」break;「,表示跳出(打破)這個循環,不管循環條件滿不滿足,都跳出循環。 
    和 「break;」 類似的還有一個 「continue;」 ,它表示結束本次循環,進行下次循環,而不是跳出(打破)循環。

規則九:函數 
    ①、內置函數: 
    還記得那個函數菜單嗎?在裡面我們可以看到很多AE提供給我們使用的函數。 
    例如: 
    a、wiggle(freq, amp);  // [擺動]函數,freg是頻率,amp是幅度 
    b、random(min, max);  // [隨機]函數,在min和max值之間取一個隨機值 
    (更多內置常用的函數將在第四節講解) 




    ②、自定義函數: 
    個人感覺:在AE表達式中自定義函數還是比較少見的。 
    函數的定義格式如下: 




    在這裡我們簡單地舉一個例子: 




    註:因為random()返回的是一個小數,所以我們自己寫了一個getRandomInt(min, max)函數來返回一個隨機的整數

規則十:那些特殊的規則 
    ①、a = a + 1; 這個語句我們可以簡寫為 a++; 
    ②、同理,a = a - 1; 我們可以簡寫為 a--; 
    ③、條件語句還有一種寫法:condition ? do somthing : or do something; 
    這是在 if 和 else 都只有一個語句的時候可以採取的簡寫方式。 
    舉例: 2 < 3 ? a = 1 : a = 0; // a的值為1 
    一般我們寫成 a = 2 < 3 ? 1 : 0; // a的值為1

註:想完整地學習語法規則可以去runoob.com或者w3school.com.cn搜javascript的教程看。

四、掌握常用的函數等於掌握90%

    一般我在寫表達式的時候,除非突發奇想想寫點新奇的東西,基本90%就是使用那幾個常見的函數。

一、time 
    前面提過,time隨著時間線的變化,值也在變化,1秒處time=1,1.5秒處time=1.5。 
    利用隨著時間變化的time值,我們可以做出隨著時間變化的表達式。


二、index 
    每個圖層都有自己對應的index,根據index不同,我們可以給不同圖層做出不同的效果。


二、value 
    即[不加表達式情況下]當前該屬性的值。

三、wiggle(freq, amp) 
    擺動函數,第一個參數freq指的是擺動的頻率,第二個參數amp指的是擺動的幅度。


四、random() 
    隨機函數,通過調用random(),我們可以得到一個介於0和1之間的隨機值,利用隨機值,我們可以做出各種隨機的效果。


五、valueAtTime(t) 
    這是一個常見的函數,我們可以調用這個函數得到對應時間的值。


六、loopOut() 
    循環函數。當我們想做一個來回運動的球的時候,我們不需要重複K幀,只需要做好一個來回的關鍵幀,然後添加loopOut()函數即可~


五、其他表達式的學習方法

    其他的表達式有的時候也會用到,那我們應該怎麼去學習呢? 
    ①、瀏覽了解:還記得我們在第一章提到的小三角形嗎,在那裡我們可以看看AE給我們提供了什麼函數,裡面有一些可能你永遠都不會用到,但是了解瀏覽一下不會錯的。
    ②、官方文檔:當然在這裡我們只能看到每個函數的名字,至於它 能怎麼用,請查看官方文檔!官方文檔已經對每個函數的作用描述得很清楚了,還有舉例說明,在這裡沒必要贅述。 
    附:官方中文文檔網站: 
https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html

六、怎麼優雅地鞭撻表達式

    終於寫到如何優雅鞭撻表達式了,激動! 
    我們分3個Part來鞭撻!

Part 01:利用表達式控制控制項,優雅控制參數 
    在AE 的效果特效中,有一個叫做[表達式控制]的子菜單。 
    我們可以利用著這些控制控制項,來輕鬆地控制表達式的參數,實現不同的效果。


    ①、舉一個例子,用[滑塊控制項]來控制五角星旋轉的速度。最重要的是,通過這個[滑塊控制項],我們不僅可以直觀簡便調整旋轉速度而不需修改表達式,還可以給五角星的旋轉速度K幀,讓五角星在不同時間以不同速度旋轉。

    ②、再附上一個[複選框控制]的例子


Part 02:函數化,讓表達式結構更清晰 

    在表達式中,我們可以把重複使用的代碼組織成一個函數。這樣,即使很長的表達式,也會條理清晰,結構明了。(不過因為表達式一般不會很長,函數化用到得也比較少)
    具體使用方法,請參考第三章的規則九小節

Part 03:優雅的編寫風格 
    略。

附帶:AE表達式學習資源推薦

①、官網: 
https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html 
②、Harry Frank的一套經典的AE表達式視頻教程(六集) 
中文字幕自取連結:http://pan.baidu.com/s/1c9c5S6 
③、一個很棒的AE表達式文檔教程 
原版:http://www.jjgifford.com/expressions/basics/index.html 
翻譯版:http://andyeee.blogspot.com/2010/12/ae-expressions-1.html

相關焦點

  • 最全的ae表達式教學分享
    大部分人對ae表達式是望而卻之,感覺很難,於是整理了一份最全的最實用的ae表達式教學。
  • ae表達式的快速入門
    在ae中,使用表達式不僅可以提高效率,做的動畫還非常有節奏。有時候使用手key很難達到這種效果。表達式的用途很廣,有時候為了節約資源,可以使用表達式來製作循環動畫。下面我們就一起來簡單地了解表達式的使用。
  • [青之巔VFX]Ae表達式-1:ae表達式小案例展示
    為了感謝粉絲的支持我決定在年前給大家更新ae強大的表達式這塊的內容的乾貨教程。對於前面的講過的圖層混合、alpha蒙版遮罩、ae的許多效果特效暫時就不再深入的去講解,因為這個基本都是一個原理的,只是施加了不同的效果不同的參數,然後進行疊加,倘若能夠觸類旁通,舉一反三,也能做成很多不錯的東西。
  • 掌握AE表達式常用的函數
    五、其他表達式的學習方法   官方文檔:當然在這裡我們只能看到每個函數的名字,至於它 能怎麼用,請查看官方文檔!官方文檔已經對每個函數的作用描述得很清楚了,還有舉例說明,在這裡沒必要贅述。     附:官方中文文檔網站: https://helpx.adobe.com/cn/after-effects/using/expression-language-reference.html六、怎麼優雅地鞭撻表達式 Part 01:利用表達式控制控制項,優雅控制參數     在AE 的效果特效中,有一個叫做[表達式控制]的子菜單
  • AE萬能彈性表達式引發的「遐想」
    什麼是AE表達式?AE內部基於Java s cript程式語言開發的編輯工具,簡化一些設計難度啥是AE萬能彈性表達式?AE萬能表達式又該如何應用?這些就不多講,因為篇幅太小,教程百度掛著,說多了,大家也膩。
  • AE表達式是做什麼的?常用的都有哪些呢?
    當我們想做一個來回運動的球的時候,我們不需要重複K幀,只需要做好一個來回的關鍵幀,然後添加loopOut()函數即可~五、其他表達式的學習方法官方文檔:當然在這裡我們只能看到每個函數的名字,至於它 能怎麼用,請查看官方文檔!
  • AE表達式精通大法
    AE表達式一直是大家學習AE過程中的一道坎,涉及代碼網上教程資源又不多,於是很多人都沒有完全地領略到AE表達式的魅力。於是這一次,我花了大量時間學習研究同時結合自己以往在工作中對表達式的運用心得。為大家帶來這套系統的表達式教學。在學習表達式之前我們需要對表達式有個基本的了解。首先我們需要排除一個想法,表達式真的像我們想像的那麼難學嗎?
  • ae小白如何快速使用模板?
    相信很多ae初學者,從網上下載了模板之後,卻無從下手。有的即使改了改其中的文字,但是有些細節還是不知道該怎麼改,或者忘記改,導致發布了作品之後,還聲稱是自己的原創,卻帶著別人的水印,這下就有點尷尬了。下面我們就一起來學習幾點關於ae模板的問題。
  • AE軟體中到底有哪些令人震驚的AE插件呢?
    ©AE模板素材相信使用過ae軟體的朋友都很清楚,ae軟體中假如沒有了插件,那就如同沒有子彈的槍枝
  • [青之巔VFX]Ae表達式-3:Ae表達式滑杆控制
    Ae表達式常用表達式菜單函數參數功能詳細介紹 在講解Ae表達式滑杆控制前,先給大家詳細講解下常用函數的功能介紹,後面的課程會在這個總綱中選取重要的的實用函數例子,Property: 一些屬性,數值,速度,循環體 等 Key: 關鍵幀相關的函數參數MarkerKey: 注釋相關的函數參數Ae表達式滑杆控制
  • 【AE表達式】如何修改非自己創建的表達式
    大家好,在挖坑不填好幾個月之後,木木繼續我們AE表達式的填坑之旅,今天為大家帶來的就是琳達AE表達式入門第一章第八期的內容,即如何修改非自己創建的表達式~【相關教程】【青之巔VFX】琳達AE表達式入門中文視頻教程1-1:介紹【青之巔VFX】琳達AE表達式入門中文視頻教程1-2:如何使用練習文件
  • AE實用表達式整理及表達式合集腳本發布
    如果你對表達式掌握的比較好,那麼很多看似複雜、繁瑣的效果,利用表達式都可以輕鬆的實現。 但是表達式的學習是有一定門檻的,簡單的運用還好,一旦涉及到複雜點的運用,就對數學能力、邏輯能力有一定的要求了。 為此,我整理了一些工作中常用、實用的表達式效果。無需理解背後的語義,只要直接套用即可。
  • 【必學】AE常用表達式解析
    AE裡面表達式通常是比較虐心的部分,大部分學員都會因為英文不過關而對這部分內容非常苦惱,今天羅列了AE裡面幾個比較常用的表達式,給大家進行拆解分析,希望能幫助到你喲!抖動表達式還可以和mask的移動,人偶工具的節點進行抖動的設置。
  • 《從零開始真正理解 AE 表達式》
    ······如果你回答不上這些問題,那麼你還不理解表達式。這不怪你,我還沒見過市面上有講清楚這些的AE 表達式課程,直到今天。>接觸過表達式,但了解的很淺不能使用表達式解決實際問題課程介紹這套課程將從編程的角度出發,帶你真正理解表達式。
  • 入門AE:循環表達式的應用,附帶教程
    效果圖今天教大家理解循環表達式是什麼,可能會比較麻煩,大家私下多嘗試下,表達式用得好可以提高製作效率教程1、首先打開我們的AE2、新建一個項目,我們將素材導入AE中導入種類:合成-保持圖層大小;圖層選項:可編輯的圖層樣式然後雙擊合成文件就行
  • 正則表達式在VBA中間是如何應用?正則表達式的實現方式?
    Hi,大家好,本章節開始將會從零開始和大家用圖文的方式,讓你從零基礎學會正則表達式!有興趣的小夥伴可以持續關注我,或者在專欄中進行查看自我學習,願與君攜手前行!在上一個章節說到正則表達式的入門級知識點,本節將會與大家分享一下正則表達式的是具體實現方式是怎麼樣的?
  • [青之巔VFX]Ae表達式-11:Ae隨機函數
    嗨,大家好,我是阿璨,今天開始我就給大家帶來的的是Ae隨機函數的講解,話不多說,我們進入今天的內容:Ae表達式之隨機函數Nothing seedRandom我這裡上一個圖就很容易理解了,上給空對象的slider滑杆添加表達式:seedRandom(555,true);random()那麼slider的值就會根據555這個種子數在0-1這個區間任選一個
  • 18種常用AE表達式解析【建議收藏】
    ,18種常用AE表達式解析,希望對你有所幫助! 正文很多朋友面對AE表達式望而生畏,不過再難的東西都會有它最本質的規則,如果你理解了基本的原理和常用的表達式命令,這也許會提高你的工作效率。我通過自己對AE表達式的理解,嘗試用最簡單的語言解釋一些看似複雜的操作,如果此篇文章能給你帶來一些啟發,不勝榮幸~表達式就是AE內部基於JS程式語言開發的編輯工具,可以理解為簡單的編程,不過沒有編程那麼複雜。
  • 入門AE:時間表達式的應用方法,附帶教程
    效果圖今天繼續基礎教大家基礎的時間表達式,是應用表達式的time這個英文單詞來做出動畫,簡單,方便(每天5分鐘,充實一整天)教程180度4、點擊橢圓圖層,按P鍵打開位置屬性按alt鍵點擊位置屬性前面的小碼錶,打開我們的表達式
  • 如何學習AE表達式以及一些常用的使用方法
    在學習AE的道路上,表達式是一個避不開的學習點,可能一些初學者聽到這個知識點會完全沒有概念,這篇文章寫來告訴大家,學習表達式其實難度並不大,下邊我們來看看如何學習AE表達式,以及掌握一些最基本的表達式知識和應用。