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

五芒星型を描画した時に外側の頂点から描画中心へ向けて内部の仮想的な五角形まで背景色による切り込みが入る問題を修正しました。

修正されたファイルは記事下部のリンク先からDownloadしてください。

f:id:Inari777:20150408120029p:plain

問題点

今まで粒子の描画は、粒子の中心と飛び飛びの外側の頂点2つからなる三角形5つを重ね合わせることで行ってきた。

しかし、外側の頂点から上で言ったような切り込みが入ったということは、bs_polygon() で指定した多角形の内部を塗りつぶしても、多角形の辺の上は塗つぶせていなかったことになる。

本当のことを言えば、辺の幅なんていうものはないのだが、bs_polygon()によって仮想的にも辺の幅が、おそらく1 pixel 程度存在していたので、粒子サイズが比較的小さくなった時に、この切り込みが目立ちやすくなるという問題が顕著になる。

 

対処

さて、この問題に対処するために、今まで無視していた中側の5頂点も(パラメータの設定変更込みで)計算し、bs_polygon() で10点を指定して塗りつぶして粒子を描画しようという目論見でスクリプトを書いたところ、頂点の指定順序を間違えて下図のようなブラシができた。

ここでようやく、bs_polygon() がブラシスクリプト仕様書で説明されているように単純な「多角形を設定する」関数ではなく、「投げなわ選択ツール」の類型関数であることが分かった。

f:id:Inari777:20150408121513p:plain

 

スクリプト修正

bs_polygon() が投げなわ選択ツールと似たような性質を持つという点を踏まえ、今まで三角形5つを指定し、それぞれを塗りつぶしていたスクリプトを以下のように修正した。

bs_polygon(px[1] , py[1])
bs_polygon(px[3] , py[3])
bs_polygon(px[5] , py[5])
bs_polygon(px[2] , py[2])
bs_polygon(px[4] , py[4])

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

これで以前よりスクリプトがスッキリした。

 

Download

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

star_s150408e.bs - Google ドライブ