涟漪的MEL式~
完全自己编写,请放心使用~
global vector $collisionDate[];
if (event!=0)
{
lifespanPP=0;
if (id%3==0)
$collisionDate[size($collisionDate)]=<<collisionU,collisionV,frame>>;
}
else
lifespanPP=10;
======================================
global vector $collisionDate[];
if (frame<20)
clear $collisionDate;
vector $tempDate=$collisionDate[0];
float $speed=0.2;
float $num=1;
float $timeDacy=0.005;
float $disDacy=0.1;
float $offset=500*mag(<<$tempDate.x-si.uCoord,$tempDate.y-si.vCoord,0>>);
float $temp=$speed*(frame-$tempDate.z)-$offset*$num;
float $lianyi=((sin($temp)+1)/2)*linstep(0,2,$temp)*exp(-((frame-$tempDate.z)*$timeDacy+$offset*$disDacy));
ramp1.vCoord=$lianyi;
==========================================================================================
global vector $collisionDate[];
if (frame<20)
clear $collisionDate;
float $speed=0.2;
float $num=1;
float $timeDacy=0.005;
float $disDacy=0.1;
float $count=0;
for ($i=0;$i<size($collisionDate);$i++)
{
vector $tempDate=$collisionDate[$i];
float $offset=500*mag(<<$tempDate.x-si.uCoord,$tempDate.y-si.vCoord,0>>);
float $temp=$speed*(frame-$tempDate.z)-$offset*$num;
float $lianyi=((sin($temp)+1)/2)*linstep(0,2,$temp)*exp(-((frame-$tempDate.z)*$timeDacy+$offset*$disDacy));
$count+=$lianyi;
}
ramp1.vCoord=clamp(0,1,$count);
==================================================================
for ($i=1;$i<21;$i++)
{
float $speed=0.2;
float $num=0.7;
float $timeDacy=0.005;
float $disDacy=0.05;
float $offset=`getAttr ("ball"+$i+".tz")`;
float $temp=$speed*frame+$offset*$num;
float $lianyi=sin($temp)*linstep(0,2,$temp)*exp(-frame*$timeDacy+$offset*$disDacy);
setAttr ("ball"+$i+".ty") $lianyi;
}
原理很简单,就是以水滴和水面的碰撞点为中心,向外发散的水面上的点以SIN曲线方式上下移动并加入摔减值~