FireAlpaca用ブラシスクリプト「タイルブラシ」を作成しました

多分、用途が多々あると思うのでタイルブラシ(Tile_a03.bs)というものを作ってみた。

ドット絵を描いたりするのにいいかもしれない。

ブラシのDownloadは記事下部のリンク先から行ってください。

 

f:id:Inari777:20150409212702p:plain

パラメータ

筆圧透明度についてはそのまま。

大きさについては、ブラシ幅に対する粒子のサイズが%で示されている。

 

スクリプト

function param1()
 return "筆圧透明度", 0, 1, 1
end

function param2()
 return "大きさ", 10, 100, 95
end


function main( x, y, p )
 local w = bs_width_max()
 local x0 = math.floor( x / w ) * w
 local y0 = math.floor( y / w ) * w
 local wh = w * bs_param2() * 0.01
 local r , g , b = bs_fore()
 local a = 255 * bs_opaque()
 if bs_param1() == 1 then
  a = p * a
 end


 --shift
 x0 = x0 + ( w - wh ) * 0.5
 y0 = y0 + ( w - wh ) * 0.5

 bs_rect( x0 , y0 , wh , wh , r , g , b , a )

 return 1
end

 

bs_setmode( 1 )

 スクリプト解説

概要

イメージとしては、カンバスを左上から一辺がブラシ幅の正方形のマスに分割し、各マスにペン軌道が侵入したら粒子を描画するということを行っている。

描画

今回は割と単純なスクリプトなので、今までと比べると端的に書いている。

というのも、今回の単位粒子は正方形で、実際の描画は矩形描画APIを使い

bs_rect( x0 , y0 , wh , wh , r , g , b , a )

 という部分でやっているため、bs_polygon() を使って四隅の座標を求めるなんて面倒なことをする必要はないからだ。

bs_rect( x , y , w , h , r , g , b , a  )の特性

このAPIが描画するのは、( x , y ) と ( x + w , y + h )を対角線とする幅 w の矩形である。普通、カンバスの左上を原点として右向きにx軸、下向きにy軸を取るので、ちょうどDesktop上で何も持たずにマウスをドラッグするような感覚の描画イメージであると言って良いだろう。

従って、最初上で言ったペン軌道のあるマスの左上にある仮の描画起点を

 x0 = x0 + ( w - wh ) * 0.5
 y0 = y0 + ( w - wh ) * 0.5

という部分で、大きさ(param2()で与えれる値)を利用してズラしている。

Download

Downloadは以下のリンク先から行ってください。

Tile_a03.bs - Google ドライブ