Подскажите как сделать эффект похожий на МАСЛЯННЫЕ разводы? Они должны быть менее динамичными так сказать... И быстрее возвращаться в исходное состояние должна картинка.

Код AS1/AS2:
import flash.display.BitmapData;
import flash.filters.ConvolutionFilter;
import flash.filters.DisplacementMapFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BitmapFilter;
class com.silin.Ripple extends MovieClip {
private var res1 : BitmapData;
private var res2 : BitmapData;
private var map : BitmapData;
private var buf : BitmapData;
private var source : BitmapData;
private var output : BitmapData;
private var w : Number, h : Number, w2 : Number, h2 : Number;
private var QUARTER : Rectangle;
private var FULL : Rectangle;
private var ORIGIN : Point;
private var IDENTITY : Matrix;
private var DOUBLE : Matrix;
private var WAVE : BitmapFilter;
private var DAMP : ColorTransform;
private var water : DisplacementMapFilter ;
////////////////////////////
public function Ripple(bitmap:BitmapData){
source=bitmap;
w = source.width;
h = source.height;
output=new BitmapData(w,h, false, 128);
attachBitmap(output,0);
w2 = w / 2;
h2 = h / 2;
res1 = new BitmapData (w2, h2, false, 128);
res2 = new BitmapData (w, h, false, 128);
map = new BitmapData (w2, h2, false, 128);
buf = new BitmapData (w2, h2, false, 128);
WAVE = BitmapFilter(new ConvolutionFilter (3, 3, [1,1,1,1,1,1,1,1,1], 9, 0));
DAMP = new ColorTransform (0, 0, 0.99609374, 1, 0, 0, 2, 0);
water = new DisplacementMapFilter (res2, ORIGIN, 4, 4, 32, 32, "ignore");
ORIGIN = new Point ();
QUARTER = new Rectangle (0, 0, w2, h2);
FULL = new Rectangle (0, 0, w, h);
IDENTITY = new Matrix ();
DOUBLE = new Matrix ();
DOUBLE.a = DOUBLE.d = 2;
start();
}
public function wobbleXY (x : Number, y : Number) :Void {
x /= 2;
y /= 2;
map.setPixel (x + 1, y, 0xFFFFFF);
map.setPixel (x - 1, y, 0xFFFFFF);
map.setPixel (x, y + 1, 0xFFFFFF);
map.setPixel (x, y - 1, 0xFFFFFF);
map.setPixel (x, y, 0xFFFFFF);
}
private function render ():Void {
res1.applyFilter(map, QUARTER, ORIGIN, WAVE);
res1.draw (res1, IDENTITY, null, "add");
res1.draw (buf, IDENTITY, null, "difference");
res1.draw (res1, IDENTITY, DAMP);
res2.draw (res1, DOUBLE, null, null, null, true);
output.applyFilter(source, FULL, ORIGIN, BitmapFilter(water));
buf = map;
map = res1.clone ();
}
public function start ():Void {
onEnterFrame=render;
}
public function randomWobble (n : Number):Void{
if(n==undefined) n= w/3;
start();
for (var i = 0; i < n; i ++)
wobbleXY (1 + random (w - 1) , 1 + random (h - 1));
}
public function stay () :Void{
onEnterFrame=null;
}
public function clear ():Void{
stay();
res1 = new BitmapData (w2, h2, false, 128);
res2 = new BitmapData (w, h, false, 128);
map = new BitmapData (w2, h2, false, 128);
buf = new BitmapData (w2, h2, false, 128);
water = new DisplacementMapFilter (res2, ORIGIN, 4, 4, 32, 32, "ignore");
render();
}
public function mouseWobble():Void {
start();
wobbleXY(_xmouse,_ymouse);
}
public function onMouseMove(){
if(!hitTest(_root._xmouse,_root._ymouse))return;
onMouseMove=mouseWobble;
mouseWobble();
}
public function onMouseUp() {
//onMouseMove=null;
}
}
Как я понимаю кодключается некая библиотека "DisplacementMapFilter"...
Подскажите где можно найти параметры этих разводов....
Заранее благодарен... )