FireAlpaca用ブラシスクリプト「五芒星形散布ブラシ」を改良しました

前回作った五芒星形散布ブラシを、パラメータを変更できるように改良した(star_s150406c.bs)。

Downloadは記事下部のリンク先より行ってください。

f:id:Inari777:20150407142146p:plain

※使用イメージ

 変更できるパラメータ

f:id:Inari777:20150407141513p:plain

散布幅

名前の通り、どれくらいの幅に対して散布を行うかを決めるパラメータ。実際の散布幅はブラシ幅にも依るが、値が大きいほど散布幅は広くなる。

0でペン軌道上を粒子の描画中心座標とする。

散布強さ

粒子(五芒星形のひとつひとつ)をどれくらいの頻度で描画するかを決定するパラメータ。値が大きいほど多く散布する。

粒子ランダム

粒子の大きさのばらつきを決定するパラメータ。0で全て同じ大きさの粒子を描画する。

粒子サイズ

粒子のサイズを決定するパラメータ。

粒子回転

粒子の回転を決定するパラメータ。デフォルトの状態(チェックの入った状態)でランダムに粒子を回転させて描画する。

 

スクリプト

function default_size()
   return 20 , 0.50
end


function param1()
   return "散布幅" , 0 , 100 , 50
end
function param2()
   return "散布強さ" , 0 , 100 , 50
end
function param3()
   return "粒子ランダム" , 0 , 100 , 50
end
function param4()
   return "粒子サイズ" , 0 ,100 ,50
end
function param5()
   return "粒子回転" , 0 , 1 , 1
end

 
function point(X , Y , K , D ,W)
   local a = X + math.cos( ( D + K )*math.pi / 180 ) * W
   local b = Y + math.sin( ( D + K )*math.pi / 180 ) * W
   return a , b
end


function main( x, y, p )
   local sw = bs_param1() * 3
   local q = 50 / bs_param2()
   local r , si = math.random() * sw , math.random(-90 , 90)
   local x0 , y0 = x + r *math.cos(si) , y + r * math.sin(si)
   local k = 0
   if bs_param5() == 1 then
      k = math.random(0 , 72)
   end
   local k2_min = 100 - bs_param3()
   local k2 = math.random(k2_min , 100) * bs_param4() *0.01
   local d = {54 , 126 ,198 , 270 , 342}
   local px = {0,0,0,0,0}
   local py = {0,0,0,0,0}
   local w = bs_width()
   if w < 5 then
      w = 5
   end

   if not firstDraw then
      local distance = bs_distance( lastDrawX - x, lastDrawY - y )
      if distance < q*w then
         return 0
      end
   end

 

   w = w * k2 * 0.01


   for i , value in ipairs(d) do
      px[i] , py[i] = point(x0 , y0 , k , d[i] , w)
   end


   --S1
      bs_polygon(x0 , y0)
      bs_polygon(px[1] , py[1])
      bs_polygon(px[3] , py[3])
      local r,g,b = bs_fore()
      bs_fill( r,g,b, 255 )
   --S2
      bs_polygon(x0 , y0)
      bs_polygon(px[1] , py[1])
      bs_polygon(px[4] , py[4])
      local r,g,b = bs_fore()
      bs_fill( r,g,b, 255 )
   --S3
      bs_polygon(x0 , y0)
      bs_polygon(px[2] , py[2])
      bs_polygon(px[4] , py[4])
      local r,g,b = bs_fore()
      bs_fill( r,g,b, 255 )
   --S4
      bs_polygon(x0 , y0)
      bs_polygon(px[2] , py[2])
      bs_polygon(px[5] , py[5])
      local r,g,b = bs_fore()
      bs_fill( r,g,b, 255 )
   --S5
      bs_polygon(x0 , y0)
      bs_polygon(px[3] , py[3])
      bs_polygon(px[5] , py[5])
      local r,g,b = bs_fore()
      bs_fill( r,g,b, 255 )


   lastDrawX = x
   lastDrawY = y
   firstDraw = false

   return 1
end


lastDrawX = 0
lastDrawY = 0
firstDraw = true

 

変更点

  • パラメータ設定変更の追加
  • デフォルトサイズ(幅、最小サイズ)の指定

Download

ファイルのダウンロードは以下のリンク先から行ってください。

star_s150406c.bs - Google ドライブ