本技术涉及流体模拟领域,尤其涉及一种基于色彩通道的2d平台流体模拟方法和装置。
背景技术:
1、在现代图形处理和物理仿真领域,流体的渲染和模拟是一个复杂而关键的任务。尤其是在计算机游戏、虚拟现实、动画制作以及工程仿真等应用场景中,流体效果的逼真度和计算效率对用户体验和系统性能都有着重要影响。
2、目前流体的渲染的常规手段分为两种:限制流动性的绘制,通过纹理色彩渲染的伪流体;利用足够多的小方形碰撞体模拟水流。对于第一种方法,由于使用预先设定的纹理或通过简单的数学函数生成流体效果,因此存在液体无法真实流动的弊端;而对于第二种方法,虽然可以通过不断增加小方形碰撞体的数量以提升模拟水流的真实性,但当小方形碰撞体的数量较多时,则对计算机系统资源的消耗过大。
3、因此,亟需一种基于色彩通道的2d平台流体模拟方法和装置,以在真实模拟液体流动的情况下,提升流体的绘制能力和绘制效率。
技术实现思路
1、本技术提供一种基于色彩通道的2d平台流体模拟方法和装置,解决了在真实模拟液体流动的情况下,流体的绘制能力和绘制效率较低的问题。
2、在本技术的第一方面提供了一种基于色彩通道的2d平台流体模拟方法,方法包括:获取待渲染流体对应的网格大小和视图空间矩阵大小,网格大小和视图空间矩阵大小根据待渲染流体所在的空间区域进行确定;根据网格大小以及视图空间矩阵大小,构建待渲染流体对应的视图空间矩阵;按照预设顺序遍历视图空间矩阵,以获取视图空间矩阵中每个网格对应的网格状态;根据视图空间矩阵和每个网格对应的网格状态,构建待渲染流体对应的液体状态采样图,液体状态采样图通过argb通道存储每个网格对应的液体信息,其中,a通道用于存储液体信息中的自身水量信息,r通道存储液体信息中的左侧水量信息,g通道存储液体信息中的右侧水量信息,b通道存储液体信息中的底层水量信息;根据液体状态采样图和每个网格分别对应的argb通道,获取待渲染流体对应的绘制状态;根据绘制状态,确认待渲染流体对应的绘制方式,并根据绘制方式,对待渲染流体的进行绘制操作。
3、可选地,在根据网格大小以及视图空间矩阵大小,构建待渲染流体对应的视图空间矩阵之前,方法还包括:根据如下公式判断视图空间矩阵是否存在剩余空间:
4、
5、其中,i为视图空间矩阵的行数,j为视图空间矩阵的列数,c为网格大小,gw为视图空间矩阵的高度,gh为视图空间矩阵的宽度;若根据上述公式计算得出i不为整数,则确认视图空间矩阵存在剩余空间,且根据计算结果增加视图空间矩阵的行数;若根据上述公式计算得出j不为整数,则确认视图空间矩阵存在剩余空间,且根据计算结果增加视图空间矩阵的列数。
6、可选地,网格状态包括实体状态和流动状态,在按照预设顺序遍历视图空间矩阵,以获取视图空间矩阵中每个网格对应的网格状态之后,方法还包括:若确认出网格状态为流动状态,判断流动状态是否满足第一判断条件;若确认出流动状态满足第一判断条件,则流动状态对应的具体流动状态为液体向下流动状态,第一判断条件为:目标网格对应的自身水量信息大于目标网格对应的底层水量信息,目标网格为视图空间矩阵中实施流动状态对应的任意一个网格;若确认出流动状态满足第二判断条件,则流动状态对应的具体流动状态为液体左右流动状态,第二判断条件为目标网格的下方网格对应的流动状态为实体状态,或目标网格对应的底层水量信息为最大值255;且满足目标网格对应的左侧水量信息小于目标网格对应的自身水量信息,或目标网格对应的右侧水量信息小于目标网格对应的自身水量信息;若不满足第一判断条件,且不满足第二判断条件,则确认流动状态对应的具体流动状态为液体静止状态。
7、可选地,根据视图空间矩阵和每个网格对应的网格状态,构建待渲染流体对应的液体状态采样图,具体包括:
8、根据如下公式构建每个网格中分别对应的液体信息:
9、si,j=vector4(c.r,c.g,c.b,c.a);
10、在上述公式中
11、其中,si,j为液体状态采样图中i行j列个网格对应的单位像素,vector4(c.r,c.g,c.b,c.a)为单位像素对应的argb通道,c.a为a通道,c.r为r通道,c.g为g通道,c.b为b通道,li,j为单位像素对应的自身水量信息,li,j-1为单位像素对应的左侧水量信息,li,j+1为单位像素对应的右侧水量信息,li+1,j为单位像素对应的底层水量信息,lmax为每个网格对应的液体信息最大值。
12、可选地,根据液体状态采样图和每个网格分别对应的argb通道,获取待渲染流体对应的绘制状态,具体包括:通过如下公式获取每个网格分别对应的各通道值:
13、
14、其中,l、l1、lr、lb分别为每个网格分别对应的各通道值;根据每个网格分别对应的各通道值,根据如下公式确定每个网格分别对应的不同绘制状态值:
15、
16、其中,empty、flowting、idle、wawe为每个网格分别对应的不同绘制状态值;根据每个网格分别对应的绘制状态值,确认每个网格分别对应的绘制状态,以确认待渲染流体对应的绘制状态,其中,当绘制状态值为empty时,单个网格对应的绘制状态为空状态;当绘制状态值为flowting时,单个网格对应的绘制状态为悬浮状态,当绘制状态值为idle时,单个网格对应的绘制状态为最大值状态,当绘制状态值为wawe时,单个网格对应的绘制状态为平面流动状态。
17、可选地,根据绘制状态,确认待渲染流体对应的绘制方式,具体包括:根据每个网格分别对应的绘制状态,确认每个网格分别对应的绘制方式,以确认待渲染流体对应的绘制方式,其中,当绘制状态为空状态时,单个网格对应的绘制方式为停止绘制;当绘制状态为悬浮状态时,单个网格对应的绘制方式为绘制单个网格大小对应的方块液体纹理;当绘制状态为最大值状态时,单个网格对应的绘制方式为绘制下落流体粒子图片;当绘制状态为平面流动状态时,单个网格对应的绘制方式为使用双波动插值绘制液体表面流动效果。
18、可选地,使用双波动插值绘制液体表面流动效果,具体包括:根据如下公式,使用双波动插值绘制液体表面流动效果:
19、
20、其中,interceptor1和interceptor2为浮点数,uv为二维坐标向量,其中,uv.x为水平坐标向量,time.x为向前推移的时间变量,lineh为液体表面的基准线高度,lineh通过l和lr计算得到,flowline为液体表面流动效果。
21、在本技术的第二方面提供了一种基于色彩通道的2d平台流体模拟装置,装置包括视图空间矩阵构建模块、液体状态采样图构建模块以及流体渲染绘制模块,其中,
22、视图空间矩阵构建模块,用于获取待渲染流体对应的网格大小和视图空间矩阵大小,所述网格大小和所述视图空间矩阵大小根据所述待渲染流体所在的空间区域进行确定;根据所述网格大小以及视图空间矩阵大小,构建所述待渲染流体对应的视图空间矩阵。
23、液体状态采样图构建模块,用于按照预设顺序遍历所述视图空间矩阵,以获取所述视图空间矩阵中每个网格对应的网格状态;根据所述视图空间矩阵和每个所述网格对应的网格状态,构建所述待渲染流体对应的液体状态采样图,所述液体状态采样图通过argb通道存储每个所述网格对应的液体信息,其中,a通道用于存储所述液体信息中的自身水量信息,r通道存储所述液体信息中的左侧水量信息,g通道存储所述液体信息中的右侧水量信息,b通道存储所述液体信息中的底层水量信息。
24、流体渲染绘制模块用于根据所述液体状态采样图和每个所述网格分别对应的所述argb通道,获取所述待渲染流体对应的绘制状态;根据所述绘制状态,确认所述待渲染流体对应的绘制方式,并根据所述绘制方式,对所述待渲染流体的进行绘制操作。
25、在本技术的第三方面提供了一种电子设备,包括处理器、存储器、用户接口及网络接口,存储器用于存储指令,用户接口和网络接口用于给其他设备通信,处理器用于执行存储器中存储的指令,以使电子设备执行如上述任意一项的方法。
26、在本技术的第四方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行如上述任意一项的方法。
27、本技术实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
28、1、本技术通过将待渲染流体所在世界区间网格化,并构建待渲染流体对应的视图空间矩阵,按照预设顺序遍历所述视图空间矩阵,以获取所述视图空间矩阵中每个网格对应的网格状态,从而根据所述视图空间矩阵和每个所述网格对应的网格状态,构建所述待渲染流体对应的液体状态采样图,液体状态采样图通过argb通道存储每个所述网格对应的液体信息,进而可以只通过一次采样,便可根据每个网格对应的argb通道确定其绘制状态,确认所述待渲染流体对应的绘制方式,并根据所述绘制方式,对所述待渲染流体的进行绘制操作,从而减少了采样次数,在真实模拟液体流动的情况下,大大提升了待渲染流体的绘制效率。
29、2、通过获取每个网格对应的流动状态,流动状态包括液体向下流动状态、液体左右流动状态以及静止状态,可以针对不同的流动状态进行精细化的渲染处理,从而流体模拟能够更精确地反映真实世界中液体的流动特性,以使得最终的模拟效果更加逼真。
30、3、当绘制状态为平面流动状态时,通过使用双波动插值绘制液体表面流动效果,使得待渲染流体表面看起来更加真实和动态。