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分佈)