2011年1月13日 星期四

AE Expressions教學-3



調整值的範圍

    例如第一頁教學中的用rotation來變化opacity, opacity值的範圍是0~100; 但rotation是正負無窮大.

    以轉1圈360度來說, 100度以上opacity就不作用, 若想要完整轉一圈來變化opacity全過程, 需做一些數學運算,

rotation / 360 = opacity / 100

   上式 rotation等於0時, opacity也等於0 ; rotation為360時, opacity為100

    上面程式碼再做一些變化得到下面的程式碼, 求opacity 的運算式, 其中rotation/360的值介於0~1, 那0~1之間的值乘100, 所求得的值為0~100之間. 合乎opacity範圍

opacity =(rotation / 360) * 100  //括弧()可省略, 加上是為了清楚運算順序




同以上的理, 下方例子中

圓周長:circumference
距離:distance

    rotation是根據所走的距離(最長距離等於圓周長度), 來判斷旋轉度數.

    distance/circumference的值會落在 0~1 之間, 再用此值去乘360, 最後所得值範圍必定為 0~360

    為了使輪胎轉動, 所以 expression要放在rotation特性中, rotation 是被 position 所驅動.

    一開始 expression 可能會如下

rotation=position*?  //執行會出現錯誤, 因為還要替? 輸入正確變數, ?只是暫時代替

    要做水平方向移動才能看到輪胎旋轉, 所以取用position的x值 position[0] 來計算輪胎圖層跑多少距離, 輪胎是從comp的左邊移到右邊, 起點跑設定在comp的最左邊(comp的座標是左上到右下), 程式碼如下.

rotation=position[0]*?

    為了讓輪胎完整轉1圈, 所以要跑相當於1個圓周長距離, 轉1圈是360度. 根據所跑距離是圓周長的多少比例, 用相同比例的值來判斷輪胎轉幾度.

rotation=(position[0]/circumference)*360 //括弧()可以省略

    輪胎越大, 圓周長度越大, 圖層就必須移動越遠才能轉一圈, 現在要來定義圓周長度,


diameter是直徑, 圓周長公式 diameter*PI

    以前學校學的圓周長公式是2*π*r , r是半徑, 2*r是直徑 , π是圓週率(圓周長與直徑的比率,不變的值), javascript中以PI表示, 必須用 Math.PI 來存取, 或自己輸入3.14 , expression如下

circumference=width*Math.PI;   //width是輪胎寬度(直徑), 等於2*r(半徑)

    因為是用於rotation特性中, 所以之前的expression程式碼

rotation=(position[0]/circumference)*360

    可以刪除rotation=

    最後做全部程式碼整理, 得到

distance=position[0];
circumference=width*Math.PI;
distance/circumference*360;

    應用此expression時, 圖層scale特性必須是100%, 若有改變要另外處理, 留給讀者自己思考.


     上述效果當然也可手調, 但是若要做加速或減速時, 調不好輪胎會打滑, 還是用expression比較準確與真實.

範例檔下載 MAC Window

AE Expressions教學-2
AE Expressions教學-4
參考網址http://www.jjgifford.com/expressions/basics/range.html

沒有留言:

張貼留言

LinkWithin

Related Posts Plugin for WordPress, Blogger...