Pyro 的 resize container 有時候會讓快速物件的 velocity 一直碰壁,造成不好看的動態,在這種時候取消使用 resize container 卻會造成 cache 相當大,整個 cache 明明 density 佔很小一塊,卻保存了整個框架的 velocity,很沒必要。
在 houdini 15,有一個新 sop 可以很簡單解決這件事情,讓 velocity 資訊 clip 到只剩 density 周圍。
上面是一個從原始 cache 輸出 VDB 的壓縮流程,上半部是方才所提到的刪除方式,下半部只把 VDB 壓縮成 16-bit 。
首先先用 volume blur 取出比 density 大一點的範圍,等等要當作 mask。
接著使用 houdini 15 最新出的 volume compress 取剛剛的 mask 去刪除不必要的資訊。
轉成 VDB 後,上一個 primitive 去標記輸出時要存成 16-bit 的屬性。
上面的流程跑完,最後輸出的 VDB 甚至可以達到原本 cache 的十分之一大小。