FireAlpaca用ブラシスクリプト「梯子ブラシ」を作成しました

定規ブラシから派生して梯子ブラシ(Ladder_a02.bs)というものを作ってみた。

基本は、等間隔に等幅の矩形を描画するブラシで、任意本ごとに別の太さを混ぜたりもできる。

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

パラメータ

太さ

  • 各粒子の太さを決定するパラメータ。

太さブースト

  • 太さに掛けて太さを決定するパラメータ。

粒子距離

  • 各粒子の描画中心同士の距離を決定するパラメータ。

粒子距離ブースト

  • 粒子距離に掛けて各粒子の描画中心を決定するパラメータ。

Bold

  • 「間隔」で指定した粒子ごとに粒子の太さを変更を有効にするパラメータ。

Shift

  • 「Bold」が有効のときに、粒子間の空白を均等にするためのパラメータ。

間隔

  • 太さを変更する粒子を決定するためのパラメータ。

太さ2

  • 「間隔」で指定される粒子の太さを決定するパラメータ。

太さ2ブースト

  • 太さ2に掛けて「間隔」で指定される粒子の大きさを決定するためのパラメータ。

以上のようなパラメータを用いて以下のように様々な描画ができる。

f:id:Inari777:20150408234733p:plain

スクリプト

function default_size()
 return 40 , 1
end

function param1()
 return "太さ" , 1 , 100 , 6
end
function param2()
 return "太さブースト" , 1 , 100 , 1
end
function param3()
 return "粒子距離" , 1 , 100 , 20
end
function param4()
 return "粒子距離ブースト" , 1 , 100 , 1
end
function param5()
 return "Bold" , 0 , 1 , 0
end
function param6()
 return "Shift" , 0 , 1 , 0
end
function param7()
 return "間隔" , 1 , 20 , 1
end
function param8()
 return "太さ2" , 0 , 100 , 6
end
function param9()
 return "太さ2ブースト" , 1 , 10 , 1
end

function main ( x , y , p )
 local ww = bs_param1() * bs_param2()
 local dis = bs_param3() * bs_param4()
 local w = bs_width()
 if w < 5 then
  w = 5
 end

 if bs_param5() == 1 then
  if j % bs_param7() == 0 then
    ww = bs_param8() * bs_param9()
    if bs_param6() == 1 then
     dis = dis + 0.5 * ( ww - bs_param1() * bs_param2() )
    end
   elseif j % bs_param7() == 1 then
    if bs_param6() == 1 then
     dis = dis + 0.5 * ( bs_param8() * bs_param9() - bs_param1() * bs_param2() )
    end
  end
 end

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

 local dx , dy = bs_dir()
 local nx , ny = bs_normal()

 bs_polygon( x + dx * ww * 0.5 - nx * w , y + dy * ww * 0.5 - ny * w )
 bs_polygon( x + dx * ww * 0.5 + nx * w , y + dy * ww * 0.5 + ny * w )
 bs_polygon( x - dx * ww * 0.5 + nx * w , y - dy * ww * 0.5 + ny * w )
 bs_polygon( x - dx * ww * 0.5 - nx * w , y - dy * ww * 0.5 - ny * w )

 local r , g , b = bs_fore()
 bs_fill( r ,g , b , 255 )

 lastDrawX = x
 lastDrawY = y
 firstDraw = false
 j = j + 1
end

 

j = 0
lastDrawX = 0
lastDrawY = 0
firstDraw = true

スクリプト解説

定規の時とほとんど同じなので割愛。

Download

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

Ladder_a02.bs - Google ドライブ