掌桥专利:专业的专利平台
掌桥专利
首页

一种液体仿真方法、装置、设备及介质

文献发布时间:2023-06-19 19:28:50


一种液体仿真方法、装置、设备及介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种液体仿真方法、装置、设备及介质。

背景技术

在游戏、动画或虚拟现实等场景中,常常需要仿真模拟液体表面漂浮有模型的效果。现有传统的仿真模拟方法单独实时计算每个漂浮物体模型在受液体浮力的影响下,其三维空间位置和法切线方向的变化,再根据计算结果进行独立的模型渲染。当漂浮物体模型数量过多时,计算开销较大,仿真效率极低。

公开内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种液体仿真方法、装置、设备及介质。

本公开实施例提供了一种液体仿真方法,包括:

获取至少一个漂浮物体模型的模型参数,所述模型参数包括:初始位置和初始方向向量;所述初始方向向量用于表征所述漂浮物体模型表面的采样点在至少两个方向的初始分量;

根据预先编译的液体模型的波形纹理数据,生成所述液体模型的高度场和偏移方向向量;所述偏移方向向量用于表征所述液体模型的表面波动在所述至少两个方向上对所述漂浮物体模型产生的偏移量;

根据所述偏移方向向量和所述初始方向向量,得到在所述液体模型的波动下各所述漂浮物体模型的目标方向向量;

基于所述初始位置,得到在所述液体模型的浮力作用下各所述漂浮物体模型的目标空间位置;

根据所述高度场、所述目标方向向量和所述目标空间位置,对所述液体模型和各所述漂浮物体模型进行渲染。

可选的,所述模型参数还包括:浮力影响因子;所述基于所述初始位置,得到在所述液体模型的浮力作用下各所述漂浮物体模型的目标空间位置,包括:

根据预先获取的变换矩阵对所述初始位置进行变换,得到所述漂浮物体模型在世界坐标系中的初始空间位置;基于所述浮力影响因子和所述初始空间位置,得到在所述液体模型的浮力作用下所述漂浮物体模型的目标空间位置。

可选的,所述获取至少一个漂浮物体模型的模型参数,包括:

通过GPU中预先编译的顶点着色器,从中央处理器CPU获取至少一个漂浮物体模型的模型参数;其中,所述顶点着色器保存有所述波形纹理数据;所述顶点着色器用于以并行的方式对所述波形纹理数据和所述模型参数进行处理,以输出所述液体模型的高度场以及各所述漂浮物体模型的所述目标方向向量和所述目标空间位置。

可选的,所述根据所述高度场、所述目标方向向量和所述目标空间位置,对所述液体模型和各所述漂浮物体模型进行渲染,包括:

获取与所述顶点着色器相对应的像素着色器;通过所述像素着色器根据所述高度场对所述液体模型进行渲染,根据所述目标方向向量和所述目标空间位置,在所述液体模型的渲染结果中对对应的所述漂浮物体模型进行渲染。

可选的,所述方法还包括:在从所述CPU获取所述漂浮物体模型在预设的相机视角范围内的判断结果的情况下,对所述波形纹理数据和所述模型参数进行处理;其中,所述判断结果是所述CPU基于所述初始位置得到的。

可选的,所述方法还包括:当完成一次对所述液体模型和所述漂浮物体模型的渲染后,将所述目标空间位置传入所述CPU,以使所述CPU基于所述目标空间位置更新所述漂浮物体模型的初始位置;从所述CPU获取更新后的初始位置。

本公开实施例提供了一种液体仿真方法,包括:

将至少一个漂浮物体模型的模型参数传入执行器,以使所述执行器基于预先编译的液体模型的波形纹理数据和所述模型参数对所述液体模型和各所述漂浮物体模型进行渲染;其中,所述模型参数包括:初始位置和初始方向向量。

可选的,所述执行器包括图形处理器GPU;所述方法还包括:

判断所述初始位置是否在预设的相机视角范围内;如果在,则将所述漂浮物体模型在所述相机视角范围内的判断结果传入所述GPU;如果不在,则在从所述GPU获取目标空间位置之后,基于所述目标空间位置更新所述漂浮物体模型的初始位置;其中,所述目标空间位置是基于所述初始位置,得到的在所述液体模型的浮力作用下各所述漂浮物体模型的位置。

可选的,所述基于所述目标空间位置更新所述漂浮物体模型的初始位置,包括:

根据关键波形的方向得到所述漂浮物体模型的位移方向;其中,所述关键波形包括:所述液体模型中,在所述漂浮物体模型后方待向前传播的多个波形;或者包括:所述液体模型中,与所述漂浮物体模型最近的主波形和所述主波形前方和/或后方待向前传播的多个杂波形;根据所述关键波形的波幅得到所述漂浮物体模型的位移距离;确定所述漂浮物体模型从所述目标空间位置沿着所述位移方向移动所述位移距离后的空间位置;基于移动后的空间位置更新所述漂浮物体模型的初始位置。

本公开实施例提供了一种液体仿真装置,包括:

第一数据传入模块,用于获取至少一个漂浮物体模型的模型参数,所述模型参数包括:初始位置和初始方向向量;所述初始方向向量用于表征所述漂浮物体模型表面的采样点在至少两个方向的初始分量;

液体数据处理模块,用于根据预先编译的液体模型的波形纹理数据,生成所述液体模型的高度场和偏移方向向量;所述偏移方向向量用于表征所述液体模型的表面波动在所述至少两个方向上对所述漂浮物体模型产生的偏移量;

方向处理模块,用于根据所述偏移方向向量和所述初始方向向量,得到在所述液体模型的波动下各所述漂浮物体模型的目标方向向量;

位置处理模块,用于基于所述初始位置,得到在所述液体模型的浮力作用下各所述漂浮物体模型的目标空间位置;

渲染模块,用于根据所述高度场、所述目标方向向量和所述目标空间位置,对所述液体模型和各所述漂浮物体模型进行渲染。

本公开实施例提供了一种液体仿真装置,包括:

第二数据传入模块,用于将至少一个漂浮物体模型的模型参数传入执行器,以使所述执行器基于预先编译的液体模型的波形纹理数据和所述模型参数对所述液体模型和各所述漂浮物体模型进行渲染;其中,所述模型参数包括:初始位置和初始方向向量。

本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的液体仿真方法。

本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的液体仿真方法。

本公开实施例提供的技术方案与现有技术相比具有如下优点:

本公开实施例提供的液体仿真方法、装置、设备及介质,该方法包括:获取至少一个漂浮物体模型的初始位置和初始方向向量;而后根据波形纹理数据,生成液体模型的高度场和偏移方向向量,根据偏移方向向量和初始方向向量,得到在液体模型的波动下各漂浮物体模型的目标方向向量;基于初始位置,得到在液体模型的浮力作用下各漂浮物体模型的目标空间位置;最后根据高度场、目标方向向量和目标空间位置,对液体模型和各漂浮物体模型进行渲染。

在本技术方案中,液体模型表面的波动会对每个漂浮物体模型的方向都产生影响,基于此,利用液体模型的波形纹理数据生成适用于各个漂浮物体模型的偏移方向向量,结合已获取的至少一个漂浮物体模型的初始方向向量,从而能够同时运算多个漂浮物体模型在液体模型影响下的目标方向向量。与此同时,同一液体模型对其表面漂浮的每个漂浮物体模型产生的浮力作用是相同的,结合各漂浮物体模型的初始位置,同样能够同时运算多个漂浮物体模型在液体模型影响下的目标空间位置。在得到液体模型的高度场,以及通过以上方式同时得到多个漂浮物体模型在液体模型影响下的目标方向向量和目标空间位置后,即可同时进行液体模型和多漂浮物体模型的渲染,大大提高了渲染效率,可以非常高效地处理多漂浮物体模型场景下的实时液体漂浮效果仿真模拟。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例一提供的一种液体仿真方法的流程示意图;

图2为本公开实施例一提供的一种方向偏移的示意图;

图3为本公开实施例一提供的另一种液体仿真方法的流程示意图;

图4为本公开实施例二提供的一种液体仿真方法的流程示意图;

图5为本公开实施例三提供的一种液体仿真装置的结构示意图;

图6为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

实施例一:

图1为本公开实施例提供的一种液体仿真方法的流程示意图,该方法可以由液体仿真装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法包括:

步骤S102,获取至少一个漂浮物体模型的模型参数,模型参数包括:初始位置和初始方向向量;初始方向向量用于表征漂浮物体模型表面的采样点在至少两个方向的初始分量。

在本实施例中,待仿真的漂浮物体模型通常为不受形变影响的刚体模型,如在液体模型上漂浮的箱子、冰山,从而一般可以将漂浮物体模型的中心点作为初始位置。漂浮物体模型的表面是由一系列的点组成的,在受到液体模型的作用之前,该漂浮物体模型的表面在每个点处本身具有法线、切线等方向的方向向量,本实施例从表面的多个点中选取一个或多个采样点,并将采样点的方向向量作为初始方向向量。初始方向向量一般包括切线方向的初始分量和副法线方向的初始分量。在实际应用中,漂浮物体模型的模型参数并不限于初始位置和初始方向向量,诸如还可以包括:表征漂浮物体模型受液体模型的浮力影响大小的浮力影响因子,表征漂浮物体模型形状、体积和颜色等属性的属性参数。

步骤S104,根据预先编译的液体模型的波形纹理数据,生成液体模型的高度场和偏移方向向量。

在本实施例中,液体模型的波形纹理数据用于记录液体表面各波形的顶点位置、波浪方向、陡度、波长、切线方向和副法线方向等波形参数。

采用波发生器对上述波形纹理数据进行运算,得到液体模型的高度场和偏移方向向量。其中,高度场用于表示液体模型在不同的平面XZ坐标对应的高度Y方向的液面高度。偏移方向向量用于表征液体模型的表面波动在至少两个方向上对漂浮物体模型产生的偏移量,可以理解为液体模型在不同的高度Y方向对应的水平面上XZ两个方向的偏移,即包括:切线方向的偏移量和副法线方向的偏移量。

步骤S106,根据偏移方向向量和初始方向向量,得到在液体模型的波动下各漂浮物体模型的目标方向向量。

如图2所示,分别展示了漂浮物体模型、液体模型中的一个波形以及在该波形影响下的漂浮物体模型。漂浮物体模型在水平状态下,表面各点具有初始方向向量(图2仅示例性展示了一个采样点的初始方向向量)。将漂浮物体模型添加至液体模型上,受液体模型的波形的影响,漂浮物体模型将漂浮于有坡度的液面上,该有坡度的液面造成初始方向向量发生偏移;在实现时,将液体模型上漂浮物体模型添加位置处波形的偏移方向向量,与该漂浮物体模型的初始方向向量相叠加,得到漂浮物体模型的目标方向向量。

步骤S108,基于初始位置,得到在液体模型的浮力作用下各漂浮物体模型目标空间位置。

各漂浮物体模型受液体浮力的作用,将在液体模型中浸入一定的深度,根据各漂浮物体模型的初始位置和浸入液体模型的深度,确定各漂浮物体模型目标空间位置。

可以理解,当漂浮物体模型为多个时,每个漂浮物体模型均对应有各自的模型目标方向向量和目标空间位置。

步骤S110,根据高度场、目标方向向量和目标空间位置,对液体模型和各漂浮物体模型进行渲染。

在此实施例中,可以根据高度场对液体模型进行渲染,以及根据各组目标方向向量和目标空间位置对对应的各个漂浮物体模型进行并行渲染,最终得到目标图像,该目标图像用于显示多漂浮物体模型场景下的实时液体漂浮仿真效果。

本公开实施例提供的液体仿真方法,由于液体模型表面的波动会对每个漂浮物体模型的方向都产生影响,基于此,利用液体模型的波形纹理数据生成适用于各个漂浮物体模型的偏移方向向量,结合已获取的至少一个漂浮物体模型的初始方向向量,从而能够同时运算多个漂浮物体模型在液体模型影响下的目标方向向量。与此同时,同一液体模型对其表面漂浮的每个漂浮物体模型产生的浮力作用是相同的,结合各漂浮物体模型的初始位置,同样能够同时运算多个漂浮物体模型在液体模型影响下的目标空间位置。在得到液体模型的高度场,以及通过以上方式同时得到多个漂浮物体模型在液体模型影响下的目标方向向量和目标空间位置后,即可同时进行液体模型和多漂浮物体模型的渲染,大大提高了渲染效率,可以非常高效地处理多漂浮物体模型场景下的实时液体漂浮效果仿真模拟。

根据上述实施例,本实施例提供一种具体应用场景下的液体仿真方法,该方法可由CPU(Central Processing Unit,中央处理器)和GPU(Graphics Processing Unit,图形处理器)联合工作,执行液体仿真方法相应程序中CPU和GPU各自负责的流程,实现本公开实施例提供的液体仿真方法。CPU和GPU可在仿真设备上进行设置,仿真设备诸如服务器、PC(个人计算机)、智能手机等终端设备。

在本实施例中,液体仿真方法可通过GPU中预先编译的顶点着色器和像素着色器实现。在GPU预编译阶段,生成顶点着色器(vertex shader)和像素着色器,以及通过编译将液体模型的波形纹理数据存储于顶点着色器中。此外,为了共同实现液体仿真方法,顶点着色器和像素着色器是相互对应的,例如:顶点着色器和像素着色器均通过OpenGL绘制,部分配置参数相互对应,共享内存以及共享液体模型的部分参数和漂浮物体模型的部分参数等等。

在应用过程中,CPU向顶点着色器传入漂浮物体模型的模型参数,顶点着色器对模型参数和波形纹理数据进行处理,并将处理结果输出给像素着色器,像素着色器根据上述处理结果执行渲染操作。

基于此,步骤S102中获取模型参数的方式可以包括:通过GPU中预先编译的顶点着色器,从CPU获取至少一个漂浮物体模型的模型参数。其中,顶点着色器保存有波形纹理数据;顶点着色器用于以并行的方式对波形纹理数据和模型参数进行处理,以输出液体模型的高度场以及各漂浮物体模型的目标方向向量和目标空间位置。

实际应用中,液体模型是由多个顶点位置、方向、陡度和波长等波形纹理数据不同的波形组成,这些波形便构成了待仿真的液体模型。液体模型的波形可以是Gerstner Wave(盖斯特纳波)波,相比于其它波形,Gerstner Wave的波峰更尖、波谷更宽,更易于形成海浪、水池等真实场景中的液体。

GPU中的顶点着色器对波形纹理数据进行处理,针对当前波形,该处理诸如包括:归一化波形方向,计算当前时刻下当前波形的波相位,控制当前波形的陡度,计算当前波形表面的各个顶点对漂浮物体模型在切线方向和副法线方向产生的偏移量,以及计算多个波形互相影响后当前波形的三维空间位置。通过上述处理,根据每个波形的三维空间位置得到液体模型的高度场,根据计算得到的切线方向和副法线方向的偏移量得到偏移方向向量。

在液体模型的浮力作用下,GPU中的顶点着色器计算漂浮物体模型目标空间位置的实现方式,包括:

先根据预先获取的变换矩阵对初始位置进行变换,得到漂浮物体模型在世界坐标系中的初始空间位置;再基于浮力影响因子和初始空间位置,得到在液体模型的浮力作用下漂浮物体模型的目标空间位置。

具体实现时,CPU将变换矩阵(u_MPV)和浮力影响因子传入GPU中的顶点着色器;变换矩阵能够将三维几何物体渲染到二维屏幕上。该变换矩阵是CPU基于初始位置计算得到的,具体是通过模型(即M矩阵)、观察(即V矩阵)、投影(即P矩阵)级联得到的,其中的M矩阵是基于初始位置确定的。顶点着色器参照如下方式将摄像机坐标系中的初始位置(表示为attPosition)变换为世界坐标系中的初始空间位置(表示为modelPostiton):modelPostiton=u_MPV*attPosition。这样,顶点着色器可利用变换矩阵和初始位置对漂浮物体模型进行空间位置的变换,比如可产生从用户视点以正交投影方式观察漂浮物体模型的视觉效果。

本实施例中的浮力影响因子可以包括:与漂浮物体模型的密度负相关的第一影响因子α和与漂浮物体模型的体积负相关的第二影响因子β。其中,第一影响因子α表示:漂浮物体模型的密度越大,受液体浮力影响越小;第二影响因子β表示:漂浮物体模型的体积越大,其抵抗液体模型中波浪起伏的能力越强,受液体浮力影响越小,甚至可以忽略液体模型中一些起伏程度较小的波形的浮力影响。可以理解,对于不同材质、不同体积的漂浮物体模型,可以通过控制浮力影响因子来调整其受液体浮力影响的大小。

根据漂浮物体模型的浮力影响因子,漂浮物体模型在液体模型中将浸入一定的深度,浸入的深度即为初始空间位置的偏移距离,由此得到目标空间位置;初始空间位置和目标空间位置之间的距离即为漂浮物体模型在液体模型中浸入的深度。

根据以上实施例,得到了液体模型的高度场以及至少一个漂浮物体模型的目标方向向量和目标空间位置,基于此,本实施例提供一种对液体模型和各漂浮物体模型进行渲染的方式,参照如下所示。

获取与顶点着色器相对应的像素着色器;所采用的像素着色器可以为片元着色器(Fragment Shader)。通过像素着色器根据高度场对液体模型进行渲染,根据目标方向向量和目标空间位置,在液体模型的渲染结果中对对应的漂浮物体模型进行渲染。

Draw Call(绘制指令)是CPU向GPU提交的一次渲染指令,它的数量是影响性能的重要指标,为了减少非必要的Draw Call,本实施例可以在从CPU获取漂浮物体模型在预设的相机视角范围内的判断结果的情况下,再对波形纹理数据和模型参数进行处理。其中,判断结果是CPU基于初始位置得到的。

在此情况下,本实施例提供一种如图3所示的液体仿真方法,包括如下步骤:

步骤S302,CPU将至少一个漂浮物体模型的模型参数传入GPU;该模型参数包括但不限于:初始位置、初始方向向量、浮力影响因子和变换矩阵。

步骤S304,CPU判断初始位置是否在预设的相机视角范围内;如果在,则执行如下步骤S306,如果不在,则执行如下步骤S318。

步骤S306,将漂浮物体模型在相机视角范围内的判断结果传入GPU。

步骤S308,GPU利用顶点着色器根据波形纹理数据得到液体模型的高度场和偏移方向向量。

步骤S310,顶点着色器根据偏移方向向量和初始方向向量,得到在液体模型的波动下各漂浮物体模型的目标方向向量。

步骤S312,顶点着色器基于初始位置,得到在液体模型的浮力作用下各漂浮物体模型的目标空间位置。

步骤S314,GPU利用像素着色器根据高度场、目标方向向量和目标空间位置,对液体模型和各漂浮物体模型进行渲染。

步骤S316,GPU将目标空间位置传入CPU。

步骤S318,CPU在从GPU获取目标空间位置之后,基于目标空间位置更新漂浮物体模型的初始位置。

在一种实现方式中,当GPU完成一次对液体模型和各漂浮物体模型的渲染后,将目标空间位置传入CPU,以使CPU基于目标空间位置更新漂浮物体模型的初始位置;而后,GPU再从CPU获取更新后的初始位置,并基于此重新执行上述实施例中步骤S102至S110所示的液体仿真方法。

基于目标空间位置更新漂浮物体模型的初始位置的实施过程,包括如下步骤(1)-(4):

(1)根据关键波形的方向得到漂浮物体模型的位移方向。

其中,关键波形包括:液体模型中,在漂浮物体模型后方待向前传播的多个波形;或者包括:液体模型中,与漂浮物体模型最近的主波形和主波形前方和/或后方待向前传播的多个杂波形。上述主波形和杂波形是通过波幅、波长和/或陡度等波形纹理数据定义的起伏程度在不同范围内的波形。

液体模型的位移方向可以为关键波形的方向加权结果。

(2)根据关键波形的波幅得到漂浮物体模型的位移距离。

位移距离(表示为w)可参照如下公式计算:w=(k*A)/fps;其中,k表示衰减系数,波幅表示关键波形的波幅加权结果,fps表示当前渲染帧率。

(3)确定漂浮物体模型从目标空间位置沿着位移方向移动位移距离后的空间位置。

(4)基于移动后的空间位置更新漂浮物体模型的初始位置。由于目标空间位置和初始位置对应于不同的坐标系,从而,本实施例可以先对移动后的空间位置进行转换,再将转换后的位置作为更新后的初始位置。

此外,考虑到转换矩阵是与初始位置相关的矩阵,基于此,在更新初始位置后,将相应地更新转换矩阵,并同样地将更新后的转换矩阵传入GPU。

综上,本公开实施例提供的液体仿真方法,基于偏移方向向量能够同时运算多个漂浮物体模型的目标方向向量,以及,同一液体模型对其表面漂浮的每个漂浮物体模型产生的浮力作用是相同的,从而能够同时运算多个漂浮物体模型在液体模型影响下的目标空间位置。在此基础上,又在液体仿真过程中引入GPU作为计算资源,波形纹理数据、初始位置、初始方向向量和浮力影响因子等数据的处理由GPU执行;利用GPU的并行计算能力,同时计算多个漂浮物体模型在液体模型影响下的目标方向向量和目标空间位置,再配合GPU的渲染技术,同时进行多漂浮物体模型的渲染,进一步提高了渲染效率。相比较现有采用CPU对每个漂浮物体模型进行单独计算的方式,本方案这种利用GPU进行液体仿真的方式,大幅度提升了硬件能力,可以更加高效地处理多漂浮物体模型场景下的实时液体漂浮效果仿真模拟。

实施例二:

如图4所示,本公开实施例提供一种液体仿真方法,包括如下步骤:

步骤S402,将至少一个漂浮物体模型的模型参数传入执行器,以使执行器基于预先编译的液体模型的波形纹理数据和模型参数对液体模型和各漂浮物体模型进行渲染;其中,模型参数包括:初始位置和初始方向向量。

在一种具体实施例中,液体仿真方法可以应用于CPU,上述执行器包括GPU,基于此,该步骤可以包括:CPU将至少一个漂浮物体模型的模型参数传入GPU,以使GPU基于预先编译的液体模型的波形纹理数据和模型参数对液体模型和各漂浮物体模型进行渲染。

CPU在将模型参数传入GPU之后,还可以提供如下一种实施例,包括:

判断初始位置是否在预设的相机视角范围内。如果在,则将漂浮物体模型在相机视角范围内的判断结果传入GPU;进而使GPU对波形纹理数据和模型参数进行处理。如果不在,则在从GPU获取目标空间位置之后,基于目标空间位置更新漂浮物体模型的初始位置。

本实施例提供一种基于目标空间位置更新漂浮物体模型的初始位置的方法,包括:

根据关键波形的方向得到漂浮物体模型的位移方向;其中,关键波形包括:液体模型中,在漂浮物体模型后方待向前传播的多个波形;或者包括:液体模型中,与漂浮物体模型最近的主波形和主波形前方和/或后方待向前传播的多个杂波形;

根据关键波形的波幅得到漂浮物体模型的位移距离;

确定漂浮物体模型从目标空间位置沿着位移方向移动位移距离后的空间位置;

基于移动后的空间位置更新漂浮物体模型的初始位置。

本公开实施例提供的液体仿真方法,在液体仿真过程中,CPU只需要将诸如初始位置和初始方向向量等模型参数传入GPU,对模型参数的运行以及模型渲染等过程,均由具有并行计算能力的GPU执行。相比较现有采用CPU对每个漂浮物体模型进行单独计算的方式,本方案这种利用GPU进行液体仿真的方式,大大降低了CPU的负载,大幅度提升了硬件能力,可以非常高效地处理多漂浮物体模型场景下的实时液体漂浮效果仿真模拟。

另外由于本公开实施例将运算过程从CPU转移到了GPU上,因此可以降低CPU的占用率,在有限的计算资源下实现了高性能的水面漂浮仿真,保障终端的正常运行。

实施例三:

参照图5,本公开实施例提供一种液体模型仿真装置,该装置包括:

第一数据传入模块502,用于获取至少一个漂浮物体模型的模型参数,模型参数包括:初始位置和初始方向向量;初始方向向量用于表征漂浮物体模型表面的采样点在至少两个方向的初始分量;

液体数据处理模块504,用于根据预先编译的液体模型的波形纹理数据,生成液体模型的高度场和偏移方向向量;偏移方向向量用于表征液体模型的表面波动在至少两个方向上对漂浮物体模型产生的偏移量;

方向处理模块506,用于根据偏移方向向量和初始方向向量,得到在液体模型的波动下各漂浮物体模型的目标方向向量;

位置处理模块508,用于基于初始位置,得到在液体模型的浮力作用下各漂浮物体模型的目标空间位置;

渲染模块510,用于根据高度场、目标方向向量和目标空间位置,对液体模型和各漂浮物体模型进行渲染。

在一种实施例中,液体模型仿真装置可设置于GPU。

在一种实施例中,上述模型参数还包括:浮力影响因子;

上述位置处理模块508具体用于:

根据预先获取的变换矩阵对初始位置进行变换,得到漂浮物体模型在世界坐标系中的初始空间位置;

基于浮力影响因子和初始空间位置,得到在液体模型的浮力作用下漂浮物体模型的目标空间位置。

在一种实施例中,上述第一数据传入模块502具体用于:

通过GPU中预先编译的顶点着色器,从中央处理器CPU获取至少一个漂浮物体模型的模型参数;其中,顶点着色器保存有波形纹理数据;顶点着色器用于以并行的方式对波形纹理数据和模型参数进行处理,以输出液体模型的高度场以及各漂浮物体模型的目标方向向量和目标空间位置。

在一种实施例中,上述渲染模块510具体用于:

获取与顶点着色器相对应的像素着色器;通过像素着色器根据高度场对液体模型进行渲染,根据目标方向向量和目标空间位置,在液体模型的渲染结果中对对应的漂浮物体模型进行渲染。

在一种实施例中,上述液体模型仿真装置还包括判断结果获取模块,其用于:在从CPU获取漂浮物体模型在预设的相机视角范围内的判断结果的情况下,对波形纹理数据和模型参数进行处理;其中,判断结果是CPU基于初始位置得到的。

在一种实施例中,上述液体模型仿真装置还包括位置更新模块,其用于:

当完成一次对液体模型和漂浮物体模型的渲染后,将目标空间位置传入CPU,以使CPU基于目标空间位置更新漂浮物体模型的初始位置;从CPU获取更新后的初始位置。

实施例四:

本公开实施例提供一种液体仿真装置,该装置包括:

第二数据传入模块,用于将至少一个漂浮物体模型的模型参数传入执行器,以使执行器基于预先编译的液体模型的波形纹理数据和模型参数对液体模型和各漂浮物体模型进行渲染;其中,模型参数包括:初始位置和初始方向向量。

在一种实施例中,上述液体仿真装置可设置于CPU。

在一种实施例中,上述执行器包括GPU;上述液体仿真装置还包括判断模块,其用于:

判断初始位置是否在预设的相机视角范围内;如果在,则将漂浮物体模型在相机视角范围内的判断结果传入GPU;如果不在,则在从GPU获取目标空间位置之后,基于目标空间位置更新漂浮物体模型的初始位置;其中,目标空间位置是基于初始位置,得到的在液体模型的浮力作用下各漂浮物体模型的位置。

在一种实施例中,上述判断模块具体用于:

根据关键波形的方向得到漂浮物体模型的位移方向;其中,关键波形包括:液体模型中,在漂浮物体模型后方待向前传播的多个波形;或者包括:液体模型中,与漂浮物体模型最近的主波形和主波形前方和/或后方待向前传播的多个杂波形;

根据关键波形的波幅得到漂浮物体模型的位移距离;

确定漂浮物体模型从目标空间位置沿着位移方向移动位移距离后的空间位置;

基于移动后的空间位置更新漂浮物体模型的初始位置。

以上任一实施例所提供的液体仿真装置可执行本公开任意实施例所提供的液体仿真,具备执行方法相应的功能模块和有益效果。

图6为本公开实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600包括一个或多个处理器601和存储器602。

处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。

存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所述的本公开的实施例的液体仿真方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入装置603还可以包括例如键盘、鼠标等等。

该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图6中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所述液体仿真方法。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的液体仿真方法。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开实施例中的方法。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种仿真点云数据的生成方法、装置、设备及存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种音响设备及其音效调整方法、装置、设备、介质
  • 一种语音交互设备唤醒方法、装置、设备及存储介质
  • 一种设备风险预警方法、装置、终端设备及存储介质
  • 一种自动驾驶仿真测试方法、装置、仿真设备及储存介质
  • 一种电源方案的仿真方法、仿真装置、终端设备及介质
技术分类

06120115926965