2012/09/04

RealFlow 2012 HYBRIDO參數調校

HYBRIDO

編譯:Hammer Chen

HYBRIDO是首次在RealFlow 5推出的流體技術, 全名為『HYBrid laRge dImension LiquiD sOlver』.自從RealFlow 5推出以來, 經過大幅改版與改良, 新版的RealFlow 2013變得更好.

在Realflow 5以前, 你很難模擬大尺度流體. 主要問題是particle-based的方法來解算的流體方程式. 這個方法適合拿來製作具有水花細節, 但是其實流體的核心(譯者註:所謂的核心就是非浪花的流體, 就算核心)並不需要有太多細節. 你卻仍然需要大量粒子, 可以進行製作, 只是說模擬時間過長.

最好的, 最有效的方式是核心模擬採用grid-based. 這個方法無法產生足夠細節---例如浪花, 如果你想用grid來產生浪花, 你可能需要超級高解析度的grid來產生浪花的細節.

許多二級細節 (浪花, 煙霧..等)

有個辦法! 就是結合particle-based 與 grid-based 算法的優點. 也就是混合的方式, 也就是利用grid-based 方法來產生核心流體, 然後用particle-based產生浪花細節.

HYBRIDO是很嶄新的技術, 結合了grid-based與 particle-based的手法, 用來產生複雜的, 大尺度的流體效果. 其他特效, 也就是二級效果, 例如: 泡沫, 煙霧...等細節或是表面的細節(displacement), 也可以用這個技術產生.

HYBRIDO (HYBrid larRge dImension LiquiD sOlver) 是全新的複雜大型水體解算的方法, 這個科技包含了自動產生二級水花, 泡沫與霧氣粒子. 有了HYBRIDO , 你可以模擬洪水, 海洋, 這些是傳統的Realflow particle emitter難以製作的流體.

RealFlow傳統的emitter很適合用在高細節的流體模擬, 具有小水花. 但是, 這很難用在大尺度的專案上. 常見的洪水流過街道的場面就是一個例子. 在以前如果你要模擬這樣的場景, 自動產生水花粒子必須要透過Python腳本並且要設定好壓力或是速度.


有了HYBRIDO, 上述問題都成為了歷史. 流體藝術家現在可以模擬驚人的畫面, 例如海上的破浪, 大型的洪水, 浪花打在沿岸上, 或是漁船在波濤洶湧的海上航行. RealFlow能夠計算浪花, 泡沫, 煙霧產生的條件, 然後自動計算這些粒子. 二級的粒子能夠靠網絡, 以後製的方法產生. 有了這個先進功能, 你可以產生上百萬個粒子, 發揮您算圖農場的威力.

Domains and Grids
domain就是你大尺度流體模擬發生的地方. RealFlow傳統的fluid emitter是自由無限制的, 但是Grid類型的模擬就限制在grid裡面 . 傳統的Realflow粒子是在一個幾乎無限制的空間中模擬, 不需要任何邊界, 所以這類的RealFlow流體稱為Smoothed Particle Hydrodynamics (SPH) , 很適合用在 中型範圍的專案上.

對於大尺度的模擬SPH就不是個很適當的方案了, 因為會需要大量的粒子, 而這些粒子其實並不需要很精確. SPH另外一個缺點是模擬速度, 如果採用SPH類型的粒子, 你會需要大量的粒子去填充大量的體積 (例如海洋). 這樣很不實際, 相對說來, RealFlow的grid的模擬方式速度就很快, 很適合用在這種狀況.

grid的解析度與傳統的流體解析度有所不同. 傳統的解析度會直接影響粒子的數目, 但是grid domain的解析度只會間接地影響粒子數目, 越高的cell (解析度, 模擬就會越精確.

如果你很熟悉RealFlow標準的emitter ,你會注意到它與Hybrido fluid的差異. 這跟Hybrido的grid cells特性有關. 標準的SPH-based fluids能提供更多的控制選項, 因為需要更多細節, 請看以下比較 兩者具有相同數量的粒子, 但結果完全不同:
左邊是Grid-based, 右邊是Particle-based


Density密度
密度=質量/體積

純水的密度大約為1.000 kg • m-3. 密度是用來模擬流體重量感, 例如酒精, 鹽水, 油或是液態金屬.

有點很重要, 改變密度並不會影響流體的動態行為. 也就是說, 模擬結果會一模一樣, 即便你把密度改為非常高的數值, 因為RealFlow grid fluids採用的是kinematic viscosity,而不是 dynamic viscosity.

Viscosity粘度
如果是grid-based fluids 粘性直接與密度有關, 雖然不會讓用戶察覺RealFlow採用 是kinematic viscosity . 根據流體的密度來決定, 動態黏度是計算流體內部摩擦力.

低粘性的流體如酒精, 溶劑或是水. 高粘性的物質如蜂蜜, 原油或是糖漿. 軟體所允許粘性極限小的是水(approx. 0.000001 m2 • s-1) , 最大則是融化的金屬(approx. 1 m2 • s-1).

Compressibility壓縮性
這個參數由0-1 ,沒有單位. 主要會影響流體的彈性, 數值0表示流體不能被壓縮, 流體會盡可能地緊貼在一起, 數值為0時就完全沒有彈性, 但會讓計算時間變長, 因為解算器必須要檢查壓縮的條件是否成立.

數值=1時, 這是最快速的方法, 你會清楚地看到反彈與擾動. 預設值為0.5 很適合用在水.

Particle sampling粒子採樣
這個參數能決定每個cell粒子的數目, 越高的數值你就能產生越好的splash浪花效果, 以及更好的grid fluid的呈現結果. 這個數值要乘以三次方才等於實際產生的粒子數目, 例如3->3 * 3 * 3 = 27 , 雖然這個參數能夠提昇模擬結果, 但請記住Resolution才是最關鍵的參數.

Grid Fluid Emitter
這很類似Realflow傳統的emitter 所以有經驗的用戶能夠很輕易地上手, 但是有些設定則是完全不同. 例如Resolution”, “Density” 與 “Viscosity”是位於grid fluid domain.

Stream噴射
可以切換發射源為持續發射

Jittering抖動
RealFlow發射粒子是根據grid的位置, 因此會得到很規則的圖案. 這個參數會隨機移動粒子, 消除過度明顯的圖案. 數值為0-1.

Grid Mesh
grid mesh完全是針對新的grid fluid solver所設計, 因為需要完全不同的產生mesh的流體, 所以就必須引進新方法, 這個grid mesh能夠在core fluid與secondary emitters (splash 和 foam)之間無縫地產生mesh.

grid mesh並不是仰賴粒子所計算的, 儘管如此grid fluid particles可以跟標準的mesh引擎一起使用產生3D立體的流體, 你可以添加particle-based fluids到grid mesh中, 所以結合了grid-based fluid 與 particle-based fluids這兩者. 唯一的限制是: 一個grid domain只能有一個grid mesh.

Grid meshes通常需要某種程度的過濾來對鋸齒狀的邊做處理, 平滑畫. 為什麼會產生粗糙的流體呢? 是因為grid doman本身就是一格一格的, 而grid的細切越多, 就能產生越平滑的mesh, 所以就是增加grid mesh的Resolution. 另一個辦法是用Relaxation放鬆, 另外一種是用displacement maps, 但只適用於海面.

Filter過濾
你可以選YES或是No. 這個功能速度很快, 不會增加太多mesh產生的時間, 絕對值得花時間增加這道手續.

Relaxation放鬆
這個功能會拉伸mesh形狀, 產生更自然的mesh, 結果會讓mesh看起來更像水, 更寫實. 放鬆讓你可以用較低解析度的emitter產生高品質的mesh. 預設的數值調整的還不錯, 幾乎就是你會想用的數值 . 這個參數十分敏感, 與其改變其強度, 不如提高或是降低Steps. 雖然放鬆功能很有效還是有其極限的, 例如只有幾百個或是幾千個粒子的emitter, 就不適合產生完美的mesh, 即便是你使用filter也一樣.

Tension張力
要產生寫實的流體就必須要小心地使用放鬆這個參數. 用過頭的話會導致很尖銳不自然的邊 整個mesh還會萎縮. 數值越高 mesh的細節就越少, 但有時候你就是希望它細節少, 例如水銀或是液態金屬的表現, 具有高的表面張力. 再者, 類似海綿的組織, 也是設定高Steps與 Relaxation的好時機.

如果你看到不想要的, 高頻的構造出現在你的mesh上面, 便適合啟動這種filter . Tesion這個數值會拉平表面, 移除那些條紋, 類似於Relaxation. 這參數對Steps的設置也很敏感, 一般說來, 高頻的圖案很少會看到, 所以 Tension這個filter也很少使用.

Steps計算步數
每個filter參數都會受到這個參數所影響. 越高的強度越會影響“Relaxation” 與 “Tension” ,會導致過度過濾的mesh. 數值超過120會產生不寫實的結果, 除非你有想要做這特殊效果. 另一個問題是非常高的設定會減少細節, 預設數值是64 對大部分的場景都很足夠. 但是你還是可以試試看低一點或是高一點的數值, 在大部分狀況下32-96的範圍都很適合.




[相關資訊]


1 comment:

tensun said...

寫的很棒 前幾句就把這個技術寫的淺顯易懂