一個人只要不想再要,就什麼都可以放下
《薔薇島嶼》
效果
原理
教程來自官網,文件官網也有,非常不錯的案例
全部節點
模型
設置曲線上最大@ptnum的點的速度
結果
將curve曲線導入wireSim這個dop內,最大@ptnum的點的運動,驅動整個wire曲線的運動(得到了軟皮管運動的效果)
下面發射粒子,從噴頭處發射粒子,獲取曲線最的@N,@up,然後計算得到@side屬性,拷貝噴頭到曲線最末端的點上,然後設置@v,@v就是粒子發射的速度,不能太擴散,不然最後的pyro形態沒有噴射效果
v@v = lerp(-v@v,@N,fit(rand(@ptnum * @Frame),0,1,ch(「minVariance」),ch(「maxVariance」)));
發射粒子
10米遠,120000粒子
緩存粒子,並且隨機刪除一些粒子,然後計算速度,將一些粒子拖尾(直線的拖尾),這樣形成的temperature和fuel場,就有很強的噴射感,粒子形態很大程度上決定了pyro形態,不要在pyro上調節太多參數,這樣會搞亂自己,也更加不易控制,所以在粒子生產temperature和fuel場之前就要得到精準的粒子形態
attribwrangle9,根據@age映射,刪除一些粒子
@density = fit(@age,ch("ageMin"),ch("ageMax"),0,1);
float t = chramp("velMult",fit(@age,ch("ageMinV"),ch("ageMaxV"),1,0));
v@v *= t;
@Cd = 0;
//@Cd = t;
@Cd = @density;
if(@density > .99) {
removepoint(0,@ptnum);
}
attribwrangle15,根據@age刪除粒子,發射太久的粒子不會生成temperature和fuel
if(@age < .0001) {
removepoint(0,@ptnum);
}
attribwrangle13,映射density和v屬性,並形成一些直線拖尾
int its = chi("iterations");
vector sL = ((@P-(-v@v/24))-@P) * ch("s") * (1/(float)its);
@density = 0;
for(int i = 1; i <= its; i++) {
int nPt = addpoint(0,(sL*(float)i)+@P);
float r = chramp("demRamp",fit(i,0,its,0,1));
setpointattrib(0,"density",nPt,r,"set");
setpointattrib(0,"v",nPt,v@v,"set");
}
attribwrangle14
@Cd = @density;
attribwrangle16
if(@P.y < 0) {
removepoint(0,@ptnum);
}
結果
10米,900000個粒子
根據粒子,生成fuel和temperature場,精度0.012,緩存這一步,雖然花點時間,但是對機器不好的人來說,解算的時候CPU壓力會小一些,當然,土豪也可以直接用粒子(設置好temperature和fuel屬性)通過sop geometry直接導入到dop,在dop內採樣點屬性生成temperature等場
5米,temperatu差不多1400萬voxel
緩存
volumevop1內部,為heat和temperature加躁波
結果
邊界框,根據粒子的形態,生成邊界框,解算要用
pyro模擬,精度0.012,gasdisturb產生細小的躁波,gasturbulence控制整體形態的躁波,都不能加太大,gasdisspate消散場
第10秒,5米,density1200萬voxel
渲染
fireball材質,個人覺得mantra渲volume有點慢,推薦用renderman,當然,最快的要數arnold了
燈光和背景