CN117744508A - 一种流体模拟方法、系统和电子装置 - Google Patents
一种流体模拟方法、系统和电子装置 Download PDFInfo
- Publication number
- CN117744508A CN117744508A CN202311518039.8A CN202311518039A CN117744508A CN 117744508 A CN117744508 A CN 117744508A CN 202311518039 A CN202311518039 A CN 202311518039A CN 117744508 A CN117744508 A CN 117744508A
- Authority
- CN
- China
- Prior art keywords
- dimensional
- pressure value
- dimensional matrix
- simplified
- convolution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000012530 fluid Substances 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000004088 simulation Methods 0.000 title claims abstract description 28
- 239000011159 matrix material Substances 0.000 claims abstract description 47
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims description 19
- 230000009466 transformation Effects 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000007788 liquid Substances 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种流体模拟方法、系统和电子装置,其方法包括S1:将雅克比迭代展开成N*N*N的三维大卷积核;S2:对三维大卷积核进行张量分解处理,得到简化二维矩阵;S3:根据简化二维矩阵实时计算压力值;S4:根据压力值修改体素的速度。本发明可以大幅度减少计算量,从而可以将流体模拟应用在各种低计算量的终端设备,大大提高了应用范围,提升了用户体验。
Description
技术领域
本申请涉及计算机图形学领域,特别涉及一种流体模拟方法、系统和电子装置。
背景技术
流体模拟是指结合流体模拟的物理现象,结合计算机算机图形学的方法来模拟液体、烟雾等物理场景,通过算法生成来虚拟呈现气体或液体等流体运动的形态。在目前游戏领域中,尤其是移动游戏,由于硬件的算力限制,流体模拟实现实时模拟的效果比较差。
现有技术的流体模拟算法分为两大类:基于粒子的拉式流体与基于速度场的欧式流体。其中,拉式流体通常可以比较准确地保持流体的不可压特性,非常适合模拟液体,但是其计算方式难以利用GPU的并行架构,所以执行效率通常比较低下。
欧式流体通过将一定空间范围内的流体描述成空间均匀分布的体素,每个体素保存流体的密度与速度信息并互相传播来实现模拟,这种算法充分利用了GPU的并行架构,通常是PC与主机游戏中实现实时流体模拟的首选。
在欧式流体算法中,目前的现有技术实现流体的不可压特性(即体积保持不变),通常是将问题转化为让所有体素的速度总和保持为0,在计算体素的速度时候,现有技术是先求出每个体素与周围体素的速度差异值,然后执行很多次雅可比迭代才能求出压力值,进而再根据压力值修改体素的速度,导致消耗大量的计算资源,并且降低了游戏的运行速度,也影响了用户体验。
发明内容
为解决上述问题,本发明提供一种流体模拟方法,包括:
S1:将雅克比迭代展开成N*N*N的三维大卷积核;
S2:对三维大卷积核进行张量分解处理,得到简化二维矩阵;
S3:根据简化二维矩阵实时计算压力值;
S4:根据压力值修改体素的速度。
进一步地,所述S1步骤包括:
S11:将2*2*2的雅可比迭代多次后,变换合并成N*N*N的大卷积核;
进一步地,所述S1步骤包括:所述的雅可比迭代次数为32次,N取值为63。
进一步地,所述S2步骤包括:
S21:对所述三维大卷积核进行张量分解,得到3个N*4的二维矩阵;
S22:去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
S23:将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
进一步地,所述S3步骤包括:
S31:用所述简化二维矩阵对速度差异值进行若干次连续卷积,得到卷积结果;
S32:将卷积结果的各个值进行相加得到的值作为最终的压力值。
本发明还提供一种流体模拟系统,包括三维大卷积核生成单元以及张量分解单元、压力值计算单元,其中:
三维大卷积核生成单元用以将雅克比迭代展开成N*N*N的三维大卷积核;
张量分解单元用以对三维大卷积核进行张量分解处理,得到简化二维矩阵;
压力值计算单元用以根据简化二维矩阵实时计算压力值。
进一步地,张量分解单元包括分解模块、降维模块以及简化模块,其中:
分解模块用以将所述三维大卷积核分解为3个N*4的二维矩阵;
降维模块用以去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
简化模块用以将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
进一步地,压力值计算单元包括卷积模块以及压力值计算模块,其中:
卷积模块用以根据所述简化二维矩阵对速度差异值进行若干次连续卷积,得到卷积结果;
压力值计算模块用以将卷积结果的各个值进行相加得到的值作为最终的压力值。
本发明还提供一种计算机存储介质,所述计算机存储介质可存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述任一所述的所述的流体模拟方法。
本发明还提供一种电子装置,所述电子装置包括处理器以及存储器,所述存储器用于存储可执行程序,所述处理器用于执行所述可执行程序以实现任一所述的流体模拟方法。
利用本发明公开的方法、系统和电子装置,可以大幅度减少计算量,从而可以将流体模拟应用在各种低计算量的终端设备,大大提高了应用范围,提升了用户体验。
为了对本发明有更清楚全面的了解,下面结合附图,对本发明的具体实施方式进行详细描述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为第一实施例中流体模拟方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请通过将雅可比迭代展开成三维大卷积核,再对三维大卷积核进行张量分解,利用创新的技术方案进行不断进行简化处理,最后得到简化的二维矩阵,并利用该二维矩阵计算压力值,可以大幅度减少计算量,从而可以轻松地将流体模拟应用在各种低计算量的终端设备,大大提高了应用范围,提升了用户体验。
请参阅图1示出了第一实施例中流体模拟方法的流程示意图,本实施例的技术方案为:
S1:将雅克比迭代展开成N*N*N的三维大卷积核;
S2:对三维大卷积核进行张量分解处理,得到简化二维矩阵;
S3:根据简化二维矩阵实时计算压力值;
S4:根据压力值修改体素的速度。
现结合图1所示的流程图对各步骤作具体说明。
S1:将雅克比迭代展开成N*N*N的三维大卷积核;
在流体模拟中,欧式流体方法是通过将一定空间范围内的流体描述成空间均匀分布的体素(Voxel)个体构成的体素网格,该体素网格是用固定大小的立方块作为最小单元,来表示三维物体的一种数据结构,体素类似一个个粗略版的点云。
现有技术的雅可比迭代方法,其具体的技术方案是对每个体素的divergence(速度差异值)不断执行一个较小的卷积,从而可以得到该体素周围大范围内的总体速度差异,并以此修改速度。
由于雅可比迭代消耗的计算成本非常高,本申请实施例基于雅可比迭代进行改进,本申请根据其计算方法,将多次雅可比迭代的操作进行展开,这样就能得到一个N*N*N的三维大卷积核。
作为具体的实施方式,其方法为步骤S11:将多次2*2*2的雅可比迭代变换合并成一个N*N*N的大卷积核,其运算可以与用一个63*63*63的大卷积核做一次迭代等价。而该卷积核的值等于对常数1执行32次雅可比迭代,经过迭代扩散后得到的三维矩阵。当然作为变化实施例,可以将2*2*2的雅可比迭代换成其他值进行迭代,比如3*3*3或者其他值。
作为一种优选的实施方式,虚拟一个速度差异值设置为1的体素,在第0次卷积时,设置的卷积核尺寸为1。然后对该虚拟体素进行多次雅克比迭代,得到三维大卷积核。
进行32次迭代得到的最终卷积核尺寸大小为(32-1)*2+1=63,即本实施例的N*N*N的三维大卷积核则为63*63*63的三维大卷积核。
S2:对三维大卷积核进行张量分解处理,得到简化二维矩阵;
本申请对三维大卷积核进行张量分解处理,张量分解相当于对三维大卷积核做近似计算,从而可以降低计算量。比如一个应用如图像的高斯模糊算法,可以把一个n*n的高斯模糊卷积核分成横竖两个pass的长度为n的1维卷积,这样就用2*n次采样代替了n*n次采样,如此则大大减少了计算量。
对于一个张量是否能够分解为几个1维向量的连续卷积,并且还能保持该计算精度,由原始张量的值来决定的。对于2D流体而言,2D张量可以分解为两个1维向量而保持精度,但对于3D张量在分解为3个1维向量后,其卷积结果与原始结果的误差非常大,甚至不可接受了。
因此,本申请提出了一种优选的实施方式,具体方案如下:
S21:将所述三维大卷积核分解为3个N*4的二维矩阵,在本实施例中,N取值为63,本实施例即将3D张量分解为了3个63*4的二维矩阵。
S22:去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
对于3个63*4的二维矩阵,计算量还非常大,本申请还进一步进行优化。在得到3个63*4矩阵之后,基于本申请的方案分解出来的矩阵是左右对称的。由于是左右对称,还可以去掉左半边,如此则进一步简化得到3个32*4。
S23:将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
对于本申请实施例,经对上述的优化改进后,可以得到矩阵右侧的值很快会缩小到接近0的极小值,因此我们可以忽略很小的项,最后只需要取出前7项值,最后就得到了3个7*4的矩阵。
S3:根据简化二维矩阵实时计算压力值;
通常在得到简化二维矩阵后,计算量已经得到了大大的简化了,可以使用各种现有的方法来计算压力值了,比如压力解法、压力修正法或者投影等方法,本申请提出了一种改进的方法,其方法为:
S31:使用所述简化二维矩阵对速度差异值进行三次连续卷积,得到卷积结果;
本申请以3个7*4的简化二维矩阵,对速度差异值进行三次连续卷积。
S32:将卷积结果的各个值进行相加得到的值作为最终的压力值。
在本实施例中,简化二维矩阵的高度是4,因此卷积的结果是4个值,将这4个值相加即可得到最终的压力值。
S4:根据压力值修改体素的速度。
在得到最终的压力值后,可以根据该压力值修改体素的速度,如此方法,可以计算整个体素网格中流体的速度。
基于上述方法实施例,本申请还提供一种流体模拟系统,包括三维大卷积核生成单元以及张量分解单元、压力值计算单元,其中:
三维大卷积核生成单元用以将雅克比迭代展开成N*N*N的三维大卷积核;
张量分解单元用以对三维大卷积核进行张量分解处理,得到简化二维矩阵;
压力值计算单元用以根据简化二维矩阵实时计算压力值。
张量分解单元包括分解模块、降维模块以及简化模块,其中:
分解模块用以将所述三维大卷积核分解为3个N*4的二维矩阵;
降维模块用以去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
简化模块用以将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
压力值计算单元包括卷积模块以及压力值计算模块,其中:
卷积模块用以根据所述简化二维矩阵对速度差异值进行三次连续卷积,得到卷积结果;
压力值计算模块用以将卷积结果的各个值进行相加得到的值作为最终的压力值。
本申请还提供一种计算机存储介质,所述计算机存储介质可存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述任一实施例所述的流体模拟方法。
本申请还提供一种电子装置,所述电子装置包括处理器以及存储器,所述存储器用于存储可执行程序,所述处理器用于执行所述可执行程序以实现上述流体模拟方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种流体模拟方法,其特征在于,包括:
S1:将雅克比迭代展开成N*N*N的三维大卷积核;
S2:对三维大卷积核进行张量分解处理,得到简化二维矩阵;
S3:根据简化二维矩阵实时计算压力值;
S4:根据压力值修改体素的速度。
2.如权利要求1中所述的方法,其特征在于,所述S1步骤包括:
S11:将2*2*2的雅可比迭代多次后,变换合并成N*N*N的大卷积核。
3.如权利要求1或2中所述的方法,其特征在于,所述S1步骤包括:所述的雅可比迭代次数为32次,N取值为63。
4.如权利要求1中所述的方法,其特征在于,所述S2步骤包括:
S21:对所述三维大卷积核进行张量分解,得到3个N*4的二维矩阵;
S22:去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
S23:将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
5.如权利要求1中所述的方法,其特征在于,所述S3步骤包括:
S31:用所述简化二维矩阵对速度差异值进行若干次连续卷积,得到卷积结果;
S32:将卷积结果的各个值进行相加得到的值作为最终的压力值。
6.一种流体模拟系统,其特征在于,包括三维大卷积核生成单元以及张量分解单元、压力值计算单元,其中:
三维大卷积核生成单元用以将雅克比迭代展开成N*N*N的三维大卷积核;
张量分解单元用以对三维大卷积核进行张量分解处理,得到简化二维矩阵;
压力值计算单元用以根据简化二维矩阵实时计算压力值。
7.如权利要求6所述的流体模拟系统,其特征在于,张量分解单元包括分解模块、降维模块以及简化模块,其中:
分解模块用以将所述三维大卷积核分解为3个N*4的二维矩阵;
降维模块用以去掉所述二维矩阵的左半边,得到N/2*4的二维矩阵;
简化模块用以将右侧接近0的极小值的项删除,得到比N/2*4更小的简化二维矩阵。
8.如权利要求6所述的流体模拟系统,其特征在于,压力值计算单元包括卷积模块以及压力值计算模块,其中:
卷积模块用以根据所述简化二维矩阵对速度差异值进行若干次连续卷积,得到卷积结果;
压力值计算模块用以将卷积结果的各个值进行相加得到的值作为最终的压力值。
9.一种计算机存储介质,其特征在于,所述计算机存储介质可存储有可执行程序,当所述可执行程序在计算机上运行时,所述计算机执行上述权利要求1-5任一所述的所述的流体模拟方法。
10.一种电子装置,其特征在于,所述电子装置包括处理器以及存储器,所述存储器用于存储可执行程序,所述处理器用于执行所述可执行程序以实现权利要求1-5任一所述的流体模拟方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311518039.8A CN117744508A (zh) | 2023-11-15 | 2023-11-15 | 一种流体模拟方法、系统和电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311518039.8A CN117744508A (zh) | 2023-11-15 | 2023-11-15 | 一种流体模拟方法、系统和电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117744508A true CN117744508A (zh) | 2024-03-22 |
Family
ID=90281992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311518039.8A Pending CN117744508A (zh) | 2023-11-15 | 2023-11-15 | 一种流体模拟方法、系统和电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117744508A (zh) |
-
2023
- 2023-11-15 CN CN202311518039.8A patent/CN117744508A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8803887B2 (en) | Computer graphic system and method for simulating hair | |
Sawhney et al. | Monte Carlo geometry processing: A grid-free approach to PDE-based methods on volumetric domains | |
WO2018180263A1 (ja) | 情報処理装置、情報処理方法、及びコンピュータ可読記憶媒体 | |
Xiao et al. | Efficient mean‐shift clustering using gaussian kd‐tree | |
JP2018129036A (ja) | 画像の補完 | |
Stachniak et al. | An algorithm for automated fractal terrain deformation | |
Koschier et al. | Hierarchical hp-adaptive signed distance fields. | |
US11030363B2 (en) | Physics engine with permissive rigid body penetration | |
US11403807B2 (en) | Learning hybrid (surface-based and volume-based) shape representation | |
Zhou et al. | Implicit integration for particle‐based simulation of elasto‐plastic solids | |
US8199148B2 (en) | System and method for surfacing of particle systems | |
Mlakar et al. | Subdivision‐specialized linear algebra kernels for static and dynamic mesh connectivity on the gpu | |
Yang et al. | Learning to generate 3d training data through hybrid gradient | |
Dey et al. | Procedural feature generation for volumetric terrains using voxel grammars | |
Li et al. | Interactive cutting and tearing in projective dynamics with progressive cholesky updates | |
Wang et al. | Efficient extracting surfaces approach employing anisotropic kernels for SPH fluids | |
CN117744508A (zh) | 一种流体模拟方法、系统和电子装置 | |
CN110084872B (zh) | 一种数据驱动的烟雾动画合成方法及系统 | |
Baek et al. | Lattice-based high-dimensional gaussian filtering and the permutohedral lattice | |
Aldrich et al. | Collision-Driven Volumetric Deformation on the GPU. | |
Zhao et al. | Using interactive particle-based rendering to visualize a large-scale time-varying unstructured volume with mixed cell types | |
Pujol et al. | Rendering piecewise approximations of SDFs through analytic intersections | |
WILLCOCKS | Sparse volumetric deformation | |
WO2020149919A1 (en) | Inertial damping for enhanced simulation of elastic bodies | |
Ji et al. | Towards automatic feature extraction and sample generation of grain structure by variational autoencoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |