2015/08/15

Ahmed談FumeFX快取檔案的最佳化

作者:AHMED Saady
編譯:Hammer Chen

所以,我們怎樣最佳化模擬流體的呢?檔案大小、算圖時間與網路頻寬等因素。這裡我先不談模擬時間的最佳化,儘管這是很重要也很常見的問題。你需要知道的,自從Fume FX 2.0推出,就有很多很酷的新功能,很多功能我覺得沒被重視 大部分人以為Fume FX 2.0跟Fume FX 2.1差不多,其實2.1版增加了很多功能...

不僅僅是修復了幾個程式錯誤,新的Wavelet-Turbulence (WT) 與 Post Processing (以下簡稱PP) 。即便是PP的功能大部分人以為這個功能只是用在變速(retime)而已。提醒你,我幾乎每個專案都用到retime ,讓你可以模擬100個frame 然後讓煙速度變慢,省卻了許多冗長的、沒必要的預先模擬階段(pre-roll)。


但是PP還有其他許多功能。首先,它能最佳化格點(grid)到最小的數值。只要你有勾選MINIMIZE GRID選項 (預設是勾選的) 。如果你的dynamic grid有過多無用空間,會用藍色grid顯示,在黃色的grid裡面。這個功能會把你模擬的grid縮到最小的範圍。這真的是很棒的功能,儘管不是什麼天大個改變。但真正個威力,是排除通道(exclude channels)這個功能。

這功能能幹嘛?如果你在模擬PP之前,勾選了所有的exclude channels 就表示你要把這些通道資料排除在最終模擬的快取當中。這就跟你最初模擬WT有關。或許你已經加入了Smoke、Fire、Temperature、Velocity 與Detail 因為這些是WT的必要條件,才能事後提昇解析度。

問題在哪?
問題是,現在你模擬已經完成了!解析度變成兩倍,而且快取檔案仍然帶有五個通道的資料 而你也用不到了。如果你真的要變成高手,變成技術專家,那你還可以用temperature channel算到temperature pass中,在後製時可以用。如果你想要知道如何做,在Allan Mckay的教學DVD【Fume FX Core-Fundamental】中有教。再者,你可以用vector channel 專們餵給Krakatoa使用。同時Temperature Channel亦可用在Krakatoa的KCM中,但是除非你真的要做這些事,你差不多就不需要這多的五個通道了!

問題就是,如果你在做超大型的模擬,很多大量的細節而模擬的資料變成原本解析度的兩倍(因為WT的關係) 。你每個frame個快取資料可能有1GB這麼大,如果100個frame就需要100GB的硬碟資料空間,而且算圖時間會變得超級久,因為這麼大的資料透過網路算圖,傳輸會便很慢。這影響很大,是專案很常見的問題。你會因為檔案巨大,網路變慢最終整個停止,電腦需要大量記憶體才能算圖。

事實上,對我來說還蠻酷的。由於我擔任很多顧問職,我提供了許多工作室處理FumeFX grid的問題。這就跟合成師一樣,將2K EXR 或 DPX檔案變小,讓它不會讓網路變慢一樣。 Fume也是一樣的觀念,這些工作室建立了新的"Fume Artist"網路 ,可以維持大量離線模,加上你還必須要面對伺服器的硬碟被吃光。


後來我們找到方法把原本的FumeFX 快取降到原本的1% 因此1GB的快取變成10MB而已。 很不可思議對嗎? 排除通道(excluding channels)真的很棒,因為可以把這些再也用不到的通道甩掉,檔案就突然變小很多。最棒的是你省了很多硬碟空間,而且算圖變得快非常多,突然高解析度算圖不再是痛可的事情,你可更有彈性、可以更快速地測試算圖(faster turnaround time)

所以我可以開始玩玩改變顏色、燈光,不需要每次算圖就去泡咖啡...等。以往我最大的解析度用到1600x2500x1600 花了六天算圖, 解低度只用到960x540。 因此PP真的是很棒的功能,被忽略的功能。

假設你第一次模擬是MySim_0000.fxd ,然後經過WT你會產生MySim_WT_0000.fxd的檔案, 然後再PP會產生MySim_PP_0000.fxd 。總共你會的到三組快取序列檔案,理論上你會花上更多的硬碟空間。可是如果你要回來重新做WT,你還可以微調。 因此不要覆寫快取檔比較好 。當然會產生多餘的檔案,你只要記得確定不需要多餘的快取,把它們刪掉就好。

如果你對於最佳化過後的PP滿意,那可以刪除WT與原始快取檔。最後你得到有效率的、最佳化的算圖、更少的記憶體損耗、與更少的硬碟空間佔用、更多網路算圖頻寬。

這樣看起來,還蠻划算的!

No comments: