2016/11/04

PhoenixFD 3.0 for 3dsMax Review測試報告


文 / Hammer Chen

優點
  • 快速設定預設Quick Setup presets,迅速上手14種特效情境
  • scene scale場景尺度參數方便全局調控模擬效果
  • 全新的FLIP Solver,比起舊版可更輕易模擬大量細節的液體
  • smoothness控制,有效減少grid artifact
  • 新的PCG Solver,massive vorticity可以產生更寫實、帶細節的煙霧、爆炸
  • fire有獨立的opacity控制,可製作更寫實的火焰
  • 可模擬水花、泡沫與霧氣,將寫實度提昇更高層次
  • 直接降速,就可以達到不錯的慢速流體效果
  • 業界領先,非常直覺的模擬後變速控制
  • 新的force類型,可產生變化多端的效果
  • 支援輸出Alembic格式

缺點
  • 缺乏專門的render elements,無法直接分開smoke與fire
  • 無法模擬rigid body dynamics
  • 缺乏狀態控制,無法靈活地控制轉換狀態
  • 變速與增加細節的cache都共用在Resimulation底下,應該要獨立分開

距上次筆者發表PhoenixFD 2.2版的測試報告又經過了六個月(點這裡觀看閱讀)。這段時間,有幸參與了PhoenixFD每日的nightly測試版,也因此能在短時間與各位讀者分享這次令人期待的新功能! 一套外掛要同時模擬水 、做火、做煙霧、甚至還要能渲染粒子,這本來就是野心很大目標,可以想見程式設計本身的困難度,以及使用者介面設計的棘手。



Presets快速設定
PhoenixFD 3這版的口號是『給藝術家的流體動態工具』。點一下就產生想要的特效,無需管其他複雜大量的參數,是所有藝術家的夢想。儘管聽起來難以置信,筆者一拿到軟體第一時間還是試了一下這個功能。PhoenixFD Toolbar上有14種快速設定,由左至右為火焰、爆破、大尺度煙霧、香煙的煙、燭火、雲、自來水、啤酒、蜂蜜、濺血、油漆、水中油墨、瀑布與海洋。如此多的預設,筆者沒有時間一一測試,有興趣可至官方支援文件查看Quick Simulation Setup各個範例影片。

筆者隨意地在場景中放置茶壺,然後按下explosion的圖示,PhoenixFD便隨即產生相關需要的helper物件,按下模擬產生的結果已達水準。新的GPU Preview則是會把效果直接顯示於當前的viewport上。細查發現原來PhoenixFD 3具有scene scale參數,且quick presets會自動調整scene scale的大小,確保不管任何場景尺度都能對當前場景產生好看的模擬效果。

quick presets會自動調控scene scale,確保產生好看的模擬效果

筆者甚至利用這個quick presets執行正在製作的專案。下例的煙囪煙使用large scale smoke presets,其新的PCG Solver可以有效地避免常見的的boiling effect (煙霧模擬過長最後得到大量破碎的煙霧)

新的PCG Solver可以有效地避免高vorticity造成的boiling effect

介面的簡化
PhoenixFD的介面跟上版相比做了很多簡化,把水與火煙霧的解算分開來,分成FireSmokeSim 與LiquidSim兩種。由於計算水需最需要維持液體的體積,因此乾脆把那些會讓液體越算越少的守恆方法拿掉,免除了使用者該選擇哪種解算器而感到困惑 。而在FireSmokeSim則是除了保留過去三種的守恆選項,還增加了PCG Symatric,保留了四種material transfer的方法。
Liquid (左) FireSmoke (右)的介面

全新的液體解算器FLIP Solver
電腦軟體在模擬液體的時候常見兩大技巧。一是把流體視為一顆顆的粒子,計算粒子之間的碰撞,稱為particle-based,這種方法適合用在特寫鏡頭或是近距離畫面的液體,具有細節但又不需要巨量的粒子;另一種方法是是把空間切成成一個個cell,計算cell彼此之間能量轉移,稱為grid-based,有名的例子是FumeFX。FLIP則是混合上述的兩種方法,新的FLIP Solver 穩定、可預測、可快速地計算大量的液體。搭配smoothness功能使用可以解決大部分的grid artifact鋸齒問題,輸出的部份可使用alembic。

筆者在使用PhoenixFD新的液體模擬器,感到非常訝異!及便是當grid設得很細,還是能在合理的時間模擬出大量細節的液體,這樣的效果能直接顯示在3dsMax viewport上。不做特殊的daemon處理下,就能模擬出自然的液體形狀。

grid-based fluid所產生的流體有時會有grid artifact,所產生的mesh會有條紋狀的感覺,尤其在低解析度grid更明顯。PhoenixFD 3提供Smoothness平滑化控制,可在模擬完後有效減少條紋狀的問題。


smoothness可以有效地消除grid artifact,讓mesh更平滑

另外,液體模擬常見的問題便是細節過多。這裡的細節過多的意思是當提高粒子數目或是grid的解析度時,模擬產生的mesh中間有太多的孔洞,反而讓液體看起來不自然。筆者在測試時意外發現適當的time scale與scene scale可以免除需要sheeter的使用
提高SPF(Steps per frame)可產生類似Sheeter daemon的效果

在液體模擬完後往往需要輸出給其他同事使用。PhoenixFD 3支援Alembic檔案格式,筆者曾測試到17Gb的液體模型序列檔輸出,在Viewport上的frame rate也在可接受的範圍


輸出的Alembic格式

新版的PhoenixFD提供多種專用的texture map,可幫助產生更寫實的海洋


寫實的海洋效果


Foam, Splash 與Fog
如果把真實世界的液體視為一個解析度很高的3D模型,那麼浪花就是帶有很多孔洞,液體混合空氣產生超高解析度的3D模型。浪花與煙霧都需要大量的模型細節,幾乎不可能讓電腦在有限的時間跑的動,因此液體的主體除了計算出mesh以外,那些浪花,泡沫,霧氣則是用逼近的方式來表現出來。舊版的PhoenixFD只有Foam與Splash這兩種粒子,新版則是多了Fog這個類型。模擬水花的選單裡面,新增Split to Mist,會自動將水花轉換成霧氣粒子。





三種particle: foam, splash與mist混合產生寫實的水花效果

舊版fire的不透明通道是與smoke共用,當需要同時有火與煙霧時,有時火焰的細節難以表現出來。新版的PhoenixFD提供獨立的選項"Use Own Opacity",使火焰更能表現出細節。Curve Editor也比舊版更容易使用。

火焰效果(帶有motion blur)


更模糊或是更清晰
PhoenixFD 3提供兩種處理base simulation的概念,一種是讓原本的效果模糊化,還具有Threshold閥值調控,可用在低解析度的grid消除noise。



PhoenixFD 3也提供根據基礎模擬,再次計算出更細grid的效果。提供三種方法:Interpolate,Wavelet Fast,Wavelet Nice。當勾選了Enable,軟體會自動切換到Resimulation 的cache,這與FumeFX的操作有一點不一樣。


Wavelet可以提昇模擬細節

關於流體的retime變速效果
許多特效鏡頭都需要針對流體變速,通常是慢鏡頭。幾乎所有的汽水、果汁牛奶廣告看到的液體效果,多多少少都帶有慢鏡頭。FumeFX用戶的慢速流程通常是用比realtime速度稍慢(time = 0.7)然後再配合post 算出慢速效果。在FumeFX流程中這樣的作法不能有太大速度差異,一般來說t = 0.25以下就可能產生明顯閃爍問題。

利用Cache Index可以很直觀地讓流體變速

筆者測試流體的慢速效果。由於過去使用FumeFX的慢速功能的經驗,反而一開始用時對流程會感到困惑。 首先,PhoenixFD不需要切換cache,當勾選Resimulation後,自動就會切換到resimulation的cache。其二,不管有沒有Resimulation,只要使用Time Blend的功能,都可以產生慢速流體的效果,差別是如果真的有先計算Resimulation,PhoenixFD會把每個frame的資料寫到cache裡面,而不做的話就是在算圖時才產生內差的資料。

筆者實測發現,與FumeFX相同的是,速度不可以減慢過多,否則產生的流體會發生閃爍的問題。有趣個是,如果直接改變dynamic裡面的time scale,效果卻是出奇地好。這對FX特效師或許是很奇怪的事,但就藝術家或是一般人的角度卻又再直觀不過了。想要流體速度變慢,就把Time scale調小,想要速度快就調高,這是從業人員的夢想。

Realflow中也可對液體做realtime,稱為Edit Time Function,按下retime的按鈕後會重新跑一次計算,產生新的序列快取檔,基本上概念很類似FumeFX的Post。PhoenixFD 3也提供edit curve式的變速方式,index,play speed,用起來相當直觀。frame之間的產生新的frame可根據補差或是速度通道來控制。


其他重要功能
  • 海波浪力場(Wave Force)可將PhoenixFDOceanTex的效果轉換到模擬上
  • 讓流體沿路徑移動的力場(Follow Path force)
  • 物體吸引力與形變力場(Body Attraction and Morphing forces)
  • 當使用物理為基礎(Physically Based)的選項時 允許在黑體火焰(Black Body Fire)模型與藝術家模型兩個之間的漸進轉換

還缺少了什麼功能?
  • Rigidbody的模擬  在許多狀況我們需要剛體與液體之間的動態交互作用。儘管PhoenixFD可以計算幾何體與流體之間的碰撞,但是作用卻只是單向的。目前流體無法推動剛體,例如你洪水無法推動地面的紙箱。紙箱的移動必須要借助其他的軟體。 3dsMax自201x版後就把Reactor拿掉,即使是後來有Nvidia的模擬功能,還是缺乏Reactor的water模擬。如果支援剛體模擬,會讓功能更加完整。
  • 目前無法直接將火焰與煙霧的pass分開,還不提供專用的render element。(但是有間接的方法可做到)
  • 缺乏類似Realflow filter damon 用來轉換流體的狀態,比方說我有一個物件碎裂後液化,PhoenixFD沒有機制做狀態的轉換。

結論
這版的流體多了FLIP solver可以輕易快速地模擬大量的液體。筆者過去使用Realflow的經驗,Realflow最大的問題是必須透過connectivity plugin將模型動態導入3dsmax,還有水花、泡沫算圖...等等問題。因此當PhoenixFD推出新的FLIP Solver時,筆者就想要把過去Realflow的場景移植到PhoenixFD。意外地發現式真的可以拿來執行專案!也因此花了大部分時間在測試液體。 發現即使是百萬面數,輸出近17Gb 的alembic mesh,還是可以很穩定的在3dsMax中開啟,播放與算圖。small scale的場景如常見的果汁廣告,草莓掉到牛奶中,慢動作鏡頭亦可輕易達成。PhoenixFD 3實際測試也證明了在大尺度,高度細節的mesh,火焰爆破都能有穩定的表現。從軟體功能的布局來看,很明顯地威脅FumeFX(煙霧火焰爆破)、Realflow(液體)甚至Krakatoa(粒子算圖)的市場。這是一套非常值得推薦的特效套件。

No comments: