用簡單的節點嘗試了下Houdini流體的變速,這裏的流體指的是Pyro,而不是FLIP,FLIP只需要記錄ID屬性然後TimeBlend & TimeShift即可。
上圖是一個10倍降速的測試對比,在這個對比中,左邊是retime的測試,右兩個是對照,其中中間是TimeBlend & TimeShift,右邊是隻一個簡單的TimeShift。
使用的方法類似advect,即 density = volumesample(p - v * length / Δ ),其中Δ爲1/$FPS,length是advect的長度,=0時不變,=1時類似於下一幀。
但只是從floor($FF)去推下一幀時會發生的情況是$FF在跨越整數幀時會有一個小小的突變,所以用了一個另外的反向advect去推了上一幀,並在這兩個插值之間mix。
w=$FF-floor($FF)
dens1= volumesample(density1, p - v1 * w/ Δ )
dens2=volumesample(density2, p + v2 * (1-w)/ Δ )
density=mix(dens1, dens2, w)
(density1, v1, density2, v2分別爲floor($FF)幀和ceil($FF)的密度和速度)
在流體細節特別多時會能看出插值的不精確來。這玩意兒怎麼說呢,畢竟是插值。等看看能否把BFECC的思想應用進去,如果可以會精確很多。