SVG 變形動畫
這陣子因為參加六角學院舉辦的 2023 F2E 活動有導入 SVG 效果,
故此篇簡單紀錄一下心得。我不知道該分類到哪裡,但現階段我應該不會有長時間研究 SVG 的機會,所以先放在此分類。
免費工具
網路上應該都能看到一些教學文章分享到 SVGator 這套工具,
它是一個免費的線上編輯工具,能夠輸出 SVG 動畫導入到網頁使用,
不過...只有位移、旋轉、縮放這三個動畫效果是免費的,如果是需要簡單的效果,
是可以直接用它做出來。
變形原理
在我興高采烈地設定好關鍵影格做變形後,輸出時發現變形效果 是要錢的,就瞬間絕望了(?
天無絕人之路,嘗試用英文下了關鍵字後,第一篇就是我想要的簡單明瞭懶人包。
SVG 有一個強大的標籤叫做 animate,裡面的屬性和 CSS 動畫類似,
可以控制動畫的時間、次數、時間曲線等等,最重要的是 values 這個屬性!
觀察上面的範例可以發現,values 是長長一串天文數字,
其實這些數字代表每個形變的關鍵影格!
一般不規則的 SVG 圖型會透過 path 這個標籤來定義形狀,
path 標籤裡面會有一個 d 值, 它就是用來描述 path 上每個錨點的位置、曲線變化,
animate 標籤正是透過這個 d 值的變化產生動畫!
編輯 SVG
這時我們只需要任何能編輯 SVG 的工具,常見的以拉、GIMP 就可以了, 或是線上編輯器。
把想要變形的 SVG 圖檔載入,對其拉伸變成想要的形狀再輸出,
就可以得到新的 SVG 檔,我們要擷取裡面 path 的 d 值,
要注意產生新圖案時不能更改錨點的數量!!
因為 SVG 的 animate 主要是依靠錨點對錨點的計算進行自動補間動畫。