ゆがみエフェクト - DisplacementMapFilter
またDisplacementMapFilterを使って、Photoshopのゆがみ(ワープ)フィルタ。モナリザを使ったモノはありがちですけど、他にいいネタも無かったので。
フォトショっぽくクリックで変化させてもよかったですが、あまり変化量を上げすぎると画像が荒くなるので、微妙な変化の方が使えるんだと思います。
import flash.display.*; import flash.filters.*; import flash.geom.*; var imgList:String = "image"; // リンケージ画像id var w:Number = 240; var h:Number = 360; var scalex:Number = 0; var scaley:Number = 0; var d:Number = 0; var scalemx:Number = 80; // xscale変化量 var scalemy:Number = 80; // yscale変化量 var r:Number = 60; // フィルタ適用範囲の直径 var speed:Number = 8; // 変化の移動速度 // -- 適用イメージ & マスク作成 var bmp:BitmapData = BitmapData.loadBitmap(imgList); var copybmp:BitmapData = bmp.clone(); var mc:MovieClip = this.createEmptyMovieClip("img_mc", 2); var mask:MovieClip = this.createEmptyMovieClip("mask_mc", 3); var maskbmp:BitmapData = new BitmapData(w, h, false, 0); mask.attachBitmap(maskbmp, 0); var mgx:Number = (bmp.width-w)/2; var mgy:Number = (bmp.height-h)/2; mc._x -= mgx; mc._y -= mgy; mc.attachBitmap(bmp, 0); mc.setMask(mask); // -- 置き換えマップ用イメージ作成 var dpmap:BitmapData = new BitmapData(w, w, true, 0); var dmc:MovieClip = this.createEmptyMovieClip("img_mc", 1); var mrx:Matrix = new Matrix(1, 0, 0, 1, w/2, w/2); dmc.beginGradientFill("radial", [0xFFFFFF, 0x808080], [100, 100], [0, r/2], mrx); dmc.moveTo(0, 0); dmc.lineTo(w, 0); dmc.lineTo(w, w); dmc.lineTo(0, w); dmc.lineTo(0, 0); dmc.endFill(); dpmap.draw(dmc); dmc.removeMovieClip(); // -- フィルタ適用 function onEnterFrame ():Void { d += Math.PI/180*speed; scalex = Math.cos(d)*scalemx; scaley = Math.sin(d)*scalemy; var pos:Point = new Point(_xmouse-w/2+mgx, _ymouse-w/2+mgy); var dmf:DisplacementMapFilter = new DisplacementMapFilter(dpmap, pos, 1, 1, scalex, scaley, "ignore"); bmp.applyFilter(copybmp, bmp.rectangle, null, dmf); }
Comments
左下にマウスもってくと揉んでる見たいやな(・∀・)
posted by matayam | | 2006年04月07日 11:30
おっぱいシミュレーターね。
http://www.shockabsorber.co.uk/bounceometer/shock.html
エロ業界の方には是非活用していただきたい。
posted by kobas | | 2006年04月07日 15:53