Web用のSVGをどのようにアニメーション化しますか?


12

ベクターグラフィックスは現在、Webやモバイルアプリケーションさえも引き継いでいます。Webページやモバイルアプリのアイコン、ボタン、要素は、ベクトルベースになりつつあり、あらゆる種類の画面解像度、dpi、比率などでレンダリングする必要があるため、ビットマップをドロップします。モバイルブラウザでページを読みやすくすると、ビットマップアセットがassetsくなり、使用できなくなります。

それでは、SVGでアニメーションアイコン、背景、およびコントロールの作成を開始しますが、SVGファイルをどのようにアニメーション化しますか?


1
あなたの質問は非常に広範であり、GDSEに最適ではない意見ベースの回答を生成する場合があります。当社確認してください助けを /回答の質問をする最善の方法を参照してください。また、ツールとプロセスに関しては、「最良」は常に非常に主観的で状況依存です。
bemdesign

Webで使用するSVGアニメーションについて知りたい場合は、質問を合理化し、stackoverflow.comで質問してください。
ルチアーノ

これは非常に重要でよくある質問です。svgをアニメーション化する他のツールまたはライブラリを知っている場合は、回答を提供してください。ありがとうございました。
エマヌエーレサベッタ16年

4
この質問で私が抱えている問題は、ツールを求めることに基づいたリソース収集の質問と考えることができるということです。私たちが本当に議論すべきこと、SVGアニメーションの実行に集中できるかどうかという質問は気にしません。範囲内に収まるように質問を編集しました。
DᴀʀᴛʜVᴀᴅᴇʀ

@EmanueleSabetta質問に対する回答を受け取った場合は、回答の1つを以下の承認済み回答としてマークしてください。
DᴀʀᴛʜVᴀᴅᴇʀ

回答:


18

この回答の多くは、ウェブのイラストをアニメーション化する方法に関するこの関連質問にも掲載されています。


SMILアニメーションを避ける

サラSoueidan、おそらく最高のウェブ上のSVGsのアニメーターは、書いた「私は私が知っているSMILアニメーションへのガイドを書きましたが、彼らの将来を見て、私は個人的にはもう利用していません。」どちらもすべきではありません。

SMILアニメーションはIE、Edge、一部のモバイルブラウザーでは動作ず、Chrome / Operaによって徐々にドロップされています(ただし、最近では、Chromeチームはこの廃止は一時的に停止されたと述べています)。99%の時間は使用しないでください。

非常にシンプルなアニメーションにCSSを使用する

SVGは、純粋なCSS(:hoverstates、transforms、transitions、およびanimations の使用を含む)を使用して主にアニメーション化できます。だ、完全なCSSアニメーションのサポートを得るために計画されたが現在は一部だけサポートされており、クロスブラウザーの問題とバグができます。

Sara Soueidan 氏は、 CSSはSVGをアニメーション化するのに優れているが、これらのクロスブラウザーの問題を解決するのに役立つため、JSを好みます。そのため、可能な場合は使用しますが、アニメーションがより複雑な場合やクロスブラウザで動作しない場合はJSにフォールバックします。

CSSが機能しない場合はJavaScriptアニメーションを使用します

ほとんどの場合、SVGはJavaScriptアニメーションライブラリを必要とせずに小さなJavaScriptを使用してアニメーション化できます。JSでのアニメーションは、より多くのクロスブラウザーサポートを備えており、基本的な理解があれば簡単に使用できます。

タイムラインなどの使用を必要とする複雑なアニメーションの場合、GSAPなどのライブラリを使用すると非常に役立ちます。他にも数え切れないほどのSVGアニメーションライブラリがあります。Snap.svgはもう 1つの大きなライブラリですが、ほとんどのアニメーションはGSAPと同じくらい簡単に、またはパフォーマンスが優れています。

特定の種類のアニメーションの場合、GSAPのMorphSVGなどの特定のJSプラグインを使用すると、クロスブラウザーの問題とすべての計算を処理するため、時間を大幅に節約できます。ただし、ほとんどのアニメーションはこのようなプラグインを必要としません。詳細については、「SMIL機能の代替ガイド」を参照してください。

SMILにポリフィルを使用することも許容されますが、あまり広く使用/テストされていないため、ポリフィルを使用するのはうんざりです。そうは言っても、Eric WilligersFakeSmileが最も一般的です。

ツーリング

SVG + JSにエクスポートする唯一のソフトウェアは、Lottie(以前のBodymovin)と呼ばれるAdobe After Effectsプラグイン、Flash 2 SVGと呼ばれるFlash拡張機能、およびSVG Circusと呼ばれる小さなオンラインツールです。それ以外に、Adobe Edge Animate、Adobe Animate CC、Animatronなどのソフトウェアアニメーターは、使用すべきではないSMILアニメーションにエクスポートします。そのため、エディターからエクスポートされたSVGを使用して、開発者にSVG + CSSまたはSVG + JSアニメーションを作成させるのが最善です。Inkscapeにはチュートリアルとこれを行う方法の例をリンクする優れたリソースがあります。

将来、より多くのアニメーションソフトウェアがSVG + JSへのエクスポートをサポートすると確信しています。


その他の重要な注意事項

  • パフォーマンスを念頭に置くことが重要です。Sara Drasnerは、SVGのパフォーマンスベンチマークをいくつか作成しました。これは、可能な場合はハードウェアアクセラレーションCSSアニメーションを選択する必要があるが、不可能な場合は適切な JavaScriptアプローチにフォールバックする必要があることを示しています。

  • <object>タグでSVGを使用する<svg>か、対話型の場合はXML要素に直接埋め込み、非対話型の場合は背景画像として使用するのが最善ですが、他の方法もあります。


Webアニメーションの詳細については、レイチェルナボールのAリストパートに関する投稿を参照してください。ツールに関するその他の提案については、この投稿は非常に役立ちますが、すべての感情、特にSMILアニメーションの表示方法には同意しません。


-SVGはモバイルアプリでも使用されます。過去2年間におけるSVGの最大の成長は、アプリUIベクターアセットでした。ビットマップは使用されなくなりました。
エマヌエーレサベッタ16年

また、現在、CSSで大きなアニメーションを作成する方法はありません。このような大きなアニメーションを作成するには、SMILが必要です。tbyrne.org
エマヌエーレサベッタ

:SMILをサポートを停止するにはクローム開発チームの選択については、彼らがそのように非常にスレッドで主な理由は、あなたが今、このポリフィル経由でSMILを使用することができるという事実であったことを告げたアナウンスgithub.com/ericwilligers/svg-animation
エマヌエーレサベッタ16年

4
おっと、私は技術がひどい場合は地獄をピッチフォークするのが好きですが、20年前にその名前が付けられる前からFlashがベクトルアニメーションを処理していました。ブラウザ間で何かが機能しない方法で始まり、おそらく将来的に標準のようなものが存在する可能性がある(そしてすべての指が実装される)で終わるこの(素晴らしい、有益な、+ 1)答えを読むのは悲しいですどこかに)。「ツーリング」の段落が始まる場合と「唯一のソフトウェア...」、何かが間違っています。親愛なるインターネット、あなたのsh * tを集めてください。
ラピドグラフ

1
また、After Effectsからsvg + JSにアニメーションをエクスポートするBodymovinを確認する必要があります github.com/bodymovin/bodymovin
airnan

2

私はいつも、JSライブラリ以外のものに依存することは、WRTのサポート/メンテナンスの大きな苦痛だと感じていました。

私はいつもD3.jsを使用しています。もともとは、データセットからインタラクティブなSVG / DOM要素を作成するために作成されました。ただし、JSがアクセスできる限り、ページに含まれるSVG / DOMを変更できます。

SVG / DOMを作成/アニメーション化するために、さまざまなプロジェクトで使用しています。ソフトリアルタイムダッシュボード、地図の視覚化、DOM変換を含むいくつかの例、およびPDFに含めるSVGファイルの作成。ウェブでも見ました。Webサイトには、多数の例と、それを使用したページへのリンクがあります。

クロスブラウザーとの互換性が非常に高く、活発なコミュニティがあり、習得しやすいため、お勧めします。Webページを見て、実際に使用されているものに注意を払い、それでできることの小さなサンプルを確認してください。


1
いくつかの追加情報により、この回答の品質が大幅に向上する可能性があります。ライブラリの名前の削除はあまり役に立ちません。他のより単純な方法とは対照的に、D3はいつ使用する必要がありますか?
ザック

2

以下は、svgをアニメーション化する可能な方法です。

SVG SMILアニメーション

SVGは、SMILと呼ばれる強力なネイティブマークアップ言語でアニメーション化でき、Adobe Animate CC + flash2svgプラグインなどのアニメーションツールから直接エクスポートできます。

サポートされていないブラウザでもSMILでSVGをアニメーション化するには、SMILポリフィルを使用するだけです。

ポリフィルは、ブラウザにない機能をサポートする特別なJavaScriptコードであり、ブラウザが理解できる元のエンコーディングに変換します。

Eric Willigersによって作成されたSMILポリフィルは、まさにそれを実行します。SMILを、MicrosoftブラウザーでさえサポートするWeb Animations APIに変換します。非常に効率的であるため、Google Chrome開発者はネイティブのSMILサポートを廃止し、Webアニメーションに専念し、ChromeでSMILファイルを再生するタスクをEric Willigersに任せました。

誰かがこれをChromeによるSMILの非推奨と誤って解釈し、この選択について開発者を批判しました。しかし、それは本当の非難ではなく、ポリフィルレベルでのSMILの解釈の仕事の単なる再配置でした。

実際、Chrome開発者自身は、SMILを廃止する意図についての非常に公式な発表でウィリガーポリフィルを引用しました。

したがって、SMILの終miseについてWebを読み回しても心配する必要はありません。SMILの「死」は大きく誇張されました。それは再生のようなものです。

IEやEDGEを含むすべてのブラウザでSMILを使用するには、次のjavascriptポリフィルをWebページに追加するだけです。

https://github.com/ericwilligers/svg-animation

人気のあるflash2svgエクスポーターの作成者であるTom Byrneが作成したポリフィルを使用したデモページを次に示します。

ポリフィルのないページ:http ://www.tbyrne.org/staging/smil-polyfill/tears.htm

ポリフィルのある同じページ:http ://www.tbyrne.org/staging/smil-polyfill/tears_polyfill.htm

ソースを見ると、ほとんど一目瞭然です。

また、多くのブラウザではWebアニメーションがハードウェアアクセラレーションされているのに対し、SMILは通常そうではないため、ポリフィルのパフォーマンスは多くの場合元のSMILよりも優れています。

SVG SMILでのアニメーションのエクスポート

SVGアニメーションを作成するより簡単な方法は、Adobe Animate CCなどのツールを使用してそれらを描画し、Flash2svg(https://github.com/TomByrne/Flash2Svg)などのプラグインを使用してSVGにエクスポートすることです。これを使用すると、この漫画エピソードのように、ほぼすべてのアニメーションとサウンドを単一のSVGファイルとしてエクスポートできます。http
//www.tbyrne.org/portfolio/smil/LoveDota.svg

SVGアニメーションJSライブラリ

JavaScriptの方法はより複雑です。まず、javascriptプログラマーである必要があります。次に、多くのライブラリから選択する必要があります。より人気があります:

  • SnapSVG http://snapsvg.io
    このライブラリは、同じ作者によって作成された古い人気のあるRaphaelアニメーションライブラリの後継です。非常に安定していますが、SVGを実行時に内部形式に変換してアニメーション化します。モーフィングオプションも非常に基本的なもので、単なる線形補間です。(注:Adobe Animate CC用のsnap.svgプラグインもありますが、エクスポートされたファイルは肥大化します。エクスポーターはすべてのキーフレームではなくアニメーションのすべてのフレームに対して1つのsnap svgコマンドを生成し、1000行を超える18Kb svgファイルを生成します単純な長方形を360度回転させるためのコードのコードです。Flash2svgプラグインははるかに効率的で、1つのコマンドと同じジョブを実行するための数バイトだけです。

  • Greensock MorphSVG
    http://greensock.com/morphSVG
    SVGを簡単にアニメーション化でき、SVGを内部形式に変換することなく、完全に機能するモーフィングライブラリ。Inkscapeで3〜4個のsvgキーフレームを作成するだけで、Greenock SVGMorphing libはフレーム間を自動的に補間し、スムーズな再生のためにすべての中間フレームを作成します。次に例を示します。http
    //codepen.io/Emasoft/pen/reOqYE

  • 3D Seen.js
    http://seenjs.io/demo-svg-canvas.html 3Dで
    アニメーション化する場合、このライブラリは非常に強力です。
    Seen.jsは3D .objファイルメッシュをSVGでレンダリングし、非常に簡単にアニメーション化します。

SVG画像エディター

ツールについては、主に3つのソフトウェアを使用してアニメーションキーフレームを作成できます。

  • Inkscape:オープンソースであり、多くの機能を備えています。SVGワーキンググループに参加している人々が作成した高度なベクター編集パッケージです。SVG形式のリファレンス。学ぶのは簡単ではありません。

  • Adobe Illustrator:商用の非常に強力なベクター描画ソフトウェア。SVGでまだサポートされていない多くの機能を提供しますが、形式との互換性が最悪です。多くの場合、エクスポートされたSVGファイルを手動で編集して、イラストレーターの混乱を修正する必要があります。しかし、それは美術学校で非常に人気があり、すべてのグラフィック家はそれを使用する方法を知っています。

  • Affinity Designer:これはIllustratorのような商用ソフトウェアですが、ほぼInkscapeのレベルで優れたSVG互換性を備えています。UIははるかに使いやすく、SVGアーティストの間で非常に人気が高まっています。

SVGアニメーションエディター

現在、唯一のSVGアニメーションエディタは次のとおりです。

  • Adobe Animate CC:以前のAdobe Flash Proは、Adobeによって完全に書き直され、現在廃止されているフラッシュアニメーションから最新のSVGアニメーションに移行しました。結果のSVGアニメーションをカスタムjavascriptライブラリとともにエクスポートするか、「flash2svg」などのプラグインを使用してSVG + SMILで保存することを選択できます。この最後のオプションは非常に効率的で、肥大化したネイティブエクスポーターの代わりに常に使用します。

ここから無料のプラグインをダウンロードできます:https : //github.com/TomByrne/Flash2Svg

または、Adobeプラグインパネルからインストールしますhttps : //creative.adobe.com/addons/products/7232

残念ながら、Adobe Animate CCは商用です。無料のオープンソースの代替アニメーションアプリケーションがありますが、私はそれらすべてを試してみましたが、それらはまだ私見を吸います。未来に期待しましょう。

参照:
件名に関する私のより包括的なブログ投稿:https : //medium.com/@fmuaddib/the-following-are-the-possible-ways-to-create-professional-animations-in-svg-9d4caca5f4ec

snap.svgについて参照されているケース:https ://stackoverflow.com/questions/35727635/adobe-animate-snap-svg-plugin-huge-files


一部のブラウザは、CSSを使用してSVG要素をアニメーション化することもサポートしています。
bemdesign

この答えは非常に説得力があり、Webアニメーションで働くトッププロフェッショナルが示唆する多くのことを無視しています。
ザックソーサー

1
Adobe Animate CCは、唯一のSVGアニメーションソフトウェアとはほど遠い
ザックサウチェ

1
JSライブラリを使用して多くのSVGをアニメーション化する必要はありません。あなたの答えは、それらが必要であることを意味します
ザックソーサー

4
ねえ、そのが、これはそのまま使用すると、リンクのRedditからコピーされたことを確認いたしreddit.com/r/webdev/comments/4996ph/how_best_to_animate_svgsが、これはあなたではない場合、あなたがする必要がある--- 編集のを示すために、あなたの答えを見積もり。または、自分の言葉で答えを書いてください。
ライアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.