ゆがみエフェクト - 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