前面我們對XPFluidPBD的參數進行了詳細的分享,并且制作了一個粘稠流體澆築的案例:
其實使用xpFluidPBD制作粘稠液體基本就是這個套路了,今天我們要分享的同樣是粘稠液體。
所以我這裡再次把上篇文章對xpFluidPBD參數的總結貼出來,所有的參數我們都是基于上一篇文章的分享來調整:
當然今天要制作的不是流體澆築的效果,我想要制作類似糖漿的液體能夠在對象上産生殘留,并且進行顔色的混合。
好了,廢話不多說,今天就讓我們來制作糖漿顔色混合的效果吧!
01
場景準備
首先打開C4D,導入我們反複使用過的一個骷髅頭模型:
同樣新建一個立方體,對比着适當的放大一下骷髅模型的尺寸:
再新建一個立方體用于流體碰撞:
将立方體C掉,删掉上方的面,我們流體要用對象的上方發射下來:
然後同時選中兩個對象給他們添加XP的碰撞标簽:
兩個碰撞标簽我都把反彈關掉了,因為我希望流體能夠在對象上有殘留,所以摩擦力我都給到了最大,立方體的碰撞模式為内部:
幀速率改為25,做10秒的動畫:
新建一個球形發射器,适當的調整尺寸以及高度:
發射的模式改為射擊,讓它持續發射200幀吧,然後勾選無交叉,這個上篇文章裡我們提到過。
無交叉半徑設置為1就好,發射器的速度改為0,半徑為2:
另外我把粒子額外數據裡的摩擦力也改到了最大:
新建一個重力場,參數默認,點擊播放粒子就會自然下落:
将發射器多複制幾個,參數都是一樣的,隻是擺放在不同的位置,改改發射器以及粒子的顔色,為了方便觀察,我們可以暫時将粒子的數量減少:
将發射器打個組,然後給組上添加灰猩猩的的Signal插件,讓它每50幀完成一次X軸0到210度的旋轉,然後循環模式改為pingpong,當然你也可以手K哈:
接下來新建一個圓環樣條,半徑稍微小一點,高度和發射器保持一緻:
将發射器的組再次打組,然後在這個組上鼠标右鍵添加對齊曲線标簽,把圓環樣條拖進去:
在位置參數上K幀,讓它一開始是0,然後200幀的時候為100,這樣發射器的整體就會随着圓環旋轉,同樣這裡你自己K幀也可以哈:
02
流體模拟
基本這樣準備工作就做好了,開始模拟流體吧,新建xpFluidPBD,播放一下,你會發現粒子炸開了:
這個就是由于粒子剛開始發射的時候擠壓在了一起的原因導緻的,所以我們粘稠流體澆築的案例提到了要勾選檢查密度。
然後密度我這裡設置為100,這樣密度高于100的粒子就會被殺死掉,也就不會有粒子炸開的情況了:
接下來關掉渦度和吸引力,排斥力給到100,粘度給到50,這個我們上篇文章已經分享過了,都是套路哈:
同樣我們之前有提到過外部壓力這個參數在制作粘稠液體的時候很重要,并且需要搭配阻尼的參數來使用。
這裡我直接把外部壓力設置為50W,然後為了防止不穩定我把阻尼提高到了20W:
現在粒子有斷層的現象,需要提高子幀步幅來解決,但是提高子幀步幅以後會比較卡,所以我們後面再來解決這個問題。
由于我們需要制作顔色混合的效果,所以這裡有一個混合的數值可以适當提高一點,這樣粒子顔色就會有一定的混合:
然後現在我想要進一步增加流體在對象表面粘滞的感覺,這裡有一個比較冷門一點的方法,我先暫時關掉其他發射器。
隻留下一個發射器,大家可以注意一下,在碰撞标簽以及粒子額外數據裡的摩擦力都是100的時候,180幀的流體形态:
碰撞标簽、粒子額外數據摩擦力為100
由于我們使用的xpFluidPBD,它的原理是通過對影響粒子之間的位置。
所以我們可以這麼操作一下,再次新建一個發射器,以碰撞的對象骷髅頭為對象發射,通過多邊形的中心來發射。
并且勾選粘住發射源問題,以及每個源隻發射一個粒子:
然後發射模式改為射擊,發射兩幀就好,這裡粒子數量的參數設置是沒有的,粒子的數量由對象的多邊形數量決定。
速度改為0,流體模拟中盡量保證所有的粒子半徑是一緻的,所以我這裡也設置為2:
可以看一下同樣是180幀流體的殘留形态,我個人感覺這樣會更加好看一些:
使用對象表面發射粒子産生粘滞
對象表面發射的粒子數量越多,粘滞的感覺會更加明顯,所以可以把模型複制出來一份,添加一個細分曲面,細分數1就可以了:
然後将細分曲面後的對象鍊接加删除成為一個對象,把碰撞标簽重新丢給它,發射器中發射的對象替換成細分以後的對象,粘滞的感覺又更明顯了:
使用細分曲面後 對象表面發射粒子産生粘滞
有個小問題是由于我們xpFluidPBD中的混合給了參數,導緻表面發射的粒子顔色也會進行混合。
因此我這裡将表面粒子的顔色改為了一個灰色,這樣混合顔色的影響要稍微小一些:
另外還有一點需要注意的是,使用這種方法以後,從高處下落的粒子其實是沒有和對象産生碰撞的。
我這裡把粒子的顯示模式改一下大家就能發現,其實是粒子與粒子之間在碰撞,這就意味着其實碰撞标簽沒有起到作用:
所以如果你想碰撞标簽的設置也産生作用,可以适當的增加這個碰撞的擴展的參數:
對象表面發射粒子結合碰撞标簽、粒子額外數據摩擦力為100
同時你還可以啟用碰撞标簽裡的約束,讓粒子發射碰撞的時候産生約束進一步增加對象表面殘留的物體。
不過使用約束以後,模拟起來會更慢一些,并且你會發現有一些粒子會出現不穩定的情況:
這個就需要我們增加項目的子幀步幅來解決這個問題了,沒關系,本來我們模拟粘稠液體也是需要增加這個參數的。
項目設置裡,我把子幀步幅設置為了6,然後叠代次數我降低為1,這樣流體會相對松散一點,但是會略微提高一下模拟的速度:
同樣的回到xpFluidPBD裡,可以手動再次增加子幀步幅以增加流體的粘稠度。
叠代我同樣改的比較小,一方面不需要流體那麼厚,并且也可以增加一點模拟的速度,然後壓力限制同樣給到1,讓它能保持一定的體積:
另外我再次增加了粒子的發射數量,并且為了進一步防止粒子炸開的現象,我将無交叉的半徑增加到了2:
基本上差不多就可以先緩存粒子了,緩存時間接近50分鐘,還可以:
03
粒子網格化
接下來就是将粒子網格化了,新建xpOpenVDBMesher,把除了對象表面發射以後的發射器都拖進去,适當的調整點的大小以及體素尺寸:
視情況可以添加兩個網格裡的濾鏡:
因為我們要制作顔色混合的效果,所以還需要在标簽裡激活頂點顔色标簽,然後平滑的數值可以适當的給一點,點擊标簽可以看到混合的顔色:
然後再次點擊緩存繼續,将網格單獨緩存:
緩存完畢以後再添加一個平滑變形器:
然後添加置換變形器,着色器裡加載顔色,高度為負值收縮一下:
最後再鼠标中間選中所有對象,烘焙為ABC文件,至于為什麼直接緩存到網格裡,上一篇文章已經說過了,這裡就不重複了哈:
04
渲染部分
接下來基本上就進入渲染部分了,設置渲染尺寸,新建攝像機固定視角這些都不用說哈:
我先新建了兩個環境光,一張給了貼圖,一張是一個純色的着色,然後都隐藏了顯示并且勾選了透明通道:
材質方面其實特别簡單,首先是使用RS默認的薄玻璃預設:
然後新建一個頂點屬性節點,把網格生成的頂點顔色标簽拖進去,并且把它連接給漫射顔色以及傳輸顔色的端口:
剩下的參數就自己憑感覺調整一下了:
新建一個大大的曲面作為背景:
背景的材質就是一個普通的反射材質:
視情況補幾盞燈吧,并且把平面排除一下,目的隻是為了照亮主體,然後開啟一下GI:
渲染設置方面主采樣128,其他本地采樣都是512:
渲染時間差不多13個小時的樣子:
最後後期調整一下看看效果吧:
感覺應該再增加點子幀步幅或者叠代一類的,粘稠度更高一點好看一些,下面是今天的視頻版:
視頻版稍後單獨發送
好啦,今天的分享就到這裡,想要源文件以及原視頻的鹿友撩我獲取吧!
更多内容歡迎關注公衆号:
本文由“野鹿志”發布
轉載前請聯系馬鹿野郎
私轉必究
,