本技術(shù)涉及流體模擬領(lǐng)域,尤其涉及一種基于色彩通道的2d平臺流體模擬方法和裝置。
背景技術(shù):
1、在現(xiàn)代圖形處理和物理仿真領(lǐng)域,流體的渲染和模擬是一個(gè)復(fù)雜而關(guān)鍵的任務(wù)。尤其是在計(jì)算機(jī)游戲、虛擬現(xiàn)實(shí)、動畫制作以及工程仿真等應(yīng)用場景中,流體效果的逼真度和計(jì)算效率對用戶體驗(yàn)和系統(tǒng)性能都有著重要影響。
2、目前流體的渲染的常規(guī)手段分為兩種:限制流動性的繪制,通過紋理色彩渲染的偽流體;利用足夠多的小方形碰撞體模擬水流。對于第一種方法,由于使用預(yù)先設(shè)定的紋理或通過簡單的數(shù)學(xué)函數(shù)生成流體效果,因此存在液體無法真實(shí)流動的弊端;而對于第二種方法,雖然可以通過不斷增加小方形碰撞體的數(shù)量以提升模擬水流的真實(shí)性,但當(dāng)小方形碰撞體的數(shù)量較多時(shí),則對計(jì)算機(jī)系統(tǒng)資源的消耗過大。
3、因此,亟需一種基于色彩通道的2d平臺流體模擬方法和裝置,以在真實(shí)模擬液體流動的情況下,提升流體的繪制能力和繪制效率。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種基于色彩通道的2d平臺流體模擬方法和裝置,解決了在真實(shí)模擬液體流動的情況下,流體的繪制能力和繪制效率較低的問題。
2、在本技術(shù)的第一方面提供了一種基于色彩通道的2d平臺流體模擬方法,方法包括:獲取待渲染流體對應(yīng)的網(wǎng)格大小和視圖空間矩陣大小,網(wǎng)格大小和視圖空間矩陣大小根據(jù)待渲染流體所在的空間區(qū)域進(jìn)行確定;根據(jù)網(wǎng)格大小以及視圖空間矩陣大小,構(gòu)建待渲染流體對應(yīng)的視圖空間矩陣;按照預(yù)設(shè)順序遍歷視圖空間矩陣,以獲取視圖空間矩陣中每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài);根據(jù)視圖空間矩陣和每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài),構(gòu)建待渲染流體對應(yīng)的液體狀態(tài)采樣圖,液體狀態(tài)采樣圖通過argb通道存儲每個(gè)網(wǎng)格對應(yīng)的液體信息,其中,a通道用于存儲液體信息中的自身水量信息,r通道存儲液體信息中的左側(cè)水量信息,g通道存儲液體信息中的右側(cè)水量信息,b通道存儲液體信息中的底層水量信息;根據(jù)液體狀態(tài)采樣圖和每個(gè)網(wǎng)格分別對應(yīng)的argb通道,獲取待渲染流體對應(yīng)的繪制狀態(tài);根據(jù)繪制狀態(tài),確認(rèn)待渲染流體對應(yīng)的繪制方式,并根據(jù)繪制方式,對待渲染流體的進(jìn)行繪制操作。
3、可選地,在根據(jù)網(wǎng)格大小以及視圖空間矩陣大小,構(gòu)建待渲染流體對應(yīng)的視圖空間矩陣之前,方法還包括:根據(jù)如下公式判斷視圖空間矩陣是否存在剩余空間:
4、
5、其中,i為視圖空間矩陣的行數(shù),j為視圖空間矩陣的列數(shù),c為網(wǎng)格大小,gw為視圖空間矩陣的高度,gh為視圖空間矩陣的寬度;若根據(jù)上述公式計(jì)算得出i不為整數(shù),則確認(rèn)視圖空間矩陣存在剩余空間,且根據(jù)計(jì)算結(jié)果增加視圖空間矩陣的行數(shù);若根據(jù)上述公式計(jì)算得出j不為整數(shù),則確認(rèn)視圖空間矩陣存在剩余空間,且根據(jù)計(jì)算結(jié)果增加視圖空間矩陣的列數(shù)。
6、可選地,網(wǎng)格狀態(tài)包括實(shí)體狀態(tài)和流動狀態(tài),在按照預(yù)設(shè)順序遍歷視圖空間矩陣,以獲取視圖空間矩陣中每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài)之后,方法還包括:若確認(rèn)出網(wǎng)格狀態(tài)為流動狀態(tài),判斷流動狀態(tài)是否滿足第一判斷條件;若確認(rèn)出流動狀態(tài)滿足第一判斷條件,則流動狀態(tài)對應(yīng)的具體流動狀態(tài)為液體向下流動狀態(tài),第一判斷條件為:目標(biāo)網(wǎng)格對應(yīng)的自身水量信息大于目標(biāo)網(wǎng)格對應(yīng)的底層水量信息,目標(biāo)網(wǎng)格為視圖空間矩陣中實(shí)施流動狀態(tài)對應(yīng)的任意一個(gè)網(wǎng)格;若確認(rèn)出流動狀態(tài)滿足第二判斷條件,則流動狀態(tài)對應(yīng)的具體流動狀態(tài)為液體左右流動狀態(tài),第二判斷條件為目標(biāo)網(wǎng)格的下方網(wǎng)格對應(yīng)的流動狀態(tài)為實(shí)體狀態(tài),或目標(biāo)網(wǎng)格對應(yīng)的底層水量信息為最大值255;且滿足目標(biāo)網(wǎng)格對應(yīng)的左側(cè)水量信息小于目標(biāo)網(wǎng)格對應(yīng)的自身水量信息,或目標(biāo)網(wǎng)格對應(yīng)的右側(cè)水量信息小于目標(biāo)網(wǎng)格對應(yīng)的自身水量信息;若不滿足第一判斷條件,且不滿足第二判斷條件,則確認(rèn)流動狀態(tài)對應(yīng)的具體流動狀態(tài)為液體靜止?fàn)顟B(tài)。
7、可選地,根據(jù)視圖空間矩陣和每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài),構(gòu)建待渲染流體對應(yīng)的液體狀態(tài)采樣圖,具體包括:
8、根據(jù)如下公式構(gòu)建每個(gè)網(wǎng)格中分別對應(yīng)的液體信息:
9、si,j=vector4(c.r,c.g,c.b,c.a);
10、在上述公式中
11、其中,si,j為液體狀態(tài)采樣圖中i行j列個(gè)網(wǎng)格對應(yīng)的單位像素,vector4(c.r,c.g,c.b,c.a)為單位像素對應(yīng)的argb通道,c.a為a通道,c.r為r通道,c.g為g通道,c.b為b通道,li,j為單位像素對應(yīng)的自身水量信息,li,j-1為單位像素對應(yīng)的左側(cè)水量信息,li,j+1為單位像素對應(yīng)的右側(cè)水量信息,li+1,j為單位像素對應(yīng)的底層水量信息,lmax為每個(gè)網(wǎng)格對應(yīng)的液體信息最大值。
12、可選地,根據(jù)液體狀態(tài)采樣圖和每個(gè)網(wǎng)格分別對應(yīng)的argb通道,獲取待渲染流體對應(yīng)的繪制狀態(tài),具體包括:通過如下公式獲取每個(gè)網(wǎng)格分別對應(yīng)的各通道值:
13、
14、其中,l、l1、lr、lb分別為每個(gè)網(wǎng)格分別對應(yīng)的各通道值;根據(jù)每個(gè)網(wǎng)格分別對應(yīng)的各通道值,根據(jù)如下公式確定每個(gè)網(wǎng)格分別對應(yīng)的不同繪制狀態(tài)值:
15、
16、其中,empty、flowting、idle、wawe為每個(gè)網(wǎng)格分別對應(yīng)的不同繪制狀態(tài)值;根據(jù)每個(gè)網(wǎng)格分別對應(yīng)的繪制狀態(tài)值,確認(rèn)每個(gè)網(wǎng)格分別對應(yīng)的繪制狀態(tài),以確認(rèn)待渲染流體對應(yīng)的繪制狀態(tài),其中,當(dāng)繪制狀態(tài)值為empty時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制狀態(tài)為空狀態(tài);當(dāng)繪制狀態(tài)值為flowting時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制狀態(tài)為懸浮狀態(tài),當(dāng)繪制狀態(tài)值為idle時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制狀態(tài)為最大值狀態(tài),當(dāng)繪制狀態(tài)值為wawe時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制狀態(tài)為平面流動狀態(tài)。
17、可選地,根據(jù)繪制狀態(tài),確認(rèn)待渲染流體對應(yīng)的繪制方式,具體包括:根據(jù)每個(gè)網(wǎng)格分別對應(yīng)的繪制狀態(tài),確認(rèn)每個(gè)網(wǎng)格分別對應(yīng)的繪制方式,以確認(rèn)待渲染流體對應(yīng)的繪制方式,其中,當(dāng)繪制狀態(tài)為空狀態(tài)時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制方式為停止繪制;當(dāng)繪制狀態(tài)為懸浮狀態(tài)時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制方式為繪制單個(gè)網(wǎng)格大小對應(yīng)的方塊液體紋理;當(dāng)繪制狀態(tài)為最大值狀態(tài)時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制方式為繪制下落流體粒子圖片;當(dāng)繪制狀態(tài)為平面流動狀態(tài)時(shí),單個(gè)網(wǎng)格對應(yīng)的繪制方式為使用雙波動插值繪制液體表面流動效果。
18、可選地,使用雙波動插值繪制液體表面流動效果,具體包括:根據(jù)如下公式,使用雙波動插值繪制液體表面流動效果:
19、
20、其中,interceptor1和interceptor2為浮點(diǎn)數(shù),uv為二維坐標(biāo)向量,其中,uv.x為水平坐標(biāo)向量,time.x為向前推移的時(shí)間變量,lineh為液體表面的基準(zhǔn)線高度,lineh通過l和lr計(jì)算得到,flowline為液體表面流動效果。
21、在本技術(shù)的第二方面提供了一種基于色彩通道的2d平臺流體模擬裝置,裝置包括視圖空間矩陣構(gòu)建模塊、液體狀態(tài)采樣圖構(gòu)建模塊以及流體渲染繪制模塊,其中,
22、視圖空間矩陣構(gòu)建模塊,用于獲取待渲染流體對應(yīng)的網(wǎng)格大小和視圖空間矩陣大小,所述網(wǎng)格大小和所述視圖空間矩陣大小根據(jù)所述待渲染流體所在的空間區(qū)域進(jìn)行確定;根據(jù)所述網(wǎng)格大小以及視圖空間矩陣大小,構(gòu)建所述待渲染流體對應(yīng)的視圖空間矩陣。
23、液體狀態(tài)采樣圖構(gòu)建模塊,用于按照預(yù)設(shè)順序遍歷所述視圖空間矩陣,以獲取所述視圖空間矩陣中每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài);根據(jù)所述視圖空間矩陣和每個(gè)所述網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài),構(gòu)建所述待渲染流體對應(yīng)的液體狀態(tài)采樣圖,所述液體狀態(tài)采樣圖通過argb通道存儲每個(gè)所述網(wǎng)格對應(yīng)的液體信息,其中,a通道用于存儲所述液體信息中的自身水量信息,r通道存儲所述液體信息中的左側(cè)水量信息,g通道存儲所述液體信息中的右側(cè)水量信息,b通道存儲所述液體信息中的底層水量信息。
24、流體渲染繪制模塊用于根據(jù)所述液體狀態(tài)采樣圖和每個(gè)所述網(wǎng)格分別對應(yīng)的所述argb通道,獲取所述待渲染流體對應(yīng)的繪制狀態(tài);根據(jù)所述繪制狀態(tài),確認(rèn)所述待渲染流體對應(yīng)的繪制方式,并根據(jù)所述繪制方式,對所述待渲染流體的進(jìn)行繪制操作。
25、在本技術(shù)的第三方面提供了一種電子設(shè)備,包括處理器、存儲器、用戶接口及網(wǎng)絡(luò)接口,存儲器用于存儲指令,用戶接口和網(wǎng)絡(luò)接口用于給其他設(shè)備通信,處理器用于執(zhí)行存儲器中存儲的指令,以使電子設(shè)備執(zhí)行如上述任意一項(xiàng)的方法。
26、在本技術(shù)的第四方面提供了一種計(jì)算機(jī)可讀存儲介質(zhì),計(jì)算機(jī)可讀存儲介質(zhì)存儲有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行如上述任意一項(xiàng)的方法。
27、本技術(shù)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
28、1、本技術(shù)通過將待渲染流體所在世界區(qū)間網(wǎng)格化,并構(gòu)建待渲染流體對應(yīng)的視圖空間矩陣,按照預(yù)設(shè)順序遍歷所述視圖空間矩陣,以獲取所述視圖空間矩陣中每個(gè)網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài),從而根據(jù)所述視圖空間矩陣和每個(gè)所述網(wǎng)格對應(yīng)的網(wǎng)格狀態(tài),構(gòu)建所述待渲染流體對應(yīng)的液體狀態(tài)采樣圖,液體狀態(tài)采樣圖通過argb通道存儲每個(gè)所述網(wǎng)格對應(yīng)的液體信息,進(jìn)而可以只通過一次采樣,便可根據(jù)每個(gè)網(wǎng)格對應(yīng)的argb通道確定其繪制狀態(tài),確認(rèn)所述待渲染流體對應(yīng)的繪制方式,并根據(jù)所述繪制方式,對所述待渲染流體的進(jìn)行繪制操作,從而減少了采樣次數(shù),在真實(shí)模擬液體流動的情況下,大大提升了待渲染流體的繪制效率。
29、2、通過獲取每個(gè)網(wǎng)格對應(yīng)的流動狀態(tài),流動狀態(tài)包括液體向下流動狀態(tài)、液體左右流動狀態(tài)以及靜止?fàn)顟B(tài),可以針對不同的流動狀態(tài)進(jìn)行精細(xì)化的渲染處理,從而流體模擬能夠更精確地反映真實(shí)世界中液體的流動特性,以使得最終的模擬效果更加逼真。
30、3、當(dāng)繪制狀態(tài)為平面流動狀態(tài)時(shí),通過使用雙波動插值繪制液體表面流動效果,使得待渲染流體表面看起來更加真實(shí)和動態(tài)。