またmdiappのブラシの改造。
自作というより、改造。
ちなみに、今回はこんなかんじ。
76043855.png


前回はドットの大きさはあえて固定しておいたけど、今回はランダム。
ドットの大きさ(最大・最小)と散布率が変更可。
最大値(dot_size_max)と最小値(dot_size_min)では最大値が優先されるから、大きさを均一にしたかったら、最小値を最大値より大きくすればおk。


ドットの大きさのランダムさは多分ほぼ均一(説明苦手だから変な文章になってるな…)
大きいドットが多めとか割合をいじれるようにしてみたかったけど、パラメータは3つが限界みたいだし、
何よりこれ以上いじり始めたら絵の方が描けなくなるからとりあえずここで中断。

ちなみに、今回のやつを使ってみたらこんなかんじになった↓
bef1f74a.png

縮小はしたけど、基本的に今回のブラシしか使ってない。

…これ上手く使えればテクスチャもどきが作れそうでちょっと楽しみ(´∀`*)

……だがしかし、これ結構重い…。
描画感覚が短い方がPCに負担は少ない気がするけど、そうすると密度が高くなる(´・ω・`)


ちなみに何度も言うけど、これ使って何か問題が起きても責任とれないよ。
…そもそも仕様もロクに読んでないからね。
気になったところだけ調べて、基本の文法(?)とか調べてないからね。

function param1()
return "dot_size_max", 0, 1000, 15
end

function param2()
return "dot_size_min", 0, 1000, 10
end

function param3()
return "sanpu", 0, 1000, 10
end

local param1 = bs_param1() * 0.1
local param2 = bs_param2() * 0.1
if param1 < param2 then
param2 = param1
end
local param3 = bs_param3()
if param3 < 1 then
param3 = 1
end
param3 = param3/100


function main( x, y, p )

local w = bs_width()

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

local alpha = bs_opaque()*255
local r,g,b = bs_fore()

local i
for i = 0,param3*w,1 do
local dx = x + bs_grand( 0, 0.4 ) * w
local dy = y + bs_grand( 0, 0.4 ) * w
local rnd1 = param1-param2
local rnd2 = math.random()*rnd1
rnd2 = param2+rnd2
if rnd2 < param2 then
rnd2 = param2
end
bs_ellipse( dx,dy, rnd2, rnd2, 0, r,g,b, alpha)
end

lastDrawX = x
lastDrawY = y
firstDraw = false

return 1
end

lastDrawX = 0
lastDrawY = 0
firstDraw = true

↑をテキストファイルで保存。拡張子を.bsにしてブラシウインドウにドラック&ドロップでおk。