用户名 密    码

After Effects 爆炸效果:构建3D粒子发生器(4)

来源:火星时代 作者:XiaoYu 发布时间:2010-09-13 08:36:47 网友评论 0

现在的3D爆炸,粒子只是沿各个方向爆炸,要获得逼真的爆炸效果,还需增加一些其它作用力

g=100; //地心引力
w=0; //风
wdir=0; //风方向 (0 = 从左边吹风)
vmin=700; //最小初始速度
vmax=1000; //最大初始速度
amin=0; //最小垂直发射角
amax=110; //最大垂直发射角
d=4; //空气阻力系数
birth=effect("life").param("Point")[0];
life=effect("life").param("Point")[1];
origin=this_comp.layer("Null 1").position.value_at_time(birth);
age=time-birth;
seed_random(1,true);
s=random(vmin,vmax);// 初始速度
v_e=this_comp.layer("Null 1").position.velocity_at_time(birth); //发射器速度
a=degrees_to_radians(random(amin,amax)); //垂直角
r=degrees_to_radians(random(360)) //绕y轴旋转
x=s*Math.sin(a)*Math.cos(r);
y=-s*Math.cos(a);
z=s*Math.sin(a)*Math.sin(r);
v=[x,y,z]+v_e;
new_speed=length(v);
unit_v=normalize(v);
if (d>0){
delta_p=new_speed*(1-Math.exp(-d*age))/d;
}else{
delta_p=age*new_speed;
}
delta_w=w*age;
delta_g=g*age*age/2;
wa=degrees_to_radians(wdir);
origin + delta_p*unit_v + [delta_w*Math.cos(wa),0,delta_w*Math.sin(wa)] + [0,delta_g,0]
预览合成,效果如图3所示。注意到粒子现在遇到空气阻力,并受地形引力的作用,也限制粒子的垂直发射角在0和110度之间,效果逼真多了。
表达式中未显示的地方见上面的图

搜索栏目