當前位置:首頁 >教程首頁 > Houdini >Houdini模擬逼真流體效果的10條技巧

Houdini模擬逼真流體效果的10條技巧

發布時間:2020-04-01 11:23:42

小夥伴們都知道Houdini提供了一套非常強大的模擬流體工具,怎麼才能讓流體效果看上去逼真是一項非常富有挑戰性的工作。現在不光是電影,就連電視劇集對視覺效果也有了很高的要求,製作周期越來越緊張,質量效果卻要與電影媲美。

0.webp.jpg

Kevin Pinga Demo截圖

今天想給大家分享曾在多家知名視效公司任職Houdini FX Artist藝術家總結的10條Houdini FLIP流體模擬技巧,幫助大家在製作流體鏡頭時能夠高效地完成流體模擬,同時還會保持較高的質量效果。

需要說明的是,這些技巧針對於熟悉FLIP解算器的小夥伴們,如果剛好你是萌新級別選手,還請嚐試SideFX的教程。

0-2.webp.jpg

Kevin Pinga 美國Houdini FX Artist

Kevin Pinga目前在FuseFX擔任Houdini FX Artist,畢業於薩凡納藝術與設計學院視覺效果專業,輔修技術方向,後來擔任學校視覺效果講師。曾在Luma Pictures、Ingenuity Studios、Zoic Studios、Gradient Effects等知名團隊任職。曾參與《蜘蛛俠:英雄遠征》《行屍走肉》《城堡岩》等影視作品的特效製作,也為Taylor Swift、Billie Eilish和Maroon 5的音樂MV完成過特效製作。總結一句話,也是Kevin Pinga對自己的描述,“注重細節的Houdini FX Artist,具有創建逼真效果的經驗”。

Kevin Pinga FX Showreel 2020

好,10條Houdini FLIP流體模擬技巧來咯!

1. 獲取源流體要用 POP Source,而不是FLIP Source

FLIP獲取源流體的默認方法是使用 FLIP Source節點,實質就是創建了一個VDB,由DOP中的Volume Source節點讀取。這是使用shelf tools時自動獲取的。

對於需要從較大模糊形狀中獲取源流體的情況來說,這是種不錯的方法,但會占用大量資源,相當耗時。而且在進入模擬階段之前,想要獲得更精準sourcing而增加VDB分辨率的話,還會進一步降低速度。

相反,大佬采用方法的是直接使用基於多邊形的常規SOP幾何圖形,無需轉換為VDB。source可以與FLIP解算器本身的Sourcing input相連接的POP Source節點讀取,與為常規粒子模擬導入source的方式相同。

POP Source節點控製起來非常直觀,大多數藝術家應該在使用常規粒子的過程中非常熟悉了。這樣可以通過預測的方式來控製和監視粒子計數,而與FLIP對象本身的粒子分離無關。

1.gif

使用 POP Source的源流體提供熟悉的emission, activation和velocity屬性

2. FLIP fluids使用POP節點

很多剛入行的夥伴很容易會忘記的,FLIP本質上就是一係列中間帶有容積平流步驟的POP節點,基礎本身隻是粒子,意味著DOP中所有的POP節點都可以用於FLIP fluids。這就是為什麼上一個技巧可以用POP Source節點獲得source的原因。

POP Force節點是用於處理常規粒子時創建運動的基本所在,那麼,為什麼不將其與FLIP流體一起使用呢?用POP Force節點可在產生很小噪波的情況下產生更有魅力的流體效果,低頻噪波也可以有助於創建細節,無需增加粒子數量或粒子分離。但需要注意的是,不要添加過多噪波,可能會導致模擬看上去不是很真實。

FLIP模擬中另外一個有用的POP節點是POP Speed Limit。結合 POP Drag節點,非常適合控製可能不太好控製的高速粒子。

2.gif

使用POP Force節點添加少量噪點對FLIP細節模擬有很大幫助

3. 使用Bounds qL來設置FLIP limits

Bounds qL 節點是一個非常好的工具,包含很多簡單實用的功能,它是非常大型的開源Houdini工具集 qLib的一部分。大多數工作室默認安裝qLib,因為它的開發是以實際製作而驅動的。如果你還沒有用到的話,可以按照GitHub上的說明輕鬆安裝。

將Bounds qL主要用於設置FLIP和Pyro模擬的體積限製。這是從標準Bound節點開始的步驟,它包括一個選項,可以根據輸入動畫來創建邊界。

最有用的功能是Output: Values checkbox,可解鎖 bounding box的大小和中心值。然後可以把這些值複製到FLIP解算器Volume Limits選項卡的任何參數,或需要 bounding box的其他任何操作。具有集中的 bounding box信息可以避免用戶錯誤,有助於創建更多程序性設置。

3.gif

參考Bounds qL中的參數有助於設置模擬極限

4. 在FLIP求解器中啟動有用的屬性

在大多數FLIP模擬中打開FLIP解算器上的一些參數。有三個主要的參數是ID、age和vorticity,可用於模擬後的調整(正如下一條技巧會介紹到),在Behavior and Vorticity選項卡的FLIP Solver中就能找到。

相信很多Houdini用戶都很熟悉ID屬性和它的功能。緩存額外的屬性可能會對數據大小有一些影響,但是能夠獲取到這些信息還是有用的。

通過Age Particles checkbox(也可導出life屬性) 獲取Age屬性,可以隨著時間控製模擬的外觀,尤其是當粒子源在恒定發射的時候。

vorticity屬性對於獲取激流/湍流這種次級模擬來源來說非常方便,而且對處理著色也非常有用。

4.gif

啟用額外的FLIP屬性:就像Houdini的其他操作一樣,隻需要勾選幾個複選框

5. 通過模擬後的調整來挽救失敗的模擬

一般情況下更依賴於FLIP模擬作為最終結果輸出,這是最理想的工作流程。可由於時間限製,在實際情況中我們不一定總是擁有重新模擬的機會來解決問題。在這種情況下,FLIP粒子模擬後進行一些調整可以“挽救”失敗的狀況。

例如,添加ID屬性的原因之一是可以使用Retime節點對模擬進行重置時間。

在運行中分辨率模擬時還會遇到一個常見的問題,liquid droplets在模擬高密度區的大小很好,在稀疏密度區就會很大。在這種情況下,可以嚐試使用pcfind,函數可以幫助標記稀疏區域並降低它們的pscale值。

使用的代碼段:

5-1.jpg5-2.gif

一個簡單的VEX討論,根據點雲密度調整粒子大小。全尺寸圖片在這裏。

6. 使用xyzdist處理高分辨率碰撞表麵

另一個模擬後的調整方法就是,xyzdist()非常好用,(Kevin Pinga認為)是到目前為止和 primuv()齊名的。

在VEX或VOP文本中,xyzdist() 計算的是表麵上到最近插值點的距離。它與primuv()結合起來,就可以從對象的參數UV中提取任何屬性。

在上述情況下,提取高分辨率碰撞表麵位置,並用於將粒子推向該表麵。在某些情況下,也可以直接在網格表麵位置進行這個操作,尤其是針對於那些可以看到碰撞表麵的鏡頭(例如將液體倒入透明玻璃杯中)。要確保把距離限製在一個很小的值上,才能加快計算速度。

使用的代碼:

//initializing variables

int p_prim;

vector p_puv;

//getting the distance and the parametric position of the closest point

float dist = xyzdist(1,@P,p_prim,p_puv);

vector P2= primuv(1,"P",p_prim,p_puv);

//mixing the P of the points, influenced by a mapped distance

@P = fit(dist,chf("min_dist"),chf("max_dist"),P2,@P);

在製作中,更為實際的用法是在模擬過程中使用較低分辨率的碰撞,然後再後期模擬調整中運行這個功能,使流體看起來像是在於高分辨率碰撞產生的交互。

6.gif

使用xyzdist()和primuv()將粒子推向碰撞表麵

7. 使用ID屬性消除有問題的粒子

當遇到模擬完成98%,差不多快完事的時候,而剩餘2%的粒子不起作用的情況時,有一個簡單而又有效的解決技巧。如果存儲了前麵提到的ID屬性,就可以用它來消除有問題的粒子。如果沒有ID屬性,隨著point count在幀與幀之間的變化,就沒法標記標記正確粒子以進行刪除。

有一個很好的方法,進入point selection模式,在鍵盤上按9,這時會顯示出Group Selection 窗格,按ID選擇,點擊齒輪圖標,選擇Attributes > id,然後隻需在視窗中選擇要刪除的粒子,點擊[Delete]即可。Blast節點會自動生成,參考的是 point ID,而不是point number。

7.gif

一種通過ID屬性正確清除有問題粒子的簡單方法

8. 使用reseeding來增加稀疏區域

在製作中,大部分的模擬開發工作都是使用中分辨率容器完成的。有時候,得到的中分辨率FLIP模擬可能達到了你的所有要求,唯獨在最終網格渲染的時候看上去粒子不太夠。遇到這種情況的解決辦法是,在FLIP解算器中降低Particle Separation設置(提高分辨率和粒子數),將模擬提交到渲染農場,(回家享受一下周末)第二天早上發現模擬效果看起來完全不同了。

不過在這種情況下,更建議大家啟用reseeding參數,而不是改變 particle separation。在默認情況下使用reseeding參數,增加Surface Oversampling參數可以通過散布粒子來幫助增加稀疏區域中的粒子數量。這樣,在保持了模擬的總體外觀的同時,還得保證有足夠粒子來避免網格流體看起來像瑞士奶酪一樣。

8.gif

增大surface oversampling來填充稀疏區域的模擬

9. 直接使用原始 FLIP 模擬作為不同元素

在進行流體模擬時的目標之一是最大限度地利用原始FLIP模擬,包括直接將其用作湍流/急流效果。

模擬湍流的傳統方式是模擬FLIP流體,然後再其之上運行湍流解算器。當然第二步並不總是非要有的,尤其對於飛濺和噴水等快速運動的流體來說。還有一個問題就是在對粒子進行網格化的時候,想讓流體看上去真實一些也很不容易。

建議大家用FLIP 模擬本身,直接加湍流著色器進行渲染,既可以渲染粒子本身,也可以將其光柵格為VDB,進行體積渲染。有時Kevin Pinga會根據鏡頭的實際效果將兩種方法結合到一起使用。使用Houdini海洋工具時自動創建的湍流著色器非常適合光柵化的粒子。

9.webp.jpg

將原始FLIP模擬直接渲為湍流

10. 優化模擬和緩存

高分辨率FLIP 模擬具有的挑戰之一是需要處理生成大量的數據。一種常見的做法是在緩存模擬的任何部分之前刪除不需要的屬性。

另外一個可以減少內存占用的操作是清除相機可視範圍以外的粒子。在Houdini中有很多執行這個操作的方法,大家可以選用自己喜歡的一種。

另外,如果已經準備好了要渲染的幾何圖形,最好將其緩存並啟用Delay Load Geometry checkbox,Mantra不會將幾何圖形嵌入到IFD文件中,而是將其引用到硬盤的文件中。這將有助於減少加載時間,大大減少IFD生成時間和文件大小。如果你有渲染農場而且不想太麻煩的話,這個方法會很好用。

10.webp.jpg

使用 File Cache節點中的Delay Load Geometry複選框可加快高分辨率模擬的工作

好啦,關於Kevin Pinga介紹的10條Houdini FLIP流體模擬技巧我們先介紹到這裏,可能其中會有一些不準確的地方,還請大家多多諒解。

华体会hth体育网 賞析
  • 2101期學員李思庭作品

    2101期學員李思庭作品

  • 2104期學員林雪茹作品

    2104期學員林雪茹作品

  • 2107期學員趙淩作品

    2107期學員趙淩作品

  • 2107期學員趙燃作品

    2107期學員趙燃作品

  • 2106期學員徐正浩作品

    2106期學員徐正浩作品

  • 2106期學員弓莉作品

    2106期學員弓莉作品

  • 2105期學員白羽新作品

    2105期學員白羽新作品

  • 2107期學員王佳蕊作品

    2107期學員王佳蕊作品

專業問題谘詢

你擔心的問題,火星幫你解答

微信掃碼入群領福利

掃碼領福利最新AI資訊

點擊谘詢
添加老師微信,馬上領取免費課程資源

1. 打開微信掃一掃,掃描左側二維碼

2. 添加老師微信,馬上領取免費課程資源

×

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯係,請保持電話暢通!
確定