【開源】Skatch 正式發布 - 極速渲染抽象派草圖


skatch

極速渲染抽象派草圖

DEMO

簡介

Skatch 這個詞由 sketch wechart abstract cax 混合而成的一個新詞,代表了cax wechart 抽象藝術派派草圖渲染器。說得直白一點就是npm 上 sketch 被 tj 占了,只能強行加上賦予某些意義合成 skatch 這個詞。關於我的合成詞的相關庫最滿意的非 pasition (path transition) 莫屬了。

使用

const skatch = new Skatch({
  randomRange: 10,      //點的抖動范圍
  
  strokeRepeat: 12,   //重復繪制的次數
  strokeWidth: 1,      //繪制線寬
  strokeStyle: 'black',//繪制顏色

  gap: 5, //填充線的間距
  fillAngle: -45,//填充線的角度
  curveRange: 45, //填充線扭曲范圍
  fillWidth: 1, //填充線的線寬
  fillRepeat: 2,//填充線重復填充的次數
  fillStyle: '#6aa8df',//填充線的顏色

  filter: 1 //繪制 path 的時候過濾的比例,范圍是 (0-1)
})

skatch.circle(310, 280, 50)
stage.add(skatch)
stage.update()

由於 skatch 是 cax 自定義 Element(繼承自 cax.Group),所以擁有設置所有屬性的能力,如下所示:

Transform

屬性名 描述
x 水平偏移
y 豎直偏移
scaleX 水平縮放
scaleY 豎直縮放
rotation 旋轉
skewX 歪斜 X
skewY 歪斜 Y
originX 旋轉基點 X
originY 旋轉基點 Y

Alpha

屬性名 描述
alpha 元素的透明度

注意這里父子都設置了 alpha 會進行乘法疊加。

compositeOperation

屬性名 描述
compositeOperation 源圖像繪制到目標圖像上的疊加模式

注意這里如果自身沒有定義 compositeOperation 會進行向上查找,找到最近的定義了 compositeOperation 的父容器作為自己的 compositeOperation。

Cursor

屬性名 描述
cursor 鼠標移上去的形狀

Fixed

屬性名 描述
fixed 是否固定定位,默認是 false 設置成 true 不會疊加祖輩們的 transform 屬性

Shadow

屬性名 描述
shadow 陰影

使用方式:

obj.shadow = {
    color: '#42B035',
    offsetX: -5,
    offsetY: 5,
    blur: 10
}

skatch 共擁有如下方法進行草圖繪制:

  • rect
  • circle
  • ellipse
  • path
  • strokeRect
  • strokeCircle
  • strokeEllipse
  • strokePath
  • fillRect
  • fillCircle
  • fillEllipse
  • fillPath

可以這么理解: rect === strokeRect + fillRect 。其他的形狀以此類推。

與 rough 的異同

Rough 是非常著名的草圖渲染庫,看上去 skatch 和 rough 非常類似,但是有着本質的不同。

  • Rough 使用純數學進行繪制前的計算(比如線段與線段、線段與圓、線段與橢圓等)
  • Skatch 使用 簡單計算 + clip + 圖層合成 + 坐標 shake

看上去 skatch 過程復雜?所以速度更慢?大錯特錯!Skatch clip 和 圖層的行為都是純圖像處理,在 GPU 中完成,有硬件加速,小部分任務在 CPU 中完成。
也可以這樣理解 rough 主要計算放在 CPU,skatch主要計算放在了 GPU。Skatch 具體的原理等待我的教程。

Star & Follow

微信交流群【2】

Tencent Wechat

License

MIT


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM