@ハードモーションブラー? --track0:長さ,1,2048,50,1 --track1:角度,-3600,3600,0,0.1 --track2:拡縮,0,400,100,1 --track3:閾値,30,100,95,0.01 --check0:長さランダム化,1 --dialog:解析密度X,local ik=5;解析密度Y,local jk=5;透過/chk,chk2=1;SEED,sd=100;元画像表示/chk,chk3=1;合成[0-12],local blend=0;ブラー曲げ/chk,chk4=0;曲げ角度,local ang0=-15;ブラー描画間隔,dstc=0.33;ランダムサイズ/chk,chk1=0; 長さ変化速度,local spd=0;図形サイズ,local fgs=5; -------------------------------------set local t0=math.floor(obj.track0) local t1=math.floor(obj.track1*10)/10 local t2=math.floor(obj.track2) local t3=obj.track3 local sw=obj.screen_w local sh=obj.screen_h local ogvz=obj.getvalue("zoom")/100 ------------------------------------ local oxox,oyoy=obj.ox,obj.oy obj.copybuffer("tmp","obj") local ow,oh=obj.getpixel() if(recpic==null)then recpic={} end local idx=1 for j=1,oh,jk do for i=1,ow,ik do col,a=obj.getpixel(i,j,"col") iki=obj.rand(0,9999,sd,sd+i*j)/100 if(a>0 and iki>t3)then recpic[idx]={} recpic[idx][1]=i recpic[idx][2]=j recpic[idx][3]=col recpic[idx][4]=a idx=idx+1 end end end if(idx<#recpic)then for i=idx,#recpic do recpic[i]=null end end for i=1,#recpic do if(obj.check0)then len=obj.rand(t0/3,t0,sd,i+obj.time*spd)+1 else len=t0 end for j=1,len do if(chk4==1)then ang=t1+ang0/100*j else ang=t1 end r=math.rad(ang-90) cs=math.cos(r) sn=math.sin(r) if(chk1==1)then fgs0=obj.rand(fgs/2,fgs,sd,i*j) if(fgs0<2)then fgs0=2 end else fgs0=fgs end dst=fgs0*dstc dx=dst*cs*j+recpic[i][1]-ow/2 +oxox dy=dst*sn*j+recpic[i][2]-oh/2 +oyoy col=recpic[i][3] if(chk2==1)then alp=recpic[i][4]*(1-j/(len-1)) else alp=recpic[i][4] end obj.load("figure","円",col,fgs0) if(alp>0)then obj.draw(dx*ogvz,dy*ogvz,0,t2/100,alp) end end end if(chk3==1)then obj.load("tempbuffer") obj.setoption("blend",blend) obj.effect() obj.draw(oxox*ogvz,oyoy*ogvz) end @ハードモーションブラー?2 --track0:長さ%,0,100,50,0.01 --track1:拡縮F,0,800,10,1 --track2:密度,1,100,6,1 --track3:位置,-9999,9999,0,1 --check0:輪郭情報,0; --dialog:解析基準透明度,local alp0=0.20;境界透過度,local bokav=2;サイズ,local fgs1=20;線幅,local fgs2=100;Seed,sd=100;サイズ変化/chk,chk1=0;サイズ変化係数,local fgsc=3;移動/chk,chk2=0;速度,local spd0=-5.0;元画像透明度,local alp=1.00;拡縮P,local zm0=1.00;放射長さ,local len2=100;放射閾値,local iki0=75;放射密度,local jk=2; ------------------------------------set local t0=obj.track0 local t1=math.floor(obj.track1) local t2=math.floor(obj.track2) local t3=math.floor(obj.track3) local ogvz=obj.getvalue("zoom")/100 if(fgsc==0)then fgsc=1 end if(zm0>=8)then zm=8 end fig="円" if(jk<=0)then jk=1 end ------------------------------------set2 obj.copybuffer("tmp","obj") local ow,oh=obj.getpixel() obj.setoption("drawtarget","tempbuffer",math.floor(ow*(1+zm0)),math.floor(oh*(1+zm0))) obj.draw(0,0,0,1,alp) if(bokav>0)then obj.effect("ぼかし","範囲",bokav) end function ogpa(a,b) local col0,a0=obj.getpixel(a,b,"col") return a0 end ------------------------------------set3 --基点画素探査 local sx,sy local px,py local a=0 local col for j=0,oh-1 do for i=0,ow-1 do col,a=obj.getpixel(i,j,"col") if(a>alp0)then sx,sy=i,j break end end if(a>alp0)then break end end px,py=sx,sy ------------------------------------set4 --画素探査 if(pxl==null)then pxl={} end if(pyl==null)then pyl={} end if(vxl==null)then vxl={} end if(vyl==null)then vyl={} end if(coll==null)then coll={} end vxl={-1,-1,-1,0,1,1,1,0} vyl={-1,0,1,1,1,0,-1,-1} pxl[1]=sx pyl[1]=sy coll[1]=col local nx local ny local egidx=0 local vv=2 local vct=3 while (sx~=nx or sy~=ny) do --基点 bx=pxl[egidx+1] by=pyl[egidx+1] --探査 nx,ny="","" vct0="" for i=1,8 do --探査点 vct=((i-1)+6+vv)%8+1 tx=bx+vxl[vct] ty=by+vyl[vct] --画素あり if(ogpa(tx,ty)>alp0)then vct0=vct nx=tx ny=ty --位置一致あり if(pxl[egidx]==tx and pyl[egidx]==ty)then --位置一致せず vv=vct0-1 break else vv=vct0-2 break end --画素無し else end end pxl[egidx+2]=nx pyl[egidx+2]=ny col,a=obj.getpixel(nx,ny) coll[egidx+2]=col egidx=egidx+1 end ------------------------------------set5 --削除 if(egidx+1<#pxl)then for i=egidx+1,#pxl do pxl[i]=null pyl[i]=null coll[i]=null end end ------------------------------------set6 --描画 obj.setoption("drawtarget","tempbuffer") local len=math.floor(#pxl*t0/100)+1 if(len<=1)then len=1 end local n=0 for i=1,len,t2 do if(chk1==1)then fgs0=obj.rand(fgs1/fgsc,fgs1*fgsc,sd,i) else fgs0=fgs1 end if(chk2==1)then spd=math.floor(obj.frame*spd0+i) n=(spd+t3)%#pxl+1 else n=math.floor(i-t2*1.5+t3)%#pxl+1 end zm=t1/100 iki=obj.rand(0,10000,sd,i)/100 if(iki>iki0)then len3=math.floor(obj.rand(len2*0.5,len2,sd,i+1))+1 for j=0,len3,jk do dst=1+j/fgs0*0.25 dx=(pxl[n]-ow/2-bokav/2)*dst dy=(pyl[n]-oh/2-bokav/2)*dst alp=1-j/len3 col1=coll[n] obj.load("figure",fig,col1,fgs0,fgs2) obj.draw(dx*zm0,dy*zm0,0,zm,alp) end end end if(obj.check0)then obj.setfont("",obj.screen_h/20,3,0x000000,0xffffff) output="輪郭:"..#pxl.." N:"..n .."\n\n画素同士が途切れていると、\n輪郭を追跡出来ません。\n\nテキストに使用したいときは\n別シーン(アルファチャンネル付き)に1文字毎に\n繋がるようにテキストを配置すると\n幸せになれるかもしれません。" obj.load("text",output) obj.draw() end obj.load("tempbuffer") --[[http://madeinpc.blog50.fc2.com/]]--