Las siguientes son las formas posibles de animar svg:
SVG ANIMACIONES SONRIENTES
El SVG se puede animar a través de su potente lenguaje de marcado nativo, llamado SMIL, exportado directamente desde herramientas de animación como Adobe Animate CC + flash2svg.
Para animar un SVG con SMIL incluso en navegadores que no son compatibles, solo necesita usar un polyfill SMIL.
Un polyfill es un código de JavaScript especial que brinda soporte para las funciones que faltan en un navegador, traduciendo la codificación original en una que el navegador pueda entender.
El polyfill SMIL realizado por Eric Willigers hace exactamente eso: traduce SMIL en API de animaciones web que incluso el navegador de Microsoft admite. Es tan eficiente que los desarrolladores de Google Chrome decidieron abandonar el soporte SMIL nativo y centrarse en las animaciones web, dejando a Eric Willigers polyfill la tarea de reproducir archivos SMIL en Chrome.
Alguien interpretó erróneamente esto como una depreciación de SMIL por parte de Chrome, y criticó a los desarrolladores por esta elección. Pero no fue una verdadera depreciación, solo una reubicación del trabajo de interpretar SMIL a nivel de polyfill.
De hecho, los propios desarrolladores de Chrome citaron el polyfill de Willigers en el anuncio oficial sobre su intención de desaprobar SMIL.
Entonces, si lees en la web sobre la desaparición de SMIL, no te preocupes. La "muerte" de SMIL fue muy exagerada. Es más como un renacimiento.
Para usar SMIL en todos los navegadores, incluidos IE y EDGE, solo necesita agregar este polyfill de javascript a su página web:
https://github.com/ericwilligers/svg-animation
Aquí hay una página de demostración que utiliza el polyfill hecho por Tom Byrne, el autor del popular exportador flash2svg:
la página sin el polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears.htm
y la misma página con el polyfill:
http://www.tbyrne.org/staging/smil-polyfill/tears_polyfill.htm
Si nos fijamos en la fuente, se explica por sí misma.
Además, el rendimiento con el polyfill suele ser mejor que el SMIL original, porque en muchos navegadores Web Animations es acelerado por hardware, mientras que SMIL generalmente no lo es.
ANIMACIONES DE EXPORTACIÓN EN SVG SMIL
La forma más sencilla de crear animaciones SVG es utilizar herramientas como Adobe Animate CC para dibujarlas y complementos como Flash2svg ( https://github.com/TomByrne/Flash2Svg ) para exportarlas en SVG. Con él, puede exportar casi todas las animaciones + sonido como un solo archivo SVG, como este episodio de dibujos animados:
http://www.tbyrne.org/portfolio/smil/LoveDota.svg
SVG ANIMATION JS BIBLIOTECAS
La forma javascript es más complicada. En primer lugar, debes ser un programador de JavaScript. Entonces tienes que elegir entre muchas bibliotecas. Los más populares son:
SnapSVG
http://snapsvg.io
Esta biblioteca es la sucesora de la antigua y popular biblioteca de animación Raphael hecha por el mismo autor. Muy estable, pero convierte SVG en un formato interno en tiempo de ejecución para animarlo. Las opciones de transformación también son muy básicas, solo interpolación lineal. (NOTA: También hay un complemento snap.svg para Adobe Animate CC, pero los archivos exportados están hinchados. El exportador produce un comando snap svg para cada cuadro de la animación, no para cada fotograma clave, produciendo un archivo svg de 18Kb con más de 1000 líneas de código, solo para rotar un rectángulo simple en 360 grados. El complemento Flash2svg es mucho más eficiente, solo un comando y pocos bytes para hacer el mismo trabajo).
Greensock MorphSVG
http://greensock.com/morphSVG
Una biblioteca de morphing con todas las funciones que permite animar SVG fácilmente y sin la necesidad de convertirlos en un formato interno. Simplemente cree fotogramas clave de 3-4 svg en Inkscape y la libra Greenock SVGMorphing se interpolará automáticamente entre los fotogramas y creará todos los fotogramas intermedios para una reproducción fluida. Aquí hay un ejemplo:
http://codepen.io/Emasoft/pen/reOqYE
3D Seen.js
http://seenjs.io/demo-svg-canvas.html
Si desea animar en 3D, esta biblioteca es muy poderosa.
Seen.js procesa mallas de archivos .obj en 3D en SVG y las anima con mucha facilidad.
SVG EDITORES DE IMÁGENES
En cuanto a las herramientas, puede crear los fotogramas clave de animación principalmente con tres software:
Inkscape: código abierto, tiene muchas características, es un paquete avanzado de edición de vectores hecho por personas que participan en el Grupo de Trabajo SVG. La referencia para el formato SVG. No es fácil de aprender.
Adobe Illustrator: software comercial de dibujo vectorial muy potente, ofrece muchas características que SVG aún no admite, pero también tiene la peor compatibilidad con el formato. A menudo necesitará editar manualmente el archivo SVG exportado para arreglar el desastre de Illustrator. Pero es muy popular en la escuela de arte, y todos los gráficos saben cómo usarlo.
Affinity Designer: este es un software comercial como Illustrator, pero con una excelente compatibilidad SVG, casi al nivel de Inkscape. La interfaz de usuario es mucho más amigable, y ahora se está volviendo muy popular entre los artistas SVG.
SVG EDITORES DE ANIMACIÓN
Actualmente el único editor de animación SVG es este:
- Adobe Animate CC: el antiguo Adobe Flash Pro fue reescrito completamente por Adobe para migrar de las animaciones flash ahora obsoletas a las animaciones SVG modernas. Puede exportar las animaciones SVG resultantes junto con una biblioteca javascript personalizada, o elegir guardar en SVG + SMIL usando complementos como "flash2svg". Esta última opción es muy eficiente, siempre la uso en lugar del exportador nativo hinchado.
Puede descargar el complemento gratuito desde aquí:
https://github.com/TomByrne/Flash2Svg
O instálelo desde el panel de complementos de Adobe:
https://creative.adobe.com/addons/products/7232
Lamentablemente, Adobe Animate CC es comercial. Hay aplicaciones de animación alternativas de código abierto gratuitas, pero las probé todas y todavía apestan en mi humilde opinión. Esperemos por el futuro.
Referencias:
Mi publicación de blog más exhaustiva sobre el tema: https://medium.com/@fmuaddib/the-following-are-the-possible-ways-to-create-professional-animations-in-svg-9d4caca5f4ec
El caso hace referencia a snap.svg:
/programming/35727635/adobe-animate-snap-svg-plugin-huge-files