小夥伴們都知道Houdini提供了一套非常強大的模擬流體工具,怎麼才能讓流體效果看上去逼真是一項非常富有挑戰性的工作。現在不光是電影,就連電視劇集對視覺效果也有了很高的要求,製作周期越來越緊張,質量效果卻要與電影媲美。
Kevin Pinga Demo截圖
今天想給大家分享曾在多家知名視效公司任職Houdini FX Artist藝術家總結的10條Houdini FLIP流體模擬技巧,幫助大家在製作流體鏡頭時能夠高效地完成流體模擬,同時還會保持較高的質量效果。
需要說明的是,這些技巧針對於熟悉FLIP解算器的小夥伴們,如果剛好你是萌新級別選手,還請嚐試SideFX的教程。
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對象本身的粒子分離無關。
使用 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節點,非常適合控製可能不太好控製的高速粒子。
使用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信息可以避免用戶錯誤,有助於創建更多程序性設置。
參考Bounds qL中的參數有助於設置模擬極限
4. 在FLIP求解器中啟動有用的屬性
在大多數FLIP模擬中打開FLIP解算器上的一些參數。有三個主要的參數是ID、age和vorticity,可用於模擬後的調整(正如下一條技巧會介紹到),在Behavior and Vorticity選項卡的FLIP Solver中就能找到。
相信很多Houdini用戶都很熟悉ID屬性和它的功能。緩存額外的屬性可能會對數據大小有一些影響,但是能夠獲取到這些信息還是有用的。
通過Age Particles checkbox(也可導出life屬性) 獲取Age屬性,可以隨著時間控製模擬的外觀,尤其是當粒子源在恒定發射的時候。
vorticity屬性對於獲取激流/湍流這種次級模擬來源來說非常方便,而且對處理著色也非常有用。
啟用額外的FLIP屬性:就像Houdini的其他操作一樣,隻需要勾選幾個複選框
5. 通過模擬後的調整來挽救失敗的模擬
一般情況下更依賴於FLIP模擬作為最終結果輸出,這是最理想的工作流程。可由於時間限製,在實際情況中我們不一定總是擁有重新模擬的機會來解決問題。在這種情況下,FLIP粒子模擬後進行一些調整可以“挽救”失敗的狀況。
例如,添加ID屬性的原因之一是可以使用Retime節點對模擬進行重置時間。
在運行中分辨率模擬時還會遇到一個常見的問題,liquid droplets在模擬高密度區的大小很好,在稀疏密度區就會很大。在這種情況下,可以嚐試使用pcfind,函數可以幫助標記稀疏區域並降低它們的pscale值。
使用的代碼段:
一個簡單的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);
在製作中,更為實際的用法是在模擬過程中使用較低分辨率的碰撞,然後再後期模擬調整中運行這個功能,使流體看起來像是在於高分辨率碰撞產生的交互。
使用xyzdist()和primuv()將粒子推向碰撞表麵
7. 使用ID屬性消除有問題的粒子
當遇到模擬完成98%,差不多快完事的時候,而剩餘2%的粒子不起作用的情況時,有一個簡單而又有效的解決技巧。如果存儲了前麵提到的ID屬性,就可以用它來消除有問題的粒子。如果沒有ID屬性,隨著point count在幀與幀之間的變化,就沒法標記標記正確粒子以進行刪除。
有一個很好的方法,進入point selection模式,在鍵盤上按9,這時會顯示出Group Selection 窗格,按ID選擇,點擊齒輪圖標,選擇Attributes > id,然後隻需在視窗中選擇要刪除的粒子,點擊[Delete]即可。Blast節點會自動生成,參考的是 point ID,而不是point number。
一種通過ID屬性正確清除有問題粒子的簡單方法
8. 使用reseeding來增加稀疏區域
在製作中,大部分的模擬開發工作都是使用中分辨率容器完成的。有時候,得到的中分辨率FLIP模擬可能達到了你的所有要求,唯獨在最終網格渲染的時候看上去粒子不太夠。遇到這種情況的解決辦法是,在FLIP解算器中降低Particle Separation設置(提高分辨率和粒子數),將模擬提交到渲染農場,(回家享受一下周末)第二天早上發現模擬效果看起來完全不同了。
不過在這種情況下,更建議大家啟用reseeding參數,而不是改變 particle separation。在默認情況下使用reseeding參數,增加Surface Oversampling參數可以通過散布粒子來幫助增加稀疏區域中的粒子數量。這樣,在保持了模擬的總體外觀的同時,還得保證有足夠粒子來避免網格流體看起來像瑞士奶酪一樣。
增大surface oversampling來填充稀疏區域的模擬
9. 直接使用原始 FLIP 模擬作為不同元素
在進行流體模擬時的目標之一是最大限度地利用原始FLIP模擬,包括直接將其用作湍流/急流效果。
模擬湍流的傳統方式是模擬FLIP流體,然後再其之上運行湍流解算器。當然第二步並不總是非要有的,尤其對於飛濺和噴水等快速運動的流體來說。還有一個問題就是在對粒子進行網格化的時候,想讓流體看上去真實一些也很不容易。
建議大家用FLIP 模擬本身,直接加湍流著色器進行渲染,既可以渲染粒子本身,也可以將其光柵格為VDB,進行體積渲染。有時Kevin Pinga會根據鏡頭的實際效果將兩種方法結合到一起使用。使用Houdini海洋工具時自動創建的湍流著色器非常適合光柵化的粒子。
將原始FLIP模擬直接渲為湍流
10. 優化模擬和緩存
高分辨率FLIP 模擬具有的挑戰之一是需要處理生成大量的數據。一種常見的做法是在緩存模擬的任何部分之前刪除不需要的屬性。
另外一個可以減少內存占用的操作是清除相機可視範圍以外的粒子。在Houdini中有很多執行這個操作的方法,大家可以選用自己喜歡的一種。
另外,如果已經準備好了要渲染的幾何圖形,最好將其緩存並啟用Delay Load Geometry checkbox,Mantra不會將幾何圖形嵌入到IFD文件中,而是將其引用到硬盤的文件中。這將有助於減少加載時間,大大減少IFD生成時間和文件大小。如果你有渲染農場而且不想太麻煩的話,這個方法會很好用。
使用 File Cache節點中的Delay Load Geometry複選框可加快高分辨率模擬的工作
好啦,關於Kevin Pinga介紹的10條Houdini FLIP流體模擬技巧我們先介紹到這裏,可能其中會有一些不準確的地方,還請大家多多諒解。
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答這篇文章詳細介紹了如何學習使用UE4進行可視化製作,以及火星時代教育對此方麵培訓的專業性
麵對繁多的移動端UI培訓機構,如何選擇一個適合自己的呢? 本文將為你解答疑問,而火星時代教育,我們敢說是最好的選擇!
基於火星時代教育的高質量課程體驗, 揭示遊戲開發的前瞻性和職業發展前景。
以UE4作為工具來建構智慧城市,能大大提高其實用性和創新性。火星時代教育通過專業的UE4課程培訓來助力學習者掌握UE4建構智慧城市的技巧。
對於很多熱愛製作遊戲特效的朋友來說,擔心的一個問題就是,學習遊戲特效需要多少時間?火星時代教育為您詳細分析和解答。
了解影視原畫設計的基本知識和學習路徑,尤其是在火星時代教育的專業指導下,你將擁有更好的學習體驗。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!