CN111598986B - 虚拟流体表面的渲染方法、装置、设备及存储介质 - Google Patents
虚拟流体表面的渲染方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111598986B CN111598986B CN202010404826.XA CN202010404826A CN111598986B CN 111598986 B CN111598986 B CN 111598986B CN 202010404826 A CN202010404826 A CN 202010404826A CN 111598986 B CN111598986 B CN 111598986B
- Authority
- CN
- China
- Prior art keywords
- grid
- virtual
- determining
- point
- fluid surface
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供一种虚拟流体表面的渲染方法、装置、设备及存储介质,涉及场景渲染技术领域。该方法包括确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点;根据透视空间中所述参考点的位置,确定所述参考点在世界空间的投影点的位置;根据所述投影点的位置和虚拟摄像机的位置,确定所述投影点与所述虚拟摄像机之间的距离;根据所述距离确定对所述虚拟流体表面上所述每个子网格对应的渲染参数。相对于现有技术,避免了虚拟流体表面的每一处均采用相同的渲染方式,即每一处的像素填充均相同,从而使得较远距离位置进行渲染导致的像素填充压力大,性能下降的问题。
Description
技术领域
本申请涉及场景渲染技术领域,具体而言,涉及一种虚拟流体表面的渲染方法、装置、设备及存储介质。
背景技术
随着互联网技术的发展,游戏发展迅速,各种游戏充斥在人们的生活中,玩家对于游戏场景的要求越来越高,如何让玩家在游戏过程中找到身临其境的感觉,是游戏场景设计者需要解决的问题。
关于游戏中大面积的虚拟流体表面的渲染,例如:关于海平面的渲染,一般是通过投射网格技术,将透视空间转换至世界空间,从而构成海平面模型,并且投射网格技术只需要一个模型资源,没有LOD切换时的突变,并且由于模型均处于摄像机范围内,所以基本没有无效绘制。
但是这样的渲染方式会造成不必要的性能下降。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种虚拟流体表面的渲染方法、装置、设备及存储介质,以解决现有技术中渲染方式会造成不必要的性能下降的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请一实施例提供了一种虚拟流体表面的渲染方法,所述方法包括:
确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点,其中,所述投影网格为所述虚拟流体表面在虚拟投射器的透视空间形成的网格;
根据透视空间中所述参考点的位置,确定所述参考点在世界空间的投影点的位置;
根据所述投影点的位置和虚拟摄像机的位置,确定所述投影点与所述虚拟摄像机之间的距离,其中,所述虚拟摄像机为用于确定游戏画面的摄像机;
根据所述距离确定对所述虚拟流体表面上所述每个子网格对应的渲染参数。
可选地,所述根据透视空间中所述参考点的位置,采用预设的变换矩阵,确定所述参考点在世界空间的投影点之前,所述方法还包括:
确定所述虚拟摄像机的视景体在世界空间中的预设基准高度的所述虚拟流体表面上的投射点;
将所述投射点变换到所述透视空间,得到所述透视空间的投射点;
根据所述透视空间的投射点在所述透视空间的坐标轴上的距离,构建缩放矩阵;其中,所述透视空间的坐标轴包括:所述虚拟投射器的投射方向,和所述投射方向的垂直方向;
根据所述虚拟投射器的透视矩阵的逆矩阵,以及所述缩放矩阵,确定所述变换矩阵。
可选地,所述确定所述虚拟摄像机的视景体在预设基准高度的所述虚拟流体表面上的投射点,包括:
分别确定所述视景体的边缘线段,与第一预设高度和第二预设高度的所述虚拟流体表面上的第一交点和第二交点;其中,所述第一预设高度高于所述预设基准高度,所述第二预设高度低于所述预设基准高度;
将所述第一交点和所述第二交点均投射到所述预设基准高度的所述虚拟流体表面上,得到所述视景体在所述预设基准高度的所述虚拟流体表面上的投射点。
可选地,所述根据所述透视空间的投射点在所述透视空间的坐标轴上的距离,构建缩放矩阵包括:
根据所述透视空间的投射点在所述透视空间的坐标轴上的最大距离和最小距离,构建所述缩放矩阵。
可选地,所述根据所述透视空间的投射点在所述透视空间的坐标轴上的最大距离和最小距离,构建所述缩放矩阵,包括:
将所述最大距离和所述最小距离,转换为预设范围内的距离值;
根据转换后的所述预设范围内的距离值,构建所述缩放矩阵。
可选地,所述根据透视空间中所述参考点的位置,采用预设的变换矩阵,确定所述参考点在世界空间的投影点,包括:
根据透视空间中所述参考点的位置,采用所述变换矩阵,确定世界空间中所述参考点的位置;
确定世界空间中所述参考点的位置,与所述虚拟摄像机位置之间的射线;
确定所述射线与所述虚拟流体表面的交点为所述参考点在世界空间的投影点。
可选地,所述根据所述距离,对所述虚拟流体表面上所述每个子网格对应区域进行渲染,包括:
根据所述距离,确定所述每个子网格的多细节层级LOD;
采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
可选地,所述采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染之前,所述方法还包括:
根据最大波动距离,以及所述每个子网格中各像素点与所述虚拟摄像机之间的实际距离,确定所述各像素点的缩放系数;
根据所述缩放系数,以及预设波动位移,确定所述各像素点对应的波动位移;
所述采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染,包括:
根据所述各像素点对应的波动位移,采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
可选地,所述确定待渲染的虚拟流体表面的投影网格中每个子网格内的参考点包括:
确定所述每个子网格中下半部分的中点为所述参考点,所述下半部分为所述虚拟流体表面以下的部分。
第二方面,本申请另一实施例提供了一种虚拟流体表面的渲染装置,所述装置包括:确定模块和渲染模块,其中:
所述确定模块,用于确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点,其中,所述投影网格为所述虚拟流体表面在虚拟投射器的透视空间形成的网格;
所述确定模块,还用于根据透视空间中所述参考点的位置,确定所述参考点在世界空间的投影点;
所述确定模块,还用于根据所述投影点的位置和虚拟摄像机的位置,确定所述投影点与所述虚拟摄像机的位置之间的距离,其中,所述虚拟摄像机为用于确定游戏画面的摄像机;
所述渲染模块,用于根据所述距离确定对所述虚拟流体表面上所述每个子网格对应的渲染参数。
可选地,所述装置还包括:变换模块和构建模块,其中:
所述确定模块,还用于确定所述虚拟摄像机的视景体在世界空间中的预设基准高度的所述虚拟流体表面上的投射点;
所述变换模块,用于将所述投射点变换到所述透视空间,得到所述透视空间的投射点;
所述构建模块,用于根据所述透视空间的投射点在所述透视空间的坐标轴上的距离,构建缩放矩阵;其中,所述透视空间的坐标轴包括:所述虚拟投射器的投射方向,和所述投射方向的垂直方向;
所述确定模块,还用于根据所述虚拟投射器的透视矩阵的逆矩阵,以及所述缩放矩阵,确定所述变换矩阵。
可选地,所述确定模块,还用于分别确定所述视景体的边缘线段,与第一预设高度和第二预设高度的所述虚拟流体表面上的第一交点和第二交点;其中,所述第一预设高度高于所述预设基准高度,所述第二预设高度低于所述预设基准高度;
将所述第一交点和所述第二交点均投射到所述预设基准高度的所述虚拟流体表面上,得到所述视景体在所述预设基准高度的所述虚拟流体表面上的投射点。
可选地,所述构建模块,还用于根据所述透视空间的投射点在所述透视空间的坐标轴上的最大距离和最小距离,构建所述缩放矩阵。
可选地,所述构建模块,还用于将所述最大距离和所述最小距离,转换为预设范围内的距离值;根据转换后的所述预设范围内的距离值,构建所述缩放矩阵。
可选地,所述确定模块,还用于根据透视空间中所述参考点的位置,采用所述变换矩阵,确定世界空间中所述参考点的位置;
所述确定模块,还用于确定世界空间中所述参考点的位置,与所述虚拟摄像机位置之间的射线;
所述确定模块,还用于确定所述射线与所述虚拟流体表面的交点为所述参考点在世界空间的投影点。
可选地,所述确定模块,还用于根据所述距离,确定所述每个子网格的多细节层级LOD;
所述渲染模块,还用于采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
可选地,所述确定模块,还用于根据最大波动距离,以及所述每个子网格中各像素点与所述虚拟摄像机之间的实际距离,确定所述各像素点的缩放系数;
确定模块,还用于根据所述缩放系数,以及预设波动位移,确定所述各像素点对应的波动位移;
所述渲染模块,还用于根据所述各像素点对应的波动位移,采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
可选地,所述确定模块,还用于确定所述每个子网格中下半部分的中点为所述参考点,所述下半部分为所述虚拟流体表面以下的部分。
第三方面,本申请另一实施例提供了一种虚拟流体表面的渲染设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当虚拟流体表面的渲染设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上述第一方面任一所述方法的步骤。
第四方面,本申请另一实施例提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述第一方面任一所述方法的步骤。
本申请的有益效果是:采用本申请提供的虚拟流体表面的渲染方法,确定待渲染的虚拟流体表面的投影网格中每个子网格内的参考点后,根据透视空间中参考点的位置,采用预设的变换矩阵,确定参考点在世界空间的投影点,并确定参考点世界空间中投影点和虚拟摄像机之间的距离,随后根据距离对虚拟流体表面上每个子网格对应区域进行渲染。该方法中,基于每个子网格内的参考点在世界空间内的投影点,以及虚拟摄像机之间的距离,对虚拟流体表面上该每个子网格对应的区域进行渲染,不同子网格的参考点在世界空间的投影点不同,那么其与虚拟摄像机之间的距离便不同,即对虚拟流体表面不同子网格对应区域进行渲染所采用的渲染方法不同的,如此,便可避免针对虚拟流体表面的每一处均进行相同的渲染,可有效避免较远距离的位置进行渲染导致的像素填充压力,从而有效避免不必要的性能下降。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请一实施例提供的虚拟流体表面的渲染方法的流程示意图;
图2为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图;
图3为缩放矩阵的生成步骤的示意图;
图4为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图;
图5为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图;
图6为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图;
图7为本申请一实施例提供的虚拟流体表面的渲染装置的结构示意图;
图8为本申请另一实施例提供的虚拟流体表面的渲染装置的结构示意图;
图9为本申请一实施例提供的虚拟流体表面的渲染设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
本申请下述各实施例提供的虚拟流体表面的渲染方法可应用于游戏场景,动画视频等影音娱乐场景,用于对该些场景中的虚拟流体表面进行渲染。
下文所提供的各虚拟流体表面的渲染方法可由渲染设备实现,该渲染设备的产品形态例如可以为具有图像渲染功能的终端设备如手机、平板、笔记本电脑等,还可以为具有图像渲染功能的服务器。该图像渲染功能例如可通过安装并运行预设的图像渲染应用实现。
如下结合多个具体的应用示例,对本申请实施例所提供的虚拟流体表面的渲染方法进行解释说明。图1为本申请一实施例提供的虚拟流体表面的渲染方法的流程示意图,如图1所示,该方法包括:
S101:确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点。
其中,投影网格(Projected Grid),也可称为投射网格,在该实施例中,该虚拟流体表面可以为虚拟流体表面在虚拟投射器(Projector)的透视空间形成的网格,投影网格包括:均匀划分的多个子网格。
可选地,该虚拟流体表面例如可以为虚拟海平面、虚拟湖面、虚拟云层表面,或者其它虚拟可流动物体的表面等,在本申请的下述实施例中,可以虚拟海平面为例进行说明。
可选地,多个子网格是对投影网格按照一个坐标轴均匀划分得到的,不同子网格对应区域在后续渲染时,可能需要采用不同的渲染方式,如采用不同的着色器进行渲染。例如:若某个子网格对应区域位于近处虚拟海平面,则可采用较为复杂的渲染方法进行渲染,以使得海面的细节处理更好,若某个子网格对应区域位于远处虚拟海平面,便无需采用具有精细细节处理的渲染方法进行渲染,此时可以采用较为简单的渲染方法对其进行渲染,以减轻了像素填充的压力,减少性能的占用,具体可以根据用户需要设计,本申请在此不做任何限制。
S102:根据透视空间中参考点的位置,确定参考点在世界空间的投影点的位置。
其中,变换矩阵可以为将透视空间的点变换至世界空间的变换矩阵,由于虚拟摄像机位于世界空间,所以无法根据直接透视空间的参考点确定该参考点与虚拟摄像机之间的位置关系,从而需要根据预设的变化矩阵,将透视空间的参考点变换至世界空间后,才可以在世界空间内,确定该参考点与虚拟摄像机之间的位置关系。
S103:根据投影点的位置和虚拟摄像机的位置,确定投影点与虚拟摄像机之间的距离。
其中,虚拟摄像机为用于确定游戏画面的摄像机,根据投影点的位置坐标和虚拟摄像机的位置坐标,计算投影点与虚拟摄像机之间的距离,也可以直接获取投影点与虚拟摄像机之间的连线,该连线长度即为投影点与虚拟摄像机之间的距离,具体距离获取的方式可以根据用户需要设计,并不以上述实施例给出的为限。
可选地,在本申请的一个实施例中,投影点与虚拟摄像机之间的距离可以通过下述公式计算得到:Dlod=length(Pintersect-Pcamera),其中,Dlod为投影点与虚拟摄像机之间的距离,Pintersect为投影点的位置坐标,Pcamera为虚拟摄像机的位置坐标。
S104:根据距离确定对虚拟流体表面上每个子网格对应的渲染参数。
可选地,在一种实现方式中,例如可以根据距离,确定每个子网格对应的渲染级别,继而根据该每个子网格对应的渲染级别,对虚拟流体表面上每个子网格对应区域进行渲染。例如:距离在较近在第一范围内的子网格采用较为复杂的第一级别的渲染方法进行渲染,距离较远处于第二范围内的子网格采用较为简单的第二级别的渲染方法进行渲染,距离更远处于第三范围内的子网格采用更为简单的第三界级别的渲染方法进行渲染,以使得根据距离的远近确定不同复杂度的渲染方法,使得对于一些较远的子网格,不再使用复杂的渲染方法也可以达到较好的视觉效果,在保证用户视觉体验的情况下,减少渲染对性能的占用,其中,具体根据距离对子网格进行渲染的方式可以根据用户需要设计,并不以上述实施例给出的为限。
采用本申请提供虚拟流体表面的渲染方法,确定待渲染的虚拟流体表面的投影网格中每个子网格内的参考点后,根据透视空间中参考点的位置,采用预设的变换矩阵,确定参考点在世界空间的投影点,并确定世界空间中投影点和虚拟摄像机之间的距离,随后根据距离对虚拟流体表面上每个子网格对应区域进行渲染。该方法中,基于每个子网格内的参考点在世界空间内的投影点,以及虚拟摄像机之间的距离,对虚拟流体表面上该每个子网格对应的区域进行渲染,不同子网格的参考点在世界空间的投影点不同,那么其与虚拟摄像机之间的距离便不同,即对虚拟流体表面不同子网格对应区域进行渲染所采用的渲染方法不同的,如此,便可避免针对虚拟流体表面的每一处均进行相同的渲染,可有效避免较远距离的位置进行渲染导致的像素填充压力,从而有效避免不必要的性能下降。
可选的,在上述实施例的基础上,本申请实施例还可提供一种虚拟流体表面的渲染方法,如下结合附图进行说明。图2为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图,图3为缩放矩阵的生成步骤的示意图,如图2所示,S102之前,该方法还包括:
S105:确定虚拟摄像机的视景体在世界空间中的预设基准高度的虚拟流体表面上的投射点。
其中,视景体(viewing frustum)又称视体、视见平截头体、视锥,是三维世界中在屏幕上可见的区域,可用于表示虚拟摄像机的视野范围。视景体的形状可由虚拟摄像机的镜头决定,其例如可以为平截头体。该预设基准高例如可以为虚拟流体表面的预设高度,如预设基准海平面高度。
视景体在预设基准高度的虚拟流体表面上的投射点,即为视景体的各顶点在预设基准高度的海平面上的投射点。视景体的顶点个数是根据摄像机的仰角、俯角等参数决定的,在本申请的一个实施例中,视景体为平截头体,所以视景体的顶点个数为8个。
可选地,结合如图3中的a,b,在本申请的一个实施例中,S105可包括:分别确定视景体的边缘线段,与第一预设高度和第二预设高度的虚拟流体表面上的第一交点和第二交点。
其中,视景体的边缘线段是根据视景体的各顶点生成的,第一预设高度高于预设基准高度,第二预设高度低于预设基准高度。
将第一交点和第二交点均投射到预设基准高度的虚拟流体表面上,得到视景体在预设基准高度的虚拟流体表面上的投射点。
结合图3中的c,S106:将投射点变换到透视空间,得到透视空间的投射点。
结合图3中的d,S107:根据透视空间的投射点在透视空间的坐标轴上的距离,构建缩放矩阵。
其中,缩放矩阵用于对透视空间内的各投射点进行缩放。
其中,透视空间的坐标轴包括:虚拟投射器的投射方向,和投射方向的垂直方向。
可选地,在本申请的一个实施例中,默认:虚拟投射器的投射方向为x轴,投射方向的垂直方向为y轴。
可选地,在本申请的一个实施例中,对于子网格的划分方式可以为,对投影网格延y轴方向,按照预设间隔均匀划分为多个子网格。
S108:根据虚拟投射器的透视矩阵的逆矩阵,以及缩放矩阵,确定变换矩阵。
可选地,在本申请的一个实施例中,变换矩阵的计算方式可以为:虚拟投射器的透视矩阵的逆矩阵与缩放矩阵的乘积,即MinvprojGrid=Minvproj*Mrange,其中,MinvprojGrid为变换矩阵,Minvproj为虚拟投射器的透视矩阵的逆矩阵,Mrange为缩放矩阵。
对应地,S107可包括:根据透视空间的投射点在透视空间的坐标轴上的最大距离和最小距离,构建缩放矩阵。即将最大距离和最小距离,转换为预设范围内的距离值;根据转换后的预设范围内的距离值,构建缩放矩阵。在本申请的一个实施例中,预设范围为[0,1]的范围。
其中,缩放矩阵的构建可以如下所示:
透视空间上的各点与缩放矩阵相乘后,可以完成透视空间的缩放,使得每个子网格均落在视野范围内,减少无效的绘制。
可选的,在上述实施例的基础上,本申请实施例还可提供一种虚拟流体表面的渲染方法,如下结合附图进行说明。图4为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图,如图4所示,在图1的基础上,S102可包括:
S109:根据透视空间中参考点的位置,采用变换矩阵,确定世界空间中参考点的位置。
其中,将参考点的位置坐标与变换矩阵相乘后,即可得到世界空间中该参考点的位置。
可选地,在本申请的一个实施例中,可以采用下述公式对参考点的位置进行计算:Pword=MinvprojGrid*Pref,其中,Pword为世界中间中该参考点的位置,MinvprojGrid为变换矩阵,Pref为透视空间中参考点的位置。
S110:确定世界空间中参考点的位置,与虚拟摄像机位置之间的射线。
在确定参考点Pword的位置,以及虚拟摄像机位置的情况下,便可基于参考点Pword的位置,以及虚拟摄像机位置,构建从该参考点至该虚拟摄像机的射线。
S111:确定射线与虚拟流体表面的交点为参考点在世界空间的投影点。
在构建射线的情况下,便可确定该射线与该虚拟流体表面的交点为该参考点在世界空间的投影点Pintersect。随后即可根据参考点在世界空间的投影点Pintersect与虚拟摄像机的位置,计算投影点与虚拟摄像机之间的距离Dlod。
确定距离Dlod后,即可根据投影点Pintersect与虚拟摄像机之间的距离Dlod,确定各子网格对应的渲染级别,从而达到不同子网格根据对应的渲染级别进行渲染,减小像素填充压力,从而减少性能占用的效果。
可选的,在上述实施例的基础上,本申请实施例还可提供一种虚拟流体表面的渲染方法,如下结合附图进行说明。图5为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图,如图5所示,S104可包括:
S112:根据距离,确定每个子网格的多细节层级LOD。
可选地,在本申请的一个实施例中,根据距离Dlod确定各子网格的多细节层级(Levels of Detail,LOD),可以根据用户需要设计距离与多细节层级LOD之间的对应关系,例如50米以内各子网格对应的LOD的级别为0,即采用LOD0对对应的各子网格进行渲染,100米以内各子网格对应的LOD的级别为1,即采用LOD1对对应的各子网格进行渲染。
S113:采用每个子网格的LOD对应的着色器,对每个子网格对应区域进行渲染。
可选地,在一种实现方式中,例如可以根据距离,确定每个子网格对应的渲染级别,继而根据该每个子网格对应的渲染级别选择对应的着色器,对虚拟流体表面上每个子网格对应区域进行渲染。例如:距离在较近在第一范围内的子网格采用较为复杂的第一级别的着色器进行渲染,距离较远处于第二范围内的子网格采用较为简单的第二级别的着色器进行渲染,以使得根据距离的远近确定不同复杂度的着色器,使得对于一些较远的子网格,不再使用复杂的着色器也可以达到较好的视觉效果,在保证用户视觉体验的情况下,减少渲染对性能的占用,其中,具体根据距离对子网格进行渲染的方式可以根据用户需要设计,并不以上述实施例给出的为限。
可选的,在上述实施例的基础上,本申请实施例还可提供一种虚拟流体表面的渲染方法,如下结合附图进行说明。图6为本申请另一实施例提供的虚拟流体表面的渲染方法的流程示意图,如图6所示,S113之前,该方法还包括:
S114:根据最大波动距离,以及每个子网格中各像素点与虚拟摄像机之间的实际距离,确定各像素点的缩放系数。
其中,最大波动距离为用户希望虚拟流体表面停止波动的距离,例如,以虚拟流体表面为海面进行说明,在实际游戏场景中,远处的海面是否有波浪一般是无法察觉的,所以开发者希望海面波浪可以由近至远逐步消退,因此需要设置最大波动距离,也可以成为波动阈值距离,缩放系数用于消退虚拟流体表面的跳动感。
在本申请的一个实施例中,缩放系数的计算公式如下:
S=1-saturate(DistancetoCamera/Dlodmax)
其中,S为缩放系数,DistancetoCamera为每个子网格中各像素点与虚拟摄像机之间的实际距离,Dlodmax为最大波动距离,saturate为saturate函数saturate(x)的作用是如果x取值小于0,则返回值为0,如果x取值大于1,则返回值为1。若x在0到1之间,则直接返回x的值。
S115:根据缩放系数,以及预设波动位移,确定各像素点对应的波动位移。
由上述缩放系数的计算公式可得,缩放系数根据各像素点与虚拟摄像机之间的实际距离逐步变化,随着实际距离的增大,缩放系数逐渐减小,趋近于0,直至当前子网格距离大于最大波动距离,此时的缩放系数为0,即该像素点对应的波动位移也为0。则经过缩放系数处理过的预设波动位移,可以使得虚拟流体表面的波动位移随着距离的增大逐渐减小,并且大于最大波动距离的远处虚拟流体表面没有波动位移,因此大大减轻了虚拟流体表面的视觉跳动感,提高了用户的视觉体验。
对应地,S113可包括:
S116:根据各像素点对应的波动位移,采用每个子网格的LOD对应的着色器,对每个子网格对应区域进行渲染。
可选地,在本申请的一个实施例中,每个子网格内的参考点选取规则可以为:确定每个子网格中下半部分的中点为参考点,下半部分为虚拟流体表面以下的部分。
采用本申请提供的虚拟流体表面的渲染方法,确定待渲染的虚拟流体表面的投影网格中每个子网格内的参考点后,根据透视空间中参考点的位置,采用预设的变换矩阵,确定参考点在世界空间的投影点,并确定世界空间中投影点和虚拟摄像机之间的距离,并根据距离确定不同子网格对应的LOD对应的着色器,随后采用对应的着色器对虚拟流体表面上每个子网格对应区域进行渲染,由于渲染是根据距离确定的,所以对于与虚拟摄像机距离不同的子网格,采用的着色器不同,从而减轻了像素填充的压力,避免了流体表面的每一处均采用同样的着色器进行渲染,使得较远距离的流体表面也采用了复杂的着色器进行渲染,导致的像素填充压力,造成性能下降的问题。并且通过缩放系数对预设波动位移进行缩放,使得海面的波动位移可以随着距离的增大逐渐消退,从而减轻海面的跳动感,使得用户有较好的视觉体验。
下述结合附图对本申请所提供的虚拟流体表面的渲染装置进行解释说明,该虚拟流体表面的渲染装置可执行上述图1-图6任一虚拟流体表面的渲染方法,其具体实现以及有益效果参照上述,如下不再赘述。
图7为本申请一实施例提供的虚拟流体表面的渲染装置的结构示意图,如图7所示,该装置包括:确定模块201和渲染模块202,其中:
确定模块201,用于确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点,其中,投影网格为虚拟流体表面在虚拟投射器的透视空间形成的网格。
确定模块201,还用于根据透视空间中参考点的位置,确定参考点在世界空间的投影点。
确定模块201,还用于根据投影点的位置和虚拟摄像机的位置,确定投影点与虚拟摄像机之间的距离,其中,所述虚拟摄像机为用于确定游戏画面的摄像机。
渲染模块202,用于根据距离确定对虚拟流体表面上每个子网格对应的渲染参数。
图8为本申请一实施例提供的虚拟流体表面的渲染装置的结构示意图,如图8所示,该装置还包括:变换模块203和构建模块204,其中:
确定模块201,还用于确定虚拟摄像机的视景体在世界空间中的预设基准高度的虚拟流体表面上的投射点。
变换模块203,用于将投射点变换到透视空间,得到透视空间的投射点。
构建模块204,用于根据透视空间的投射点在透视空间的坐标轴上的距离,构建缩放矩阵;其中,透视空间的坐标轴包括:虚拟投射器的投射方向,和投射方向的垂直方向。
确定模块201,还用于根据虚拟投射器的透视矩阵的逆矩阵,以及缩放矩阵,确定变换矩阵。
可选地,确定模块201,还用于分别确定视景体的边缘线段,与第一预设高度和第二预设高度的虚拟流体表面上的第一交点和第二交点;其中,第一预设高度高于预设基准高度,第二预设高度低于预设基准高度。
将第一交点和第二交点均投射到预设基准高度的虚拟流体表面上,得到视景体在预设基准高度的虚拟流体表面上的投射点。
可选地,构建模块204,还用于根据透视空间的投射点在透视空间的坐标轴上的最大距离和最小距离,构建缩放矩阵。
可选地,构建模块204,还用于将最大距离和最小距离,转换为预设范围内的距离值;根据转换后的预设范围内的距离值,构建缩放矩阵。
可选地,确定模块201,还用于根据透视空间中参考点的位置,采用变换矩阵,确定世界空间中参考点的位置。
确定模块201,还用于确定世界空间中参考点的位置,与虚拟摄像机位置之间的射线。
确定模块201,还用于确定射线与虚拟流体表面的交点为参考点在世界空间的投影点。
可选地,确定模块201,还用于根据距离,确定每个子网格的多细节层级LOD。
渲染模块202,还用于采用每个子网格的LOD对应的着色器,对每个子网格对应区域进行渲染。
可选地,确定模块201,还用于根据最大波动,以及每个子网格中各像素点与虚拟摄像机之间的实际距离,确定各像素点的缩放系数。
确定模块201,还用于根据缩放系数,以及预设波动位移,确定各像素点对应的波动位移。
渲染模块202,还用于根据各像素点对应的波动位移,采用每个子网格的LOD对应的着色器,对每个子网格对应区域进行渲染。
可选地,确定模块201,还用于确定每个子网格中下半部分的中点为参考点,下半部分为虚拟流体表面以下的部分。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图9为本申请一实施例提供的虚拟流体表面的渲染设备的结构示意图,该虚拟流体表面的渲染设备可以集成于终端设备、终端设备的芯片,又或者,也可以为服务器或者服务器的芯片。
该虚拟流体表面的渲染设备包括:处理器501、存储介质502和总线503。
处理器501用于存储程序,处理器501调用存储介质502存储的程序,以执行上述图1-图6对应的方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本申请还提供一种程序产品,例如存储介质,该存储介质上存储有计算机程序,包括程序,该程序在被处理器运行时执行上述方法对应的实施例。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (12)
1.一种虚拟流体表面的渲染方法,其特征在于,所述方法包括:
确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点,其中,所述投影网格为所述虚拟流体表面在虚拟投射器的透视空间形成的网格;
根据透视空间中所述参考点的位置,确定所述参考点在世界空间的投影点的位置;
根据所述投影点的位置和虚拟摄像机的位置,确定所述投影点与所述虚拟摄像机之间的距离,其中,所述虚拟摄像机为用于确定游戏画面的摄像机;
根据所述距离确定对所述虚拟流体表面上所述每个子网格对应的渲染参数。
2.如权利要求1所述的方法,其特征在于,所述根据透视空间中所述参考点的位置,采用预设的变换矩阵,确定所述参考点在世界空间的投影点的位置之前,所述方法还包括:
确定所述虚拟摄像机的视景体在世界空间中的预设基准高度的所述虚拟流体表面上的投射点;
将所述投射点变换到所述透视空间,得到所述透视空间的投射点;
根据所述透视空间的投射点在所述透视空间的坐标轴上的距离,构建缩放矩阵;其中,所述透视空间的坐标轴包括:所述虚拟投射器的投射方向,和所述投射方向的垂直方向;
根据所述虚拟投射器的透视矩阵的逆矩阵,以及所述缩放矩阵,确定所述变换矩阵。
3.如权利要求2所述的方法,其特征在于,所述确定所述虚拟摄像机的视景体在预设基准高度的所述虚拟流体表面上的投射点,包括:
分别确定所述视景体的边缘线段,与第一预设高度和第二预设高度的所述虚拟流体表面上的第一交点和第二交点;其中,所述第一预设高度高于所述预设基准高度,所述第二预设高度低于所述预设基准高度;
将所述第一交点和所述第二交点均投射到所述预设基准高度的所述虚拟流体表面上,得到所述视景体在所述预设基准高度的所述虚拟流体表面上的投射点。
4.如权利要求2所述的方法,其特征在于,所述根据所述透视空间的投射点在所述透视空间的坐标轴上的距离,构建缩放矩阵包括:
根据所述透视空间的投射点在所述透视空间的坐标轴上的最大距离和最小距离,构建所述缩放矩阵。
5.如权利要求4所述的方法,其特征在于,所述根据所述透视空间的投射点在所述透视空间的坐标轴上的最大距离和最小距离,构建所述缩放矩阵,包括:
将所述最大距离和所述最小距离,转换为预设范围内的距离值;
根据转换后的所述预设范围内的距离值,构建所述缩放矩阵。
6.如权利要求1所述的方法,其特征在于,所述根据透视空间中所述参考点的位置,采用预设的变换矩阵,确定所述参考点在世界空间的投影点的位置,包括:
根据透视空间中所述参考点的位置,采用所述变换矩阵,确定世界空间中所述参考点的位置;
确定世界空间中所述参考点的位置,与所述虚拟摄像机位置之间的射线;
确定所述射线与所述虚拟流体表面的交点的位置为所述参考点在世界空间的投影点的位置。
7.如权利要求1-6任一项所述的方法,其特征在于,所述根据所述距离,对所述虚拟流体表面上所述每个子网格对应区域进行渲染,包括:
根据所述距离,确定所述每个子网格的多细节层级LOD;
采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
8.如权利要求7所述的方法,其特征在于,所述采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染之前,所述方法还包括:
根据最大波动距离,以及所述每个子网格中各像素点与所述虚拟摄像机之间的实际距离,确定所述各像素点的缩放系数;
根据所述缩放系数,以及预设波动位移,确定所述各像素点对应的波动位移;
所述采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染,包括:
根据所述各像素点对应的波动位移,采用所述每个子网格的LOD对应的着色器,对所述每个子网格对应区域进行渲染。
9.如权利要求1-6中任一所述的方法,其特征在于,所述确定待渲染的虚拟流体表面的投影网格中每个子网格内的参考点包括:
确定所述每个子网格中下半部分的中点为所述参考点,所述下半部分为所述虚拟流体表面以下的部分。
10.一种虚拟流体表面的渲染装置,其特征在于,所述装置包括:确定模块和渲染模块,其中:
所述确定模块,用于确定待渲染的虚拟流体表面的投影网格中每个子网格对应的参考点,其中,所述投影网格为所述虚拟流体表面在虚拟投射器的透视空间形成的网格;
所述确定模块,还用于根据透视空间中所述参考点的位置,确定所述参考点在世界空间的投影点;
所述确定模块,还用于根据所述投影点的位置和虚拟摄像机的位置,确定所述投影点与所述虚拟摄像机的位置之间的距离,其中,所述虚拟摄像机为用于确定游戏画面的摄像机;
所述渲染模块,用于根据所述距离确定对所述虚拟流体表面上所述每个子网格对应的渲染参数。
11.一种虚拟流体表面的渲染设备,其特征在于,所述设备包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当虚拟流体表面的渲染设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述权利要求1-9任一项所述的方法。
12.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404826.XA CN111598986B (zh) | 2020-05-13 | 2020-05-13 | 虚拟流体表面的渲染方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010404826.XA CN111598986B (zh) | 2020-05-13 | 2020-05-13 | 虚拟流体表面的渲染方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111598986A CN111598986A (zh) | 2020-08-28 |
CN111598986B true CN111598986B (zh) | 2023-09-26 |
Family
ID=72183660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010404826.XA Active CN111598986B (zh) | 2020-05-13 | 2020-05-13 | 虚拟流体表面的渲染方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111598986B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112509131B (zh) * | 2020-11-20 | 2022-12-06 | 上海莉莉丝网络科技有限公司 | 游戏地图内地图区域边界的渲染方法、系统及计算机可读存储介质 |
CN112370783A (zh) * | 2020-12-02 | 2021-02-19 | 网易(杭州)网络有限公司 | 虚拟对象渲染方法、装置、计算机设备和存储介质 |
CN112541968B (zh) * | 2020-12-17 | 2022-11-22 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于网格的三维效果增强可视化方法 |
CN113096227B (zh) * | 2021-04-01 | 2023-06-13 | 网易(杭州)网络有限公司 | 亮片的显示方法和装置 |
CN114092621A (zh) * | 2021-11-26 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 基于液体面的渲染方法、装置、设备、介质及程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105894563A (zh) * | 2016-04-25 | 2016-08-24 | 中国电子科技集团公司第二十八研究所 | 一种数字地球上的全球海洋效果模拟方法 |
CN110400372A (zh) * | 2019-08-07 | 2019-11-01 | 网易(杭州)网络有限公司 | 一种图像处理的方法及装置、电子设备、存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5871345B2 (ja) * | 2012-07-27 | 2016-03-01 | Necソリューションイノベータ株式会社 | 3次元ユーザインタフェース装置及び3次元操作方法 |
-
2020
- 2020-05-13 CN CN202010404826.XA patent/CN111598986B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105894563A (zh) * | 2016-04-25 | 2016-08-24 | 中国电子科技集团公司第二十八研究所 | 一种数字地球上的全球海洋效果模拟方法 |
CN110400372A (zh) * | 2019-08-07 | 2019-11-01 | 网易(杭州)网络有限公司 | 一种图像处理的方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111598986A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111598986B (zh) | 虚拟流体表面的渲染方法、装置、设备及存储介质 | |
CN111957045B (zh) | 地形形变方法、装置、设备及存储介质 | |
US10460507B2 (en) | Rendering a 3-D scene using normal offset smoothing | |
US20170186219A1 (en) | Method for 360-degree panoramic display, display module and mobile terminal | |
EP4213102A1 (en) | Rendering method and apparatus, and device | |
CN112184873B (zh) | 分形图形创建方法、装置、电子设备和存储介质 | |
CN112468796A (zh) | 注视点生成方法、系统及设备 | |
CN113643414A (zh) | 一种三维图像生成方法、装置、电子设备及存储介质 | |
JP2006146338A (ja) | エンタテインメント装置、オブジェクト表示装置、オブジェクト表示方法、プログラム、およびキャラクタ表示方法 | |
KR20230043921A (ko) | 품질 평가를 위한 이미지 기반 샘플링 메트릭 | |
CN113101666B (zh) | 游戏角色模型方法、装置、计算机设备及存储介质 | |
CN115619986B (zh) | 场景漫游方法、装置、设备和介质 | |
US10754498B2 (en) | Hybrid image rendering system | |
CN108205820B (zh) | 平面的重建方法、融合方法、装置、设备及存储介质 | |
CN114241096A (zh) | 三维模型生成方法、装置、设备及存储介质 | |
US20230206567A1 (en) | Geometry-aware augmented reality effects with real-time depth map | |
CN116206035B (zh) | 人脸重建方法、装置、电子设备以及存储介质 | |
CN115761123B (zh) | 三维模型处理方法、装置、电子设备以及存储介质 | |
WO2023029424A1 (zh) | 一种对应用进行渲染的方法及相关装置 | |
WO2024109006A1 (zh) | 一种光源剔除方法及渲染引擎 | |
CN117205554A (zh) | 球形虚拟场景的地形加载方法、装置、介质与电子设备 | |
CN114581588A (zh) | 渲染方法、设备以及系统 | |
CN116457837A (zh) | 基于图像的质量评估采样度量 | |
CN117676201A (zh) | 视频生成方法、装置、电子设备及计算机可读存储介质 | |
CN116889725A (zh) | 游戏信息生成方法、装置、设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |