波紋効果
エフェクト処理に波紋を追加
こんな感じ
ソースは右クリックで
結構、綺麗な効果ができた、でもムズイ
理論的なところは後で理解しよう。。。
ソース
private function shade_hamon(ampint:int , wwint:int , refint:int):void { if(target_bmpData == null) return; bmpData2 = new BitmapData(target_bmpData.width, target_bmpData.height); var x:int, y:int; var xx:int, yy:int; var rr:int, gg:int, bb:int, oo:int; var col:Color = new Color(), pixb:Color = new Color(), ncol:Color = new Color(); var amp:Number, ww:Number; var dxx:Number, dyy:Number; var kyori:Number; var tmp:int; var ox:Number, oy:Number; var dx:Number, dy:Number, dy2:Number, dz:Number; var ref:Number, ddx:Number, ddy:Number; var kH:Number; var x1:int, y1:int, x2:int, y2:int; x1=0; y1=0; x2=bmpData2.width-1; y2=bmpData2.height-1; amp=Number(ampint)/100.0; ww=Number(wwint); ref=Number(refint)/100.0; ox=Number(x2-x1)/2.0; oy=Number(y2-y1)/2.0; adjustLightSourse(); for(y = y1; y <= y2; y++) { for(x = x1; x <= x2; x++) { dxx=Number(x-x1)-ox; dyy=Number(y-y1)-oy; //距離 kyori=Math.sqrt(dxx*dxx+dyy*dyy); //偏微分 dx= -Math.PI*2/ww*amp*Math.sin(Math.PI*2/ww*kyori)*dxx/kyori; dy= -Math.PI*2/ww*amp*Math.sin(Math.PI*2/ww*kyori)*dyy/kyori; dz= 1.0; kH= amp*(Math.cos(Math.PI*2/ww*kyori)+1.0)+10.0; ddx=getRefOrg(dx,dz,kH,ref); ddy=getRefOrg(dy,dz,kH,ref); col.color = target_bmpData.getPixel(int(x+ddx),int(y+ddy)); //画像上の画素情報を取得 rr=lighting(col.r,dx,dy,dz,dxx,dyy,0.0); gg=lighting(col.g,dx,dy,dz,dxx,dyy,0.0); bb=lighting(col.b,dx,dy,dz,dxx,dyy,0.0); col.r = rr; col.g = gg; col.b = bb; bmpData2.setPixel(x, y, col.color); // 画像に値をセットする } } view.bitmapData = target_bmpData = bmpData2; myImage.width = view.width = myImage.width; myImage.height = view.height = myImage.height; }