1、使用nurbs创建一个圆柱,利用晶格变形(选中圆柱和线)制作 tornado外形。
2、创建发射器,goal(goal weight为1)技术使粒子追模型。
表达式:
a/半径
新建once(PP),控制粒子半径在运行时表达式中只运行一次随机
创建表达式:particleShape1.radiusPP = 0;
运行表达式:if (particleShape1.once == 0)
{particleShape1.radiusPP = rand(0.01,0.022);
particleShape1.once = 1;}
b/透明度
创建表达式:particleShape1.opacityPP = rand(0.15,0.3);
c/粒子旋转并上升
创建表达式:
particleShape1.goalU = rand(0,8); //起始发射
particleShape1.goalV = rand(0,0.02); //粒子v方向初始值随机
创建一个vspeed
vspeed = rand(1,1.08); //使得上升速度有一定随机
运行表达式:
particleShape1.goalV += 0.02 * vspeed; //v方向上升
particleShape1.goalU += -0.08; //u方向旋转
if (particleShape1.goalV > 1)
{particleShape1.lifespanPP = 0;} //减少系统负担
d/粒子向法线偏移并且螺纹效果
点击goal weights and objects->delete goal world normal 0 PP 粒子追模型的法线方向
birthTime一个隐藏的粒子属性,控制粒子出身时间,在这里控制螺纹效果
使用ratePP粒子比率控制粒子在圆柱中心和边缘的分布
创建表达式:
创建一个randoffsetPP随机控制内外偏移
particleShape1.randoffsetPP = rand(-0.5,1.05);
particleShape1.ratePP = rand(0,7);
运行表达式:
if (particleShape1.ratePP>1)
{particleShape1.goalOffset = particleShape1.goalWorldNormal0PP * particleShape1.randoffsetPP * (noise(particleShape1.birthTime*10+time*0.5)*0.5+0.5)*0.6;}
else
{particleShape1.goalOffset = particleShape1.goalWorldNormal0PP * particleShape1.randOffsetPP;}
e/粒子分布控制,解决下面和上面的粒子数量少问题
新建一个属性rampPP,添加一个ramp,先设置create ramp options->inputV->goalV。
再edit ramp,控制粒子v向上的分布,黑色表示显示越多,白色表示显示越少。
因为模型UV分布是两端稀疏,中间密集,所以调节整个ramp是中间白,两端灰。
(从新做了一些修改,ramp调节还是有待调整,明天再改了)
(又重新调整里ramp分布)