1 制作前先分析場景中需要的模型,分別是,秒針,分針,時針,表盤,時間刻度,發條和用來顯示時碼的數字,根據個人喜好開始建模,比我這個模型好點就行。
2 模型做好,將秒針,分針,時針,表盤的變換中心統一。時碼數字包括個位和十位,個位是 0-9 ,十位是 0-6 ,放到合適的地方。然后命名,由于 maya 不支持中文名,所以我用漢語拼音代替。
(圖片較大 請放大查看)
3 開始動畫秒針,分析秒針轉一周用的時間是 60 秒,那么 1 秒時間,秒針將轉 6 度(角度), 2 秒轉 12 度, 3 秒 ----- ,由此可見
秒針轉過角度數(單位:角度) = 時間(單位:秒) *6 (單位:角度 / 秒)
打開表達式編輯器方法(以后不再重復)之一是在通道框找到 miaozhen.rotatey 這個屬性,右鍵選擇 expressions ,輸入 miaozhen.rotatey=time*6, 播放一下動畫,發現有錯誤,秒針方向走反了,應該是順時針方向才對,該成 miaozhen.rotatey=trunc(time)*(-6) ,盡管寫成
miaozhen.rotatey=trunc(time)*-6 或 miaozhen.rotatey=-time*6 的結果也正確,但還是符合自己的邏輯為好。播放一下動畫正確,但還不夠理想,一般鐘表的秒針很少是勻速旋轉的,都是 6 度一跳,該成 miaozhen.rotatey=floor(time)*(-6), floor 中文是地板的意思,可以聯想一幢樓,每層是 1 米高,每層地板的高度就是 0 米, 1 米, 2 米 ---- , floor 函數就是將每層高度統一變成地板的高度,除去了小數,只有整數。 這樣執行 floor ( time ), 0<time<1 時, floor ( time ) =0 , 1<time<2 時, floor ( time ) =1 , 最后的表達式是 miaozhen.rotatey=floor(time)*(-6) , 或者執行 miaozhen.rotatey=trunc(time)*(-6) 。 trunc 就是取一個數的整數部分,含義不同但好象執行的結果完全相同,但自變量小于 0 的時候 floor 和 trunc 就不同了,這時候 trunt 和 ceil 執行的結果就相同了, ceil 是天花板的意思,與 floor 是一對。 總結這一步驟, 1 最后表達式為 miaozhen.rotatey=floor(time)*(-6) 或 miaozhen.rotatey=trunc(time)*(-6)
2 記住 3 個函數: floor , ceil , trunc
(圖片較大 請放大查看)
4 制作分針動畫,有了秒針的經驗,分針就容易了,表達式為 fenzhen.rotatey=(time*(-6))/60 ,手表的發條是用來對時間的,它控制著分針,加入發條的控制分針的動畫 fenzhen.rotatey=(time*(-6))/60+fatiao.rotatex ,現在轉動發條,觀察時針的變化。
5 制作時針動畫,同理 shizhen.rotatey=fenzhen.rotatey/60
6 制作時碼的動畫,時碼個位是 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 十位是 0 , 1 , 2 , 3 , 4 , 5 // 先分析個位上的 0 ,控制它顯示的是 visibility 屬性,在 0 秒, 10 秒, 20 秒, 30 秒, 40 秒, 50 秒 ---- ,這些時間里 0 是可視的,它們有個共同規律就是頭能被 10 整除,其它時間里 0 是不可視的,在 visibility 屬性里輸入表達式: if (trunc(time)%10==0) gewei|trim_char_0_1_1.visibility=1; else gewei|trim_char_0_1_1.visibility=0 ; 意思就是 如果 時間取整數除以 10 的余數為 0 個位數字 0 的可視性就等于 1 否則 個位數字 0 的可視性就等于 0////% 是除法取余數 .// // 然后個位上的 1 ,與個位上的 0 不同的是余數為 1 ,輸入 if (trunc(time)%10==1) gewei|trim_char_1_1_1.visibility=1; else gewei|trim_char_1_1_1.visibility=0; 依此類推,最后 if (trunc(time)%10==9)
trim_char_9_1_1.visibility=1; else trim_char_9_1_1.visibility=0 十位與個位同理,只不過加了一個范圍,十位上的 0 表達式為: if (time%60>=0 && time%60<10) shiwei|trim_char_0_1_1.visibility=1; else shiwei|trim_char_0_1_1.visibility=0 例如十位上的 0 ,在余數大于等于 0 并且小于 10 的時候可視,否則不可視。 依次類推最后一個是 if (time%60>=50 && time%60<60) shiwei|trim_char_5_1_1.visibility=1; else shiwei|trim_char_5_1_1.visibility=0 還可以再加幾位數字,制作一個標準的 時:分:秒: frame 時碼,這就和 after effect 濾鏡的效果一樣,最后把時間線拉的長一些,把時間放到任意時刻播放動畫, 或是再轉轉發條,感覺一下,完。
新聞熱點
疑難解答