I seguenti sono i modi possibili per animare svg:
ANIMAZIONI SORRIDENTI DI SVG
L'SVG può essere animato tramite il suo potente linguaggio di markup nativo, chiamato SMIL, esportato direttamente da strumenti di animazione come Adobe Animate CC + plug-in flash2svg.
Per animare un SVG con SMIL anche su browser privi di supporto, è sufficiente utilizzare un polyfill SMIL.
Un polyfill è uno speciale codice javascript che fornisce supporto per le funzioni mancanti da un browser, traducendo la codifica originale in una che il browser può comprendere.
Il polyfill SMIL realizzato da Eric Willigers fa proprio questo: traduce SMIL in API di animazioni Web supportate anche dal browser Microsoft. È così efficiente che gli sviluppatori di Google Chrome hanno deciso di abbandonare il supporto SMIL nativo e concentrarsi sulle animazioni Web, lasciando a Eric Willigers il compito di eseguire il compito di riprodurre file SMIL in Chrome.
Qualcuno ha erroneamente interpretato ciò come una deprecazione di SMIL da parte di Chrome e ha criticato gli sviluppatori per questa scelta. Ma non è stata una vera deprecazione, solo una delocalizzazione del lavoro di interpretazione di SMIL a livello di polyfill.
In effetti gli stessi sviluppatori di Chrome hanno citato la polifill Willigers nell'annuncio molto ufficiale dell'intenzione di deprecare SMIL.
Quindi, se leggi sul web la scomparsa di SMIL, non preoccuparti. La "morte" di SMIL è stata fortemente esagerata. È più come una rinascita.
Per usare SMIL su tutti i browser, inclusi IE ed EDGE, devi solo aggiungere questo polyfill javascript alla tua pagina web:
https://github.com/ericwilligers/svg-animation
Ecco una pagina demo che utilizza il polyfill realizzato da Tom Byrne, l'autore del famoso esportatore flash2svg:
la pagina senza il polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears.htm
e la stessa pagina con il polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears_polyfill.htm
Se guardi la fonte è praticamente autoesplicativa.
Anche le prestazioni con il polyfill sono spesso migliori dell'originale SMIL, perché su molti browser le animazioni Web sono accelerate dall'hardware, mentre SMIL di solito non lo è.
ANIMAZIONI DI ESPORTAZIONE IN SVG SMIL
Il modo più semplice per creare animazioni SVG è utilizzare strumenti come Adobe Animate CC per disegnarli e plugin come Flash2svg ( https://github.com/TomByrne/Flash2Svg ) per esportarli in SVG. Con esso puoi esportare quasi tutte le animazioni + il suono come un singolo file SVG, come in questo episodio di cartoni animati:
http://www.tbyrne.org/portfolio/smil/LoveDota.svg
LIBRERIA JS DI ANIMAZIONE SVG
Il modo javascript è più complicato. Prima di tutto devi essere un programmatore javascript. Quindi devi scegliere tra molte librerie. I più popolari sono:
SnapSVG
http://snapsvg.io
Questa libreria è il successore della vecchia e popolare libreria di animazioni Raphael realizzata dallo stesso autore. Molto stabile, ma converte SVG in un formato interno durante l'esecuzione per animarlo. Le opzioni di morphing sono anche molto semplici, solo interpolazione lineare. (NOTA: esiste anche un plug-in snap.svg per Adobe Animate CC, ma i file esportati sono gonfiati. L'esportatore produce un comando snap svg per ogni fotogramma dell'animazione, non tutti i fotogrammi chiave, producendo un file svg 18 KB con oltre 1000 righe di codice, solo per ruotare un semplice rettangolo di 360 gradi. Il plugin Flash2svg è molto più efficiente, solo un comando e pochi byte per fare lo stesso lavoro).
Greensock MorphSVG
http://greensock.com/morphSVG
Una libreria di morphing con funzionalità complete che consente di animare facilmente SVG e senza la necessità di convertirle in un formato interno. Basta creare 3-4 fotogrammi chiave in formato svg in Inkscape e la libreria Greenock SVGMorphing interpolerà automaticamente tra i fotogrammi e creerà tutti i fotogrammi intermedi per una riproduzione fluida. Ecco un esempio:
http://codepen.io/Emasoft/pen/reOqYE
3D Seen.js
http://seenjs.io/demo-svg-canvas.html
Se vuoi animare in 3D questa libreria è molto potente.
Seen.js esegue il rendering delle mesh di file .obj 3D in SVG e le anima molto facilmente.
EDITORI DI IMMAGINI SVG
Per quanto riguarda gli strumenti, è possibile creare i fotogrammi chiave di animazione principalmente con tre software:
Inkscape: open source, ha tantissime funzionalità, è un pacchetto di editing vettoriale avanzato realizzato da persone che partecipano al gruppo di lavoro SVG. Il riferimento per il formato SVG. Non facile da imparare.
Adobe Illustrator: software commerciale di disegno vettoriale molto potente, offre molte funzionalità non ancora supportate da SVG, ma ha anche la peggiore compatibilità con il formato. Sarà spesso necessario modificare manualmente il file SVG esportato per correggere il disordine di Illustrator. Ma è molto popolare nella scuola d'arte e tutti i grafici sanno come usarlo.
Affinity Designer: questo è un software commerciale come Illustrator, ma con un'eccellente compatibilità SVG, quasi a livello di Inkscape. L'interfaccia utente è molto più intuitiva e sta diventando molto popolare tra gli artisti SVG.
EDITORI DI ANIMAZIONE SVG
Attualmente l'unico editor di animazioni SVG è questo:
- Adobe Animate CC: l'ex Adobe Flash Pro è stato completamente riscritto da Adobe per migrare dalle ormai obsolete animazioni flash alle moderne animazioni SVG. Puoi esportare le animazioni SVG risultanti insieme a una libreria javascript personalizzata o scegliere di salvare in SVG + SMIL usando plugin come "flash2svg". Quest'ultima opzione è molto efficiente, la uso sempre al posto dell'esportatore nativo gonfio.
Puoi scaricare il plug-in gratuito da qui:
https://github.com/TomByrne/Flash2Svg
Oppure installalo dal pannello Plugin Adobe:
https://creative.adobe.com/addons/products/7232
Purtroppo Adobe Animate CC è commerciale. Esistono applicazioni di animazione alternative open source gratuite, ma le ho provate tutte e continuano a succhiare IMHO. Speriamo per il futuro.
Riferimenti: il
mio post più esauriente sul blog sull'argomento: https://medium.com/@fmuaddib/the-following-are-the-possible-ways-to-create-professional-animations-in-svg-9d4caca5f4ec
Il caso di riferimento su snap.svg:
/programming/35727635/adobe-animate-snap-svg-plugin-huge-files