Lottieは、WebおよびiOS向けのモバイルライブラリで、Adobe After EffectsアニメーションをBodymovinでJSONとしてエクスポートし、モバイルでネイティブにレンダリングします!
デザイナーは初めて、エンジニアが手作業で苦労してアニメーションを再作成することなく、美しいアニメーションを作成し、配信できるようになりました。百聞は一見に如かずということわざがあるように、ここでは13,000語分の価値があるものを見てみましょう。
aescripts + aepluginsからダウンロード: http://aescripts.com/bodymovin/
または、Adobe Storeから入手: https://creative.adobe.com/addons/products/12557 (CC 2014以降)。
After Effectsを閉じる
build/extension/bodymovin.zxp
にあるzipファイルをAdobe CEPフォルダーに解凍
WINDOWS
C:\Program Files (x86)\Common Files\Adobe\CEP\extensions または
C:\<username>\AppData\Roaming\Adobe\CEP\extensions
MAC
/Library/Application\ Support/Adobe/CEP/extensions/bodymovin
(ターミナルを開いて以下を入力)
$ cp -R YOURUNZIPEDFOLDERPATH/extension /Library/Application\ Support/Adobe/CEP/extensions/bodymovin
次に以下を入力
$ ls /Library/Application\ Support/Adobe/CEP/extensions/bodymovin
(正しくコピーされたか確認するために入力)
レジストリキーを編集
WINDOWS
レジストリキーHKEY_CURRENT_USER/Software/Adobe/CSXS.6
を開き、PlayerDebugMode
という名前のキー(型: String, 値: 1
)を追加。
MAC
ファイル~/Library/Preferences/com.adobe.CSXS.6.plist
を開き、キーPlayerDebugMode
(型: String, 値: 1
)を持つ行を追加。
以下の手順に従って手動でzxpをインストール: https://helpx.adobe.com/x-productkb/global/installingextensionsandaddons.html 「サードパーティ製拡張機能のインストール」に直接スキップしてください
brew tap danielbayley/adobe
brew cask install lottie
# with npm
npm install lottie-web
# with bower
bower install bodymovin
または、ここからスクリプトファイルを使用することもできます: https://cdnjs.com/libraries/bodymovin または、AEプラグインで[Get Player]をクリックして直接取得します。
基本的なアニメーションをエクスポートしてHTMLページに読み込む方法を説明したビデオチュートリアルはこちらです。
htmlに.jsファイルを含めます (本番環境ではgzip圧縮することを忘れないでください)。
<script src="js/lottie.js" type="text/javascript"></script>
lottie.loadAnimation()を呼び出してアニメーションを開始できます。これは、以下を含む一意のパラメータとしてオブジェクトを受け取ります。
これは、play、pause、setSpeedなどで制御できるアニメーションインスタンスを返します。
lottie.loadAnimation({
container: element, // the dom element that will contain the animation
renderer: 'svg',
loop: true,
autoplay: true,
path: 'data.json' // the path to the animation json
});
各設定の説明については、このWikiページを確認してください。 https://github.com/airbnb/lottie-web/wiki/Composition-Settings
アニメーションインスタンスには、これらの主なメソッドがあります
href
:通常はlocation.href
として渡します。URLに#
記号がないSafariでマスクの問題が発生した場合に便利です。speed
:1が通常の速度です。value
:数値。isFrame
:最初の引数が時間ベースの値かフレームベースの値かを定義します(デフォルトはfalse)。value
:数値。isFrame
:最初の引数が時間ベースの値かフレームベースの値かを定義します(デフォルトはfalse)。direction
:1は順方向、-1は逆方向です。segments
:配列。アニメーションの最初と最後のフレームとして使用される2つの数値を格納できます。または、それぞれ2つの数値を持つ一連の配列を含めることができます。forceFlag
:ブール値。falseに設定すると、現在のセグメントが完了するまで待機します。trueの場合、値をすぐに更新します。
useSubFrames
:falseの場合、元のAEのfpsを尊重します。trueの場合、中間値を使用してすべてのrequestAnimationFrameで更新されます。デフォルトはtrueです。
inFrames
:trueの場合、期間をフレームで返し、falseの場合、秒で返します。
updateTextDocumentData -- テキストレイヤーのデータを更新する 詳細情報
lottie.play() -- 1つのオプションパラメータnameで特定のアニメーションをターゲットにします
lottie.stop() -- 1つのオプションパラメータnameで特定のアニメーションをターゲットにします
lottie.setSpeed() -- 最初の引数speed(1が通常の速度)-- 1つのオプションパラメータnameで特定のアニメーションをターゲットにします
lottie.setDirection() -- 最初の引数direction(1が通常の方向)-- 1つのオプションパラメータnameで特定のアニメーションをターゲットにします
lottie.searchAnimations() -- class "lottie"または"bodymovin"を持つ要素を探します
lottie.loadAnimation() -- 上記で説明。個別に制御するアニメーションインスタンスを返します。
lottie.destroy() -- リソースを破棄および解放します。DOM要素は空になります。
lottie.registerAnimation() -- registerAnimationを使用して要素を直接登録できます。データ.json URLを指す「data-animation-path」属性が必要です
lottie.setQuality() -- デフォルトは「high」、プレーヤーのパフォーマンスを向上させるために「high」、「medium」、「low」、または数値>1を設定します。アニメーションによっては、2程度に下げても違いが見られない場合があります。
次のイベントでaddEventListenerを使用することもできます
既存のキャンバスを使用して描画する場合は、追加のオブジェクト 'rendererSettings' を次の構成で渡すことができます
lottie.loadAnimation({
container: element, // the dom element
renderer: 'svg',
loop: true,
autoplay: true,
animationData: animationData, // the animation data
rendererSettings: {
context: canvasContext, // the canvas context
scaleMode: 'noScale',
clearCanvas: false,
progressiveLoad: false, // Boolean, only svg renderer, loads dom elements when needed. Might speed up initialization for large number of elements.
hideOnTransparent: true, //Boolean, only svg renderer, hides elements when opacity reaches 0 (defaults to true)
className: 'some-css-class-name'
}
});
このようにすると、各フレームの後にキャンバスをクリアする必要が生じます。
アニメーションをロードするもう1つの方法は、DOM要素に特定の属性を追加することです。divを含め、そのクラスを "lottie" に設定する必要があります。ページロード前にこれを行うと、クラス "lottie"を持つすべてのタグを自動的に検索します。または、ページロード後にlottie.searchAnimations()
を呼び出すと、クラス "lottie"を持つすべての要素を検索します。
必須
オプション
例
<div style="width:1067px;height:600px" class="lottie" data-animation-path="animation/" data-anim-loop="true" data-name="ninja"></div>
アニメーションのプレビューを表示したり、ポスターとして使用するためにSVGスナップショットを撮ったりできます。アニメーションをレンダリングした後、アニメーションの任意のフレームのスナップショットを撮ってディスクに保存できます。https://jakearchibald.github.io/svgomg/のようなSVGオプティマイザーを通してSVGを渡し、設定を試してみることをお勧めします。
シェイプに変換していない画像やAIレイヤーがある場合(ベクターとしてエクスポートされるように変換することをお勧めします。各レイヤーを右クリックして、[ベクターレイヤーからシェイプを作成]を実行します)、それらは出力先jsonフォルダーに対する相対パスにあるimagesフォルダーに保存されます。その同じ場所にある既存のフォルダーを上書きしないように注意してください。
これはリアルタイムレンダリングです。かなり最適化されていますが、AEプロジェクトを必要なものだけにしておくことは常に役立ちます
より多くの最適化が進行中ですが、小さな部分をマスクするためだけにAEで巨大なシェイプを使用しないようにしてください。
ノードが多すぎる場合もパフォーマンスに影響します。
動作しないアニメーションがある場合や、私がエクスポートすることを希望する場合は、お気軽にご連絡ください。
このプラグインにどのような問題があるか、非常に興味があります。
私のメールはhernantorrisi@gmail.comです
最初にnpm install
またはbower install
、次にnpm start