日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Lottie 动画AE+Bodymovin导出的JSON文件解读

發(fā)布時間:2023/12/20 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lottie 动画AE+Bodymovin导出的JSON文件解读 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鏈接:https://www.jianshu.com/p/e41c7d826324

?

lottie動畫的json配置object

名稱定義
v使用bodymovin的版本
assetes圖片集合
layers圖層集合
w視圖的寬度
h視圖的高度
ip起始關(guān)鍵幀
op結(jié)束關(guān)鍵幀
fr幀率

動畫時間 = (op - ip)/fr
在AE制作視頻是的開始和結(jié)束時通過設置兩個關(guān)鍵幀關(guān)鍵幀來完成。幀率就是單位為每秒顯示幀數(shù)。

object -> assetes

assetes是一個數(shù)組,描述包含的所有資源

名稱定義
id圖片唯一識別的id,圖層獲取圖片的標識
w圖片的寬度
h圖片的高度
u圖片的路徑,實際并未使用 例:images/
p圖片的名稱 例:img_0.png/
layers預合成層

預合成層是對已存在的某些圖層進行分組,把它們放置到新的合成中。layers用來實現(xiàn)預合成層,它和assetes同級的layers屬于同一種數(shù)據(jù)類型。

object -> layers

layers是一個數(shù)組,描述包含的所有圖層

名稱定義
nmlayer的名稱,在ae中生成唯一
indlayer的Id,唯一
tylayer的類型,為數(shù)字
refId引用的資源,圖片/預合成層
parent父圖層的id,默認都添加到跟圖層上,如果指定了id不為0會尋找父圖層并添加到上面
ip該圖層的起始關(guān)鍵幀
op該圖層的結(jié)束關(guān)鍵幀
w預合成層:寬度
h預合成層:圖層高度
sw固態(tài)層:寬度
sh固態(tài)層:圖層高度
sc固態(tài)層:顏色
ks外觀信息,下面有進一步分析
tt遮罩類型
masksProperties蒙版的數(shù)組
shapes矢量圖形圖層的數(shù)組
  • type:layer的類型

    • 0 預合成層
    • 1 固態(tài)層
    • 2 圖片曾
    • 3 空層
    • 4 形狀層
    • 5 位置層
  • 當前為圖片層時候,寬高通過asset來讀取。預合成層和固態(tài)層,從屬性讀取,其他情況直接讀取根圖層的寬高。

  • ip,op:當前圖層的開始和結(jié)束關(guān)鍵幀,決定該圖層動畫開始和結(jié)束的時間,使動畫可以只在整個過程的某一部分產(chǎn)生。幀率和根圖層共享。

object -> layers -> ks

名稱定義
oopacity不透明度
r/rzrotation旋轉(zhuǎn)
pposition位置
aanchor錨點
sscale縮放

opacity、rotation、position
不透明度和旋轉(zhuǎn)通過讀取字典內(nèi)k值來獲取。位置下有s屬性時會從x和y讀取,沒有s時也從k讀取。k對應的值有如下幾種情況:

  • 數(shù)字或3個數(shù)字組成的數(shù)組,表示對應屬性的值,沒有動畫。比如錨點[62.5,46.5,0],縮放[-100,100,100],不透明度0等。
  • 數(shù)組類型并且數(shù)字第一個對象的t有值時,表示幀動畫。第一個對象表示動畫開始的屬性,第二個對象表示動畫結(jié)束的屬性。通過以下參數(shù)可以拼裝出關(guān)鍵幀的屬性值,關(guān)鍵幀時間點,關(guān)鍵幀之間的時間函數(shù),
    • t表示開始/結(jié)束幀
    • s和e表示開始/結(jié)束屬性值
    • i和o決定動畫的時間函數(shù)
  • anchor
    同樣有兩種表示,帶動畫和不帶動畫。不帶動畫會用2個數(shù)字生成位置。當時數(shù)組帶t值時表示有動畫。參數(shù)和上面類似,區(qū)別是在s和e會生成移動的軌跡數(shù)組和關(guān)鍵幀的位置數(shù)組。

    scale
    同樣有兩種表示,帶動畫和不帶動畫。不帶動畫會用2個數(shù)字生成3D的縮放變換,單位比例是100.f。帶動畫參數(shù)同樣和上面類似,區(qū)別是s和e生成關(guān)鍵幀比例變換值的數(shù)組。

    object -> layers -> shapes

    shape是一個形狀圖層的數(shù)組,他可以通過path(UIBezierPath)屬性做出很多神奇的效果。圖層的類型描述了繪制的各種特性。如果你對UIBezierPath了解,你會發(fā)現(xiàn)以下的功能剛好都是它支持的全部~

    名稱定義
    ty圖層類型

    目前ty支持的功能:

  • gr圖形合并
  • st圖形描邊
  • fl圖形填充
  • tr圖形變換
  • sh圖形路徑
  • el橢圓路徑
  • rc矩形路徑
  • tm剪裁路徑
  • 下面用st和sh距離來說明配置內(nèi)容,其他類似。

    1. gr混合圖層(ShapeGroup)

    名稱定義
    it每個圖層的json

    2. st圖形描邊(ShapeStroke)

    名稱定義
    c線的顏色
    w線的寬度
    o線的不透明度
    lc線段的頭尾樣式:默認不添加任何形狀、一半的半圓、一半的矩形
    lg線的鏈接類型:折線、平滑、棱角
    d線段的分割模式,數(shù)據(jù)內(nèi)容為線段寬度+空白寬度

    顏色參考下面顏色值的數(shù)據(jù)內(nèi)容,寬度和不透明度都是數(shù)字,參考下面數(shù)字值的數(shù)據(jù)內(nèi)容

    顏色值color value
    通過屬性k取到內(nèi)容,根據(jù)數(shù)據(jù)類型區(qū)分,有幀動畫和無動畫兩種情況。數(shù)組&數(shù)組第一項有t屬性表示有幀動畫。

    • 幀動畫

      名稱定義
      t關(guān)鍵幀
      s開始顏色,數(shù)據(jù)類型同無動畫一致
      e結(jié)束顏色,數(shù)據(jù)類型同無動畫一致
      i時間函數(shù)的參數(shù),貝塞爾曲線內(nèi)切點值
      o時間函數(shù)的參數(shù),貝塞爾曲線外切點值
      h凍結(jié)關(guān)鍵幀,在結(jié)束時添加同樣的值
    • 無動畫

      4個數(shù)字分別代表rgba,生成顏色

    數(shù)字值number value
    通過屬性k取到內(nèi)容,根據(jù)數(shù)據(jù)類型區(qū)分,有幀動畫和無動畫兩種情況。數(shù)組&數(shù)組第一項有t屬性表示有幀動畫。

    • 幀動畫

      同顏色的參數(shù)類型,s/e分別表示開始和結(jié)束數(shù)字,i/o代表時間函數(shù)的參數(shù),h代表關(guān)鍵幀。

    • 無動畫

      數(shù)字即代表取值

    3. fl形狀填充(ShapeFill)

    數(shù)據(jù)格式同st類似,沒有width參數(shù),只有顏色和不透明度

    4. tr圖形變換(ShapeTransform)

    數(shù)據(jù)格式同st類似,但是參數(shù)多了

    名稱定義
    p位置
    a錨點
    s縮放
    r旋轉(zhuǎn)
    o不透明度

    這里新增了兩種數(shù)據(jù)類型,位置和錨點使用的坐標值,縮放使用的比例值,旋轉(zhuǎn)和不透明度使用之前說到的數(shù)字值。

    坐標值point value
    老規(guī)矩數(shù)組有t參數(shù)表示幀動畫,無動畫直接用2個值生成坐標的x和y。有動畫時參數(shù)同顏色類型類似,除關(guān)鍵幀、時間函數(shù)、開始結(jié)束值新增兩個點來生成移動路徑。

    比例值scale value
    老規(guī)矩數(shù)組有t參數(shù)表示幀動畫,無動畫直接用2個值作為參數(shù)生成變換矩陣。有動畫時參數(shù)同顏色類型。

    5. sh圖形路徑(ShapePath)

    名稱定義
    ks外觀信息,矢量路徑描述對象

    ks數(shù)據(jù)從其屬性k取值。根據(jù)數(shù)據(jù)類型區(qū)分,有幀動畫和無動畫兩種情況。數(shù)組&數(shù)組第一項有t屬性表示有幀動畫。這里僅說明圖形無動畫,但其所在的圖層本身可能存在不透明或縮放等動畫。

    形狀值shape value

    • 幀動畫

      名稱定義
      t矢量圖顯示的關(guān)鍵幀
      s動畫開始的矢量圖,數(shù)據(jù)類型同無動畫一致
      e動畫結(jié)束的矢量圖,數(shù)據(jù)類型同無動畫一致
      i時間函數(shù)的參數(shù),貝塞爾曲線內(nèi)切點值
      o時間函數(shù)的參數(shù),貝塞爾曲線外切點值
      h凍結(jié)關(guān)鍵幀,在結(jié)束時添加同樣的矢量圖

      通過上述的參數(shù),可以計算出關(guān)鍵幀,關(guān)鍵幀的矢量圖,時間函數(shù)等,這些信息就組成了矢量圖的動畫。

    • 無動畫

      名稱定義
      c結(jié)束subpath,用直線鏈接最后一個點和第一個點
      v頂點坐標集合
      i內(nèi)切線點集合
      o外切線點集合
      c貝塞爾路徑閉合

      通過v,i,o三個屬性可以創(chuàng)建一個基于矢量的路徑。通過計算出4個點可以確定一條三次貝塞爾曲線或直線的路徑,所有點合成在一起組成一個矢量圖。具體實現(xiàn)方式可以參考三次貝塞爾曲線。

    其他路徑

    數(shù)據(jù)結(jié)構(gòu)基本類似,都是以上提到的類型組合

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Lottie 动画AE+Bodymovin导出的JSON文件解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。