[發(fā)明專利]一種基于GPU八叉樹加速和SPH算法的流體模擬方法在審
| 申請(qǐng)?zhí)枺?/td> | 202211111028.3 | 申請(qǐng)日: | 2022-09-13 |
| 公開(公告)號(hào): | CN115438600A | 公開(公告)日: | 2022-12-06 |
| 發(fā)明(設(shè)計(jì))人: | 趙雅彬;張文輝;史翔天;林鎮(zhèn)源;陳少坤;車向明;丁逸飛 | 申請(qǐng)(專利權(quán))人: | 桂林電子科技大學(xué) |
| 主分類號(hào): | G06F30/28 | 分類號(hào): | G06F30/28;G06T15/00;G06T9/40;G06T17/00;G06T1/20;G06F111/08;G06F113/08 |
| 代理公司: | 桂林市持衡專利商標(biāo)事務(wù)所有限公司 45107 | 代理人: | 陳躍琳 |
| 地址: | 541004 廣西*** | 國省代碼: | 廣西;45 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 gpu 八叉樹 加速 sph 算法 流體 模擬 方法 | ||
1.一種基于GPU八叉樹加速和SPH算法的流體模擬方法,其特征是,包括步驟如下:
步驟S1、初始化DirectX渲染管線;
步驟S2、使用CPU在預(yù)設(shè)范圍內(nèi)隨機(jī)生成水體粒子的坐標(biāo);
步驟S3、在CPU中根據(jù)水體粒子的坐標(biāo)建立線性八叉樹;
步驟S4、在CPU中將水體粒子的坐標(biāo)和線性八叉樹一并傳至GPU;
步驟S5、在GPU中以深度優(yōu)先的順序遍歷線性八叉樹來檢測查詢水體粒子的近鄰水體粒子;
步驟S6、將水體粒子的坐標(biāo)從GPU返回CPU;
步驟S7、在CPU中運(yùn)用渲染方案對(duì)水體粒子進(jìn)行著色。
2.根據(jù)權(quán)利要求1所述的一種基于GPU八叉樹加速和SPH算法的流體模擬方法,其特征是,步驟S2中,隨機(jī)生成的水體粒子的坐標(biāo)的位于預(yù)設(shè)范圍內(nèi)為[-10,10]的立方體內(nèi)。
3.根據(jù)權(quán)利要求1所述的一種基于GPU八叉樹加速和SPH算法的流體模擬方法,其特征是,步驟S3的具體過程如下:
步驟S3.1、基于所有水體粒子的坐標(biāo)計(jì)算出所有水體粒子所形成的包圍盒的中心坐標(biāo),以及該包圍盒的長寬高;
步驟S3.2、新建一個(gè)空的線性八叉樹;定義線性八叉樹的每個(gè)節(jié)點(diǎn)均指向一塊立方體的三維空間,且每個(gè)子節(jié)點(diǎn)是對(duì)父節(jié)點(diǎn)進(jìn)行三維空間細(xì)分所得到;其中對(duì)父節(jié)點(diǎn)進(jìn)行三維空間細(xì)分即以父節(jié)點(diǎn)所指向的三維空間的中心坐標(biāo)為三維坐標(biāo)原點(diǎn),以X軸、Y軸和Z軸為分割線,將父節(jié)點(diǎn)的三維空間均勻分割為8個(gè)大小相等的子三維空間,這些子三維空間即為子節(jié)點(diǎn)所指向的三維空間;采用線性表來存儲(chǔ)線性八叉樹的節(jié)點(diǎn),其中節(jié)點(diǎn)的序號(hào)為當(dāng)前節(jié)點(diǎn)在線性表中的下標(biāo),并且每個(gè)節(jié)點(diǎn)中存放父節(jié)點(diǎn)的序號(hào)和所有子節(jié)點(diǎn)的序號(hào)來實(shí)現(xiàn)返回根節(jié)點(diǎn)和對(duì)子樹的遍歷;
步驟S3.3、向空的八叉樹中插入根節(jié)點(diǎn),根節(jié)點(diǎn)的中心坐標(biāo)和長寬高即為包圍盒的中心坐標(biāo)和長寬高,并標(biāo)注根節(jié)點(diǎn)為不含水體粒子的節(jié)點(diǎn);
步驟S3.4、循環(huán)遍歷每一個(gè)水體粒子,獲取當(dāng)前水體粒子的坐標(biāo),并執(zhí)行如下操作;
步驟S3.4.1、從根節(jié)點(diǎn)開始遍歷線性八叉樹:
若當(dāng)前節(jié)點(diǎn)為線性八叉樹的非葉節(jié)點(diǎn),則根據(jù)當(dāng)前水體粒子的坐標(biāo)和當(dāng)前節(jié)點(diǎn)的中心坐標(biāo)的位置關(guān)系決定當(dāng)前水體粒子應(yīng)放入當(dāng)前節(jié)點(diǎn)的哪一個(gè)子節(jié)點(diǎn),并繼續(xù)執(zhí)行S3.4.1;
若當(dāng)前節(jié)點(diǎn)為線性八叉樹的葉節(jié)點(diǎn),則跳轉(zhuǎn)至步驟S3.4.2;
步驟S3.4.2、判斷當(dāng)前節(jié)點(diǎn)中是否含有水體粒子:
如果當(dāng)前節(jié)點(diǎn)中不含水體粒子,則將當(dāng)前水體粒子的放入當(dāng)前葉子節(jié)點(diǎn);
如果當(dāng)前節(jié)點(diǎn)中含有水體粒子,則把當(dāng)前節(jié)點(diǎn)中的原有水體粒子拿出來,并將當(dāng)前節(jié)點(diǎn)進(jìn)行三維空間細(xì)分;細(xì)分完成后,根據(jù)當(dāng)前節(jié)點(diǎn)中原有水體粒子和葉節(jié)點(diǎn)中心的位置關(guān)系決定原有水體粒子應(yīng)放入當(dāng)前節(jié)點(diǎn)的哪一個(gè)子節(jié)點(diǎn),同時(shí)根據(jù)當(dāng)前水體粒子的坐標(biāo)和當(dāng)前節(jié)點(diǎn)的中心坐標(biāo)的位置關(guān)系決定當(dāng)前水體粒子應(yīng)放入當(dāng)前節(jié)點(diǎn)的哪一個(gè)子節(jié)點(diǎn);若此時(shí)原有水體粒子和當(dāng)前水體粒子仍處于同一子節(jié)點(diǎn)中,則將該子節(jié)點(diǎn)視為當(dāng)前節(jié)點(diǎn),并重復(fù)執(zhí)行步驟S3.4.2;若此時(shí)原有水體粒子和當(dāng)前水體粒子不處于同一子節(jié)點(diǎn)中,則繼續(xù)執(zhí)行3.4。
4.根據(jù)權(quán)利要求1所述的一種基于GPU八叉樹加速和SPH算法的流體模擬方法,其特征是,步驟S4中,在GPU中,水體粒子的坐標(biāo)采用DirectX11框架中的SRV緩沖區(qū)作為輸入,采用DirectX11框架中UAV緩沖區(qū)作為輸出;線性八叉樹采用SRV緩沖區(qū)進(jìn)行存儲(chǔ)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于桂林電子科技大學(xué),未經(jīng)桂林電子科技大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202211111028.3/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 圖形處理器任務(wù)的分配方法和裝置
- 一種資源調(diào)度裝置、資源調(diào)度系統(tǒng)和資源調(diào)度方法
- 一種免工具GPU支架固定裝置
- 一種YARN集群GPU資源調(diào)度方法、裝置和介質(zhì)
- 一種服務(wù)器內(nèi)4GPU布局結(jié)構(gòu)及其安裝方法
- 一種GPU資源調(diào)度系統(tǒng)及其調(diào)度方法
- 一種GPU拓?fù)浞謪^(qū)方法與裝置
- 一種基于Kubernetes的共享GPU調(diào)度方法
- 一種數(shù)據(jù)處理的方法和裝置
- 一種GPU分配方法、系統(tǒng)、存儲(chǔ)介質(zhì)及設(shè)備





