水体渲染方法、装置和电子设备与流程

文档序号:33035646发布日期:2023-01-24 19:42阅读:30来源:国知局
水体渲染方法、装置和电子设备与流程

1.本发明涉及模型渲染技术领域,尤其是涉及一种水体渲染方法、装置和电子设备。


背景技术:

2.在游戏场景或其他虚拟场景中,地形系统常需要渲染水体,例如,湖泊、河流、海洋等。相关技术中,水体作为地形系统中的一部分,需要对地形系统进行整体渲染得到;如果对水体进行增删或修改,则需要对地形系统进行修改,工作量较大;同时,水体的模型面数较多,在终端设备上渲染显示水体时,运算量较大,具有较大的性能开销。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种水体渲染方法、装置和电子设备,以降低渲染的计算量,节约性能开销,对于资源有限的移动终端更加友好。
4.第一方面,本发明实施例提供了一种水体渲染方法,方法包括:获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
5.上述地形模型包括多个;对于处于目标水体的水体边缘的地形模型,地形模型包括深水区域和过渡区域;深水区域中模型面的顶点色为预设的第一固定值;过渡区域中,距离深水区域越远的模型面,模型面的顶点色与第一固定值的差值越大。
6.上述对于处于目标水体的水体边缘的地形模型,地形模型还包括水岸区域;水岸区域中模型面的顶点色为预设的第二固定值;第二固定值与第一固定值不同;过渡区域中,距离水岸区域越近的模型面,模型面的顶点色与第二固定值的差值越小。
7.上述获取用于渲染目标水体的地形模型的步骤之前,方法还包括:在初始地形模型上设置区域分界线,以通过区域分界线将初始地形模型划分为多个水体区域;基于水体区域的边缘线,生成水体区域的模型面;其中,水体区域的边缘线包括:包围水体区域的区域分界线和/或初始地形模型的模型边缘线;根据水体区域的种类,设置水体区域内模型面的顶点色,得到用于渲染目标水体的地形模型。
8.上述基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向的步骤,包括:基于模型位置的位置参数、预设的时间参数
以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果;基于第一采样结果,确定待渲染像素的法线方向。
9.上述第一配置参数包括初始值参数和坐标值参数;基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,包括:基于模型位置的位置坐标,生成第一位置向量;将初始值参数与第一位置向量的乘积作为第一中间结果,将时间参数和坐标值参数的乘积作为第二中间结果;将第一中间结果和第二中间结果的和确定为第一采样坐标;按照第一采样坐标对法线贴图进行采样,得到第一采样结果。
10.上述第一配置参数还包括波幅参数;基于第一采样结果,确定待渲染像素的法线方向的步骤,包括:从第一采样结果中提取水平面方向的法线分量;基于提取出的法线分量与波幅参数的乘积,确定待渲染像素的法线方向。
11.上述第一配置参数包括多组;多组第一配置参数之间的参数值不同;基于第一采样结果,确定待渲染像素的法线方向的步骤,包括:针对每组第一配置参数,执行基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,得到多个第一采样结果;基于多个第一采样结果,确定待渲染像素的法线方向。
12.上述对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数的步骤,包括:对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采样,得到第二采样结果;基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数;基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数。
13.上述对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采样,得到第二采样结果的步骤,包括:对于属于过渡区域的模型位置,基于模型位置的位置坐标,生成第二位置向量;将预设的第二配置参数与时间参数的乘积,与第二位置向量相加,得到相加结果;将相加结果与预设的第三配置参数的乘积,确定为第二采样坐标;按照第二采样坐标对噪声贴图进行采样,得到第二采样结果。
14.上述基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数的步骤,包括:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数;对第一通道参数进行开平方运算,得到第二通道参数;基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数。
15.上述基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数的步骤,包括:从第二采样结果中提取第二指定通道的通道采样值;将通道采样值的第四配置参数次幂与第二通道参数的乘积,作为第三中间结果;将第五配置参数与时间参数的乘积作为第四中间结果;计算第三中间结果与第四中间结果的差值,将差值的正弦值的平方值乘以第一通道参数,得到泡沫控制参数。
16.上述基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数的步骤,包括:基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数;将泡沫控制参数作为插值权重,对水体颜色参数和泡沫颜色参数进行插值处理,得到第二颜色参数。
17.上述基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数的步骤,包括:
将第一通道参数的第六配置参数次幂作为插值权重,对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数;其中,第一通道参数通过下述方式得到:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数。
18.上述基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染的步骤,包括:基于模型位置对应的顶点色,确定渲染透明度参数;基于渲染透明度参数、第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染。
19.第二方面,本发明实施例提供了一种水体渲染装置,装置包括:模型获取模块,用于获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;法线方向确定模块,用于确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;第一渲染模块,用于对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;第二渲染模块,用于对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
20.第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述水体渲染方法。
21.第四方面,本发明实施例提供了一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述水体渲染方法。
22.本发明实施例带来了以下有益效果:
23.上述水体渲染方法、装置和电子设备,获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
24.该方式中,预先将地形模型划分为多个水体区域,不同的水体区域采用不同的算
法计算渲染参数,进而完成水体的渲染。该方式无需修改地形系统的整体参数,通过贴片的方式在地形系统上渲染水体,渲染的计算量较低,节约了性能开销,对于资源有限的移动终端更加友好,有利于在移动终端上进行渲染。
25.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
26.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
27.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1为本发明实施例提供的一种水体渲染方法的流程图;
29.图2为本发明实施例提供的一种区域分界线的示意图;
30.图3为本发明实施例提供的一种模型面的示意图;
31.图4为本发明实施例提供的一种水体渲染装置的结构示意图;
32.图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
33.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.下面介绍本实施例涉及的专业术语:
35.1、pixelshader
36.shader是专门用来渲染图形的一段程序,通过shader,可以自定义显卡渲染对象的方式,以得到想要的效果。而pixelshader则是shader中负责指示计算机如何进行像素值计算的一种shader。
37.2、uv
38.在建模过程中,模型表面手动或自动生成uv坐标,通过uv映射将3d对象表面的多边形与纹理贴图相应uv坐标上的点对应起来。uv映射是将2d图像投影到3d模型表面以进行纹理映射的3d建模过程。uv一般指uv坐标,即uv映射过程生成的3d对象表面的多边形与纹理贴图相应坐标。
39.3、lerp
40.lerp是一种渲染常用指令函数,lerp(a,b,c)函数等价于a*(1-c)+b*c。
41.4、mesh
42.mesh由面和顶点组成,在这里指计算机图形学的渲染对象。
43.5、opacity
44.opacity在本发明中指透明渲染对象的一个参数,范围为[0,1],当opacity为1时即为完全不透明,为0时则为完全透明。
[0045]
在虚拟场景的地形系统中,湖泊、河流、海洋等水体,属于地形系统中的一部分,地形系统中的内容通过生成相应形态mesh的方式表现。如果想要在地形系统中渲染一个水体,则需要修改地形系统,工作量较大;另外,将水体作为地形系统一部分的方式,通过地形的mesh实现水体渲染,符合物理法则,但会使用较多的模型面渲染水体,在终端设备上渲染显示水体时,运算量较大,具有较大的性能开销,对于移动终端不友好。
[0046]
另外,还可以通过摆件的方式在地形系统中增加水体,但由于水体一般是低于地面的,通过摆件的方式渲染水体,难以达到理想的视觉效果。
[0047]
基于上述,本发明实施例提供的一种水体渲染方法、装置和电子设备,该技术可以应用于slg(simulation game,策略类游戏)游戏的游戏场景,也可以应用于其他类型游戏的游戏场景,以及其他虚拟场景中。
[0048]
为便于对本实施例进行理解,首先对本发明实施例所公开的一种水体渲染方法进行详细介绍,如图1所示,该水体渲染方法包括如下步骤:
[0049]
步骤s102,获取用于渲染目标水体的地形模型;其中,该地形模型中的模型面设置有顶点色;该顶点色用于表征模型面在目标水体中所属的水体区域;该水体区域包括深水区域和过渡区域;该过渡区域中模型面的顶点色沿着指定方向逐渐变化;
[0050]
在渲染目标水体之前,需要制作用于渲染目标水体的地形模型,即资产制作过程。目标水体可以是湖泊、河流、海洋等。地形模型可以为虚拟场景的地形系统中的部分地形模型,即,需要渲染目标水体的地形模型。在slg游戏中,地形系统被划分为多个地图格模型,用于渲染目标水体的地形模型通常会包括一个或多个地图格模型。
[0051]
为了使渲染得到的目标水体具有较好的视觉效果,需要将目标水体划分为多个水体区域,不同的水体区域采用不同的方式渲染。该步骤中,水体区域包括深水区域和过渡区域,在其他方式中,还可以包括水岸区域。其中,不同的水体区域的视觉表现不同;例如,深水区域的水体颜色较深,会完全遮盖地形颜色,同时,会有波浪效果;过渡区域的水体颜色较浅,会产生泡沫效果;水岸区域中水体颜色很浅,甚至没有水体颜色,主要呈现地形颜色。
[0052]
在制作地形模型的过程中,为了划分水体区域,可以通过顶点色区分模型面所属的水体区域。在实际实现时,可以将地形模型通过边界线划分为多个水体区域,针对每个水体区域,生成模型面,并设置模型面的顶点色。
[0053]
对于深水区域,深水区域中各个位置的渲染效果相同,因此,深水区域中的顶点色可以设置一个固定值。对于过渡区域,可以理解为水体从深水区域向水岸区域过渡的区域,过渡区域的水体颜色等渲染效果也需要逐渐变化,为了实现逐渐变化的渲染效果,过渡区域的顶点色通常也会逐渐变化,上述指定方向可以为从深水区域指向水岸区域的方向,例如,顶点色从深水区域方向向水岸区域方向逐渐变化,顶点色的色值可以是逐渐变大或逐渐变小。
[0054]
步骤s104,确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,该法线方向用于控制渲染波浪效果;
[0055]
虚拟相机在虚拟场景中拍摄地形模型,得到场景画面,在该过程中,需要根据虚拟相机在虚拟场景中的位置、朝向等参数,确定场景画面中每个待渲染像素对应的模型位置,即待渲染像素对应虚拟场景的三维空间的一个空间坐标。
[0056]
待渲染像素的法线方向主要用于控制渲染水体的波浪效果;水体在平静状态下,法线方向与水体平面垂直,水体在具有波浪时,波浪位置的法线方向与水体平面为非垂直状态。通过法线方向,可以一定程度的控制波浪的宽度、高度、密集程度等参数。
[0057]
在实际实现时,法线贴图中保存了多种法线方向,每种法线方向在法线贴图中保存的位置不同。基于模型位置的位置参数和时间参数,确定法线贴图的采样位置,从而得到对应的法线方向。其中,时间参数会随着时间动态变化,也具有一定的周期,在采样法线贴图时参考时间参数,可以模拟波浪的动态效果,以及波浪的周期性变化的效果。
[0058]
针对一个待渲染像素,可以对法线贴图进行一次采样,此时,会得到该待渲染像素的单一波浪的视觉效果,也可以对法线贴图进行多次采样,此时,会得到该待渲染像素的多个波浪叠加的视觉效果。采样次数可以根据目标水体的实际视觉表现需求确定。
[0059]
步骤s106,对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;
[0060]
对于深水区域,其水体颜色相对统一,例如,深蓝色、湖绿色等。因而,通过法线方向和光照方向,可以确定待渲染像素的光影效果,通过预设的第一颜色参数,可以确定待渲染像素的色彩效果,从而可以对待渲染像素完成渲染。
[0061]
步骤s108,对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;该第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0062]
对于过渡区域,越靠近水岸的位置,其水体颜色越浅;因此,水体颜色需要根据模型位置的变化而变化;同时,过渡区域中不仅包括波浪效果,还具有泡沫效果,该泡沫效果同时具有动态性和周期性;因此,在确定待渲染像素的第二颜色参数中,参考了模型位置的顶点色和时间参数。其中,过渡区域中的顶点色具有逐渐变化的特点,从而控制过渡区域中的水体颜色也随着模型位置逐渐变化,另外,时间参数具有动态性和随机性,可以控制泡沫效果的动态周期性变化;因此,上述第二颜色参数在生成时考虑了水体颜色的逐渐变化特性,以及泡沫效果的动态周期性变化的特性,基于此,第二颜色参数可以用于控制待渲染像素的水体颜色和泡沫效果。
[0063]
进一步的,通过法线方向和光照方向,可以确定待渲染像素的光影效果,通过第二颜色参数,可以确定待渲染像素的色彩效果,从而可以对待渲染像素完成渲染。
[0064]
需要说明的是,上述水体渲染方式是在地形系统之上进行渲染的,水体不属于地形系统的一部分,因而无需通过地形系统的mesh网格渲染表现。
[0065]
上述水体渲染方法,获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;
对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0066]
该方式中,预先将地形模型划分为多个水体区域,不同的水体区域采用不同的算法计算渲染参数,进而完成水体的渲染。该方式无需修改地形系统的整体参数,通过贴片的方式在地形系统上渲染水体,渲染的计算量较低,节约了性能开销,对于资源有限的移动终端更加友好,有利于在移动终端上进行渲染。
[0067]
进一步地,对于slg游戏或者其他视角固定的游戏,通过本实施例的水体渲染方式,可以达到通过地形系统的mesh渲染方式相似的视觉效果,同时,还大大降低了性能开销和制作成本。
[0068]
下述实施例继续描述用于渲染目标水体的地形模型的资产制作方式。
[0069]
具体的,地形模型包括多个;对于处于目标水体的水体边缘的地形模型,地形模型包括深水区域和过渡区域;深水区域中模型面的顶点色为预设的第一固定值;过渡区域中,距离深水区域越远的模型面,模型面的顶点色与第一固定值的差值越大。
[0070]
在一些虚拟场景中,地形系统被划分为多个特定形状的地形模型,例如,六边形。对于较大的目标水体,可能会占据多个地形模型。多个地形模型中,部分地形模型可能处在目标水体的中心位置,此时,整个地形模型均是深水区域,则按照本实施例中深水区域的待渲染像素的渲染方式进行渲染即可;对于处在目标水体的水体边缘的地形模型,地形模型会包含一部分深水区域,还会包含一部分过渡区域,可能还会包含水岸区域。
[0071]
在本实施例中,通过顶点色确定模型面具体属于哪个水体区域。一种实现方式中,深水区域中模型面的顶点色为第一固定值,例如,第一固定值为1;对于过渡区域,靠近深水区域的模型面的顶点色为1或者接近1,而距离深水区域越远,顶点色越小,直至顶点色变为0。
[0072]
对于处于目标水体的水体边缘的地形模型,地形模型还包括水岸区域;水岸区域中模型面的顶点色为预设的第二固定值;第二固定值与第一固定值不同;过渡区域中,距离水岸区域越近的模型面,模型面的顶点色与第二固定值的差值越小。
[0073]
例如,深水区域中顶点色设置为1,水岸区域中顶点色设置为0;通常,过渡区域位于深水区域和水岸区域之间,在过渡区域中,靠近深水区域的模型面,其顶点色接近1,靠近水岸区域的模型面,其顶点色接近0。
[0074]
一种具体的实现方式中,地形模型的资产制作方式可以包括下述步骤21-步骤23:
[0075]
步骤21,在初始地形模型上设置区域分界线,以通过区域分界线将初始地形模型划分为多个水体区域;
[0076]
区域分界线可以根据初始地形模型在目标水体中的位置进行设置,例如,对于水体边缘的初始地形模型,可以通过区域分界线将初始地形模型划分为深水区域、过渡区域和水岸区域。图2是区域分界线的一个示例,初始地形模型为六边形的模型,加粗线条表示区域分界线,区域分界线将初始地形模型划分为深水区域、过渡区域和水岸区域。
[0077]
步骤22,基于水体区域的边缘线,生成水体区域的模型面;其中,水体区域的边缘
线包括:包围水体区域的区域分界线和/或初始地形模型的模型边缘线;
[0078]
对于不同的水体区域,其边缘线可能仅包括区域分界线,也可能仅包括模型边缘线,也可能同时包括区域分界线和模型边缘线。在上述图2中,深水区域的边缘线包括部分区域边界线和部分模型边缘线;而过渡区域的边缘线仅包括区域分界线;水岸区域的边缘线包括部分区域边界线和部分模型边缘线。
[0079]
水体区域的边缘线也可以理解为包围该水体区域的线条。在实际实现时,可以针对每个水体区域生成该水体区域的模型面。具体的,可以在水体区域的边缘线上设置多个点,将这些点进行连线,得到多个线条,将这些线条组成的面,作为模型面。
[0080]
图3作为一个示例,在深水区域,区域分界线上设置了多个点,模型边缘线上包括两个顶点,通过区域分界线上的点与顶点的连接,即可生成深水区域的模型面;水岸区域的模型面按照同样的方式生成;对于过渡区域,每条区域分界线上均设置多个点,将两条区域分界线上的点进行连线,得到过渡区域的模型面。
[0081]
在大多情况下,模型面为三角形,水体区域中的模型面数可以预先设置,例如,设置总面数为50;可以理解的是,模型面数越多,在区域分界线上就需要设置越多的点。
[0082]
步骤23,根据水体区域的种类,设置水体区域内模型面的顶点色,得到用于渲染目标水体的地形模型。
[0083]
为了对不同的水体区域采用不同的渲染方式进行渲染,需要对每个水体区域配置不同的材质槽,以对不同的水体区域采用不同的渲染算法。
[0084]
在渲染开始时,需要对用于渲染目标水体的地形模型进行mesh光栅化,从而确定场景画面中的每个待渲染像素对应的模型位置,进而调用pixel shader开始计算渲染结果。
[0085]
对于前述水岸区域,设置为透明不显示,即,在水岸区域,并不显示水体的渲染效果,仅显示地形本身的渲染效果,例如,土地效果。
[0086]
对于深水区域和过渡区域,均需要预先确定待渲染像素的法线方向。具体的,基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果;基于该第一采样结果,确定待渲染像素的法线方向。上述第一配置参数通常包括一个或多个参数,第一配置参数通常需要预先设置完成;上述位置参数、时间参数以及第一配置参数,用于确定采样坐标,进而按照该采样坐标对法线贴图进行采样;法线贴图也需要预先设置,该法线贴图中包括多种法线方向,不同的法线方向保存在法线贴图中的不同位置坐标。
[0087]
一种具体的实现方式中,第一配置参数包括初始值参数和坐标值参数;本实施例中,初始值参数表示为r1,坐标值参数表示为(su1,sv1)。坐标值参数可以表示第一位置向量的偏移速率,速率越大,波浪循环越快。
[0088]
首先,基于模型位置的位置坐标,生成第一位置向量;由于地形模型位于三维的世界空间中,因而位置坐标为三维坐标,在本实施例中,获取到模型位置的位置坐标后,将该位置坐标归化到特定的长度单位,例如,米,然后,从归化后的位置坐标中提取x坐标和y坐标,通过提取出的x坐标和y坐标,构成一个二维向量,即上述第一位置向量,可以表示为wpuv1。
[0089]
然后,将初始值参数与第一位置向量的乘积作为第一中间结果,将时间参数和坐
标值参数的乘积作为第二中间结果;将第一中间结果和第二中间结果的和确定为第一采样坐标;按照第一采样坐标对法线贴图进行采样,得到第一采样结果。
[0090]
第一采样坐标可以表示为sampleuv1,第一采样坐标的计算方式可以通过下述算式实现:
[0091]
sampleuv1=r1*wpuv1+time*(su1,sv1)
[0092]
其中,r1为上述初始值参数;wpuv1为上述第一位置向量;time为上述时间参数,具体可以为渲染引擎提供的时钟时间;(su1,sv1)为上述坐标值参数。
[0093]
得到第一采样结果后,还需要对第一采样结果进行进一步处理,才能得到待渲染像素的法线方向。具体的,上述第一配置参数还包括波幅参数该波幅参数可以表示为i1;从第一采样结果中提取水平面方向的法线分量;基于提取出的法线分量与波幅参数的乘积,确定待渲染像素的法线方向。
[0094]
其中,第一采样结果中包括rgb共三个通道,分别保存x方向、y方向以及z方向的法线分量,从rg通道中可以得到x方向和y方向的法线分量,即前述水平面方向的法线分量,z方向与水平面方向垂直。
[0095]
为了进一步丰富水体中的波浪效果,减轻波浪的重复感,上述第一配置参数包括多组;多组第一配置参数之间的参数值不同。由前述实施例可知,第一组第一配置参数包括初始值参数r1、坐标值参数(su1,sv1)以及波幅参数i1。每组第一配置参数可以对应一种波浪效果,通过多种配置参数,可以首先多种波浪效果的叠加,不同波浪效果的波高、波宽和频率不同。例如,以三组第一配置参数为例,第一组第一配置参数为初始值参数r1、坐标值参数(su1,sv1)以及波幅参数i1,第二组第一配置参数为初始值参数r2、坐标值参数(su2,sv2)以及波幅参数i2,第三组第一配置参数为初始值参数r3、坐标值参数(su3,sv3)以及波幅参数i3。
[0096]
针对每组第一配置参数,执行基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,得到多个第一采样结果;基于多个第一采样结果,确定待渲染像素的法线方向。
[0097]
采用每组第一配置参数进行上述处理,可以计算得到一个法线方向,共得到多个法线方向,将多个法线方向进行叠加,再对叠加结果进行归一化,得到最终的待渲染像素的法线方向。
[0098]
例如,使用第二组第一配置参数中的r1和(su2,sv2),计算采样坐标sampleuv2=r2*wpuv+time*(su2,sv2);通过采样坐标sampleuv2对法线贴图进行采样,得到另一个采样坐标,进而得到另一个第一采样结果,该第一采样结果通过波幅参数i2进行处理,得到另一个法线方向。第三组第一配置参数的使用方法相同。
[0099]
通过上述方式得到待渲染像素的法线方向后,对于深水区域,直接基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染,即可得到待渲染像素的渲染结果。这里的第一颜色参数预先配置即可。
[0100]
对于过渡区域,由于过渡区域与深水区域相连,法线方向与深水区域的法线方向计算方式相同,可以确保过渡区域与深水区域的视觉效果是连续的。除了法线方向之外,过渡区域还需要计算待渲染像素的颜色参数,然后才能进行渲染。具体的,对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采
样,得到第二采样结果;基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数;基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数。
[0101]
这里的噪声贴图可以预先设置,噪声贴图的不同位置保存着不同的颜色参数;基于位置参数和时间参数确定噪声贴图的采样坐标,可以使得到的第二采样结果具有周期变化的特性;第二采样结果再与模型位置的顶点色共同确定泡沫控制参数,可以使泡沫的变化具有周期变化的特性,同时,也参考了模型位置,例如,泡沫的周期变化与波浪的周期变化同步,同时越是靠近水岸区域,泡沫逐渐变小。
[0102]
一种具体的实现方式中,首先,对于属于过渡区域的模型位置,基于模型位置的位置坐标,生成第二位置向量;由于地形模型位于三维的世界空间中,因而位置坐标为三维坐标,在本实施例中,获取到模型位置的位置坐标后,将该位置坐标归化到特定的长度单位,例如,米,然后,从归化后的位置坐标中提取x坐标和y坐标,通过提取出的x坐标和y坐标,构成一个二维向量,即上述第二位置向量,可以表示为wpuv2。
[0103]
然后,将预设的第二配置参数与时间参数的乘积,与第二位置向量相加,得到相加结果;将相加结果与预设的第三配置参数的乘积,确定为第二采样坐标;按照第二采样坐标对噪声贴图进行采样,得到第二采样结果。
[0104]
上述第二采样坐标可以表示为sampleuv,第二采样坐标可以通过下述算式计算得到:
[0105]
sampleuv=s0*(s1*time+wpuv2);
[0106]
其中,s0表示第三配置参数;s1表示第二配置参数;time表示时间参数,具体可以为渲染引擎提供的时钟时间;wpuv2表示第二位置向量。
[0107]
得到第二采样结果后,从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;例如,该第一指定通常可以为r通道;然后,通过预设的第三固定值与通道顶点色值相减,得到第一通道参数;具体的,该第三固定值可以为1,通道顶点色值表示为x,通1-x计算得到第一通道参数,表示为r0;对第一通道参数进行开平方运算,得到第二通道参数;通过sqrt(1-r0)可以得到第二通道参数,该第二通道参数表示为s。最后,基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数。
[0108]
在确定泡沫控制参数时,从第二采样结果中提取第二指定通道的通道采样值;例如,第二指定通道可以为r通道,即第二采样结果中的红色分量;将通道采样值的第四配置参数次幂与第二通道参数的乘积,作为第三中间结果;将第五配置参数与时间参数的乘积作为第四中间结果;计算第三中间结果与第四中间结果的差值,将差值的正弦值的平方值乘以第一通道参数,得到泡沫控制参数。
[0109]
这里的泡沫控制参数表示为foamfactor,可以通过下述算式计算得到泡沫控制参数:
[0110]
foamfactor=sin2(s*pow(r,s2)-s3*time)*r0
[0111]
其中,s表示上述第二通道参数;r表示上述通道采样值;s2表示第四配置参数;pow(r,s2)表示通道采样值的第四配置参数次幂;s3表示第五配置参数;time表示时间参数,具体可以为渲染引擎提供的时钟时间;r0表示第一通道参数。
[0112]
得到泡沫控制参数后,基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数;将泡沫控制参数作为插值权重,对水体颜色参数和泡沫颜色参数进行插值处理,得到
第二颜色参数。
[0113]
这里的第一颜色参数为前述深水区域配置的颜色参数,浅水颜色参数也是预先配置的颜色参数;通常,浅水颜色参数对应的颜色比第一颜色参数对应的浅色浅,例如,第一颜色参数对应深蓝色,而浅水颜色参数对应浅蓝色。
[0114]
一种方式中,泡沫控制参数表示为foamfactor,水体颜色参数表示为watercolor,泡沫颜色参数表示为foamfactor,可以通过lerp函数计算得到第二颜色参数,即lerp(watercolor,foamcolor,foamfactor)。当然,除了lerp函数以外,也可以通过其他插值函数对水体颜色参数和泡沫颜色参数进行插值处理,得到第二颜色参数。
[0115]
具体的,在计算水体颜色参数时,将第一通道参数的第六配置参数次幂作为插值权重,对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数;其中,第一通道参数通过下述方式得到:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数。
[0116]
水体颜色参数表示为watercolor,可以通过下述算式计算水体颜色参数:watercolor=lerp(colord,colors,pow(r0,s4);其中,colord表示上述第一颜色参数;colors表示浅水颜色参数;r0表示第一通道参数;s4表示预设的第六配置参数。当然,除了lerp函数以外,也可以通过其他插值函数对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数。
[0117]
另外,对于过渡区域,还需要设置渲染透明度参数,通常表示为opacity值。具体的,基于模型位置对应的顶点色,确定渲染透明度参数;基于渲染透明度参数、第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染。例如,使用模型位置的顶点色中r通道的色值,将该色值映射至预设的数值范围内,得到上述渲染透明度参数。
[0118]
例如,顶点色中r通道的色值范围为[0,1],而渲染透明度参数的范围为[0.5,1],将顶点色中r通道的色值映射至[0.5,1],即可得到待渲染像素的渲染透明度参数。
[0119]
对应于前述方法实施例,参见图4所示的一种水体渲染装置的结构示意图,该装置包括:
[0120]
模型获取模块40,用于获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;
[0121]
法线方向确定模块42,用于确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;
[0122]
第一渲染模块44,用于对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;
[0123]
第二渲染模块46,用于对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0124]
上述水体渲染装置,获取用于渲染目标水体的地形模型;其中,地形模型中的模型
面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0125]
该方式中,预先将地形模型划分为多个水体区域,不同的水体区域采用不同的算法计算渲染参数,进而完成水体的渲染。该方式无需修改地形系统的整体参数,通过贴片的方式在地形系统上渲染水体,渲染的计算量较低,节约了性能开销,对于资源有限的移动终端更加友好,有利于在移动终端上进行渲染。
[0126]
上述地形模型包括多个;对于处于目标水体的水体边缘的地形模型,地形模型包括深水区域和过渡区域;深水区域中模型面的顶点色为预设的第一固定值;过渡区域中,距离深水区域越远的模型面,模型面的顶点色与第一固定值的差值越大。
[0127]
上述对于处于目标水体的水体边缘的地形模型,地形模型还包括水岸区域;水岸区域中模型面的顶点色为预设的第二固定值;第二固定值与第一固定值不同;过渡区域中,距离水岸区域越近的模型面,模型面的顶点色与第二固定值的差值越小。
[0128]
上述装置还包括模型生成模块,用于:在初始地形模型上设置区域分界线,以通过区域分界线将初始地形模型划分为多个水体区域;基于水体区域的边缘线,生成水体区域的模型面;其中,水体区域的边缘线包括:包围水体区域的区域分界线和/或初始地形模型的模型边缘线;根据水体区域的种类,设置水体区域内模型面的顶点色,得到用于渲染目标水体的地形模型。
[0129]
上述法线方向确定模块,还用于:基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果;基于第一采样结果,确定待渲染像素的法线方向。
[0130]
上述第一配置参数包括初始值参数和坐标值参数;上述法线方向确定模块,还用于:基于模型位置的位置坐标,生成第一位置向量;将初始值参数与第一位置向量的乘积作为第一中间结果,将时间参数和坐标值参数的乘积作为第二中间结果;将第一中间结果和第二中间结果的和确定为第一采样坐标;按照第一采样坐标对法线贴图进行采样,得到第一采样结果。
[0131]
上述第一配置参数还包括波幅参数;上述法线方向确定模块,还用于:从第一采样结果中提取水平面方向的法线分量;基于提取出的法线分量与波幅参数的乘积,确定待渲染像素的法线方向。
[0132]
上述第一配置参数包括多组;多组第一配置参数之间的参数值不同;上述法线方向确定模块,还用于:针对每组第一配置参数,执行基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,得到多个第一采样结果;基于多个第一采样结果,确定待渲染像素的法线方向。
[0133]
上述第二渲染模块还用于:对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采样,得到第二采样结果;基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数;基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数。
[0134]
上述第二渲染模块还用于:对于属于过渡区域的模型位置,基于模型位置的位置坐标,生成第二位置向量;将预设的第二配置参数与时间参数的乘积,与第二位置向量相加,得到相加结果;将相加结果与预设的第三配置参数的乘积,确定为第二采样坐标;按照第二采样坐标对噪声贴图进行采样,得到第二采样结果。
[0135]
上述第二渲染模块还用于:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数;对第一通道参数进行开平方运算,得到第二通道参数;基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数。
[0136]
上述第二渲染模块还用于:从第二采样结果中提取第二指定通道的通道采样值;将通道采样值的第四配置参数次幂与第二通道参数的乘积,作为第三中间结果;将第五配置参数与时间参数的乘积作为第四中间结果;计算第三中间结果与第四中间结果的差值,将差值的正弦值的平方值乘以第一通道参数,得到泡沫控制参数。
[0137]
上述第二渲染模块还用于:基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数;将泡沫控制参数作为插值权重,对水体颜色参数和泡沫颜色参数进行插值处理,得到第二颜色参数。
[0138]
上述第二渲染模块还用于:将第一通道参数的第六配置参数次幂作为插值权重,对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数;其中,第一通道参数通过下述方式得到:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数。
[0139]
上述第二渲染模块还用于:基于模型位置对应的顶点色,确定渲染透明度参数;基于渲染透明度参数、第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染。
[0140]
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述水体渲染方法。该电子设备可以是服务器,也可以是触控终端设备。
[0141]
参见图5所示,该电子设备包括处理器100和存储器101,该存储器101存储有能够被处理器100执行的机器可执行指令,该处理器100执行机器可执行指令以实现上述水体渲染方法。
[0142]
进一步地,图5所示的电子设备还包括总线102和通信接口103,处理器100、通信接口103和存储器101通过总线102连接。
[0143]
其中,存储器101可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用
一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0144]
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器101,处理器100读取存储器101中的信息,结合其硬件完成前述实施例的方法的步骤。
[0145]
上述电子设备中的处理器,通过执行机器可执行指令,可以实现上述水体渲染方法中的下述操作:
[0146]
获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0147]
地形模型包括多个;对于处于目标水体的水体边缘的地形模型,地形模型包括深水区域和过渡区域;深水区域中模型面的顶点色为预设的第一固定值;过渡区域中,距离深水区域越远的模型面,模型面的顶点色与第一固定值的差值越大。
[0148]
对于处于目标水体的水体边缘的地形模型,地形模型还包括水岸区域;水岸区域中模型面的顶点色为预设的第二固定值;第二固定值与第一固定值不同;过渡区域中,距离水岸区域越近的模型面,模型面的顶点色与第二固定值的差值越小。
[0149]
在初始地形模型上设置区域分界线,以通过区域分界线将初始地形模型划分为多个水体区域;基于水体区域的边缘线,生成水体区域的模型面;其中,水体区域的边缘线包括:包围水体区域的区域分界线和/或初始地形模型的模型边缘线;根据水体区域的种类,设置水体区域内模型面的顶点色,得到用于渲染目标水体的地形模型。
[0150]
基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果;基于第一采样结果,确定待渲染像素的法线方向。
[0151]
第一配置参数包括初始值参数和坐标值参数;基于模型位置的位置坐标,生成第
一位置向量;将初始值参数与第一位置向量的乘积作为第一中间结果,将时间参数和坐标值参数的乘积作为第二中间结果;将第一中间结果和第二中间结果的和确定为第一采样坐标;按照第一采样坐标对法线贴图进行采样,得到第一采样结果。
[0152]
第一配置参数还包括波幅参数;从第一采样结果中提取水平面方向的法线分量;基于提取出的法线分量与波幅参数的乘积,确定待渲染像素的法线方向。
[0153]
第一配置参数包括多组;多组第一配置参数之间的参数值不同;针对每组第一配置参数,执行基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,得到多个第一采样结果;基于多个第一采样结果,确定待渲染像素的法线方向。
[0154]
对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采样,得到第二采样结果;基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数;基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数。
[0155]
对于属于过渡区域的模型位置,基于模型位置的位置坐标,生成第二位置向量;将预设的第二配置参数与时间参数的乘积,与第二位置向量相加,得到相加结果;将相加结果与预设的第三配置参数的乘积,确定为第二采样坐标;按照第二采样坐标对噪声贴图进行采样,得到第二采样结果。
[0156]
从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数;对第一通道参数进行开平方运算,得到第二通道参数;基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数。
[0157]
从第二采样结果中提取第二指定通道的通道采样值;将通道采样值的第四配置参数次幂与第二通道参数的乘积,作为第三中间结果;将第五配置参数与时间参数的乘积作为第四中间结果;计算第三中间结果与第四中间结果的差值,将差值的正弦值的平方值乘以第一通道参数,得到泡沫控制参数。
[0158]
基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数;将泡沫控制参数作为插值权重,对水体颜色参数和泡沫颜色参数进行插值处理,得到第二颜色参数。
[0159]
将第一通道参数的第六配置参数次幂作为插值权重,对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数;其中,第一通道参数通过下述方式得到:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数。
[0160]
基于模型位置对应的顶点色,确定渲染透明度参数;基于渲染透明度参数、第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染。
[0161]
该方式中,预先将地形模型划分为多个水体区域,不同的水体区域采用不同的算法计算渲染参数,进而完成水体的渲染。该方式无需修改地形系统的整体参数,通过贴片的方式在地形系统上渲染水体,渲染的计算量较低,节约了性能开销,对于资源有限的移动终端更加友好,有利于在移动终端上进行渲染。
[0162]
本实施例还提供一种机器可读存储介质,机器可读存储介质存储有机器可执行指令,机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述水体渲染方法。
[0163]
上述机器可读存储介质存储中的机器可执行指令,通过执行该机器可执行指令,可以实现上述水体渲染方法中的下述操作:
[0164]
获取用于渲染目标水体的地形模型;其中,地形模型中的模型面设置有顶点色;顶点色用于表征模型面在目标水体中所属的水体区域;水体区域包括深水区域和过渡区域;过渡区域中模型面的顶点色沿着指定方向逐渐变化;确定待渲染像素映射至地形模型上的模型位置;基于模型位置的位置参数和预设的时间参数,对法线贴图进行至少一次采样,得到待渲染像素的法线方向;其中,法线方向用于控制渲染波浪效果;对于属于深水区域的模型位置,基于法线方向、模型位置的光照方向以及第一颜色参数,对模型位置对应的待渲染像素进行渲染;对于属于过渡区域的模型位置,基于模型位置的位置参数、模型位置对应的顶点色以及预设的时间参数,确定第二颜色参数;第二颜色参数用于控制渲染过渡区域的水体颜色和泡沫效果;基于第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染,得到渲染完成的目标水体。
[0165]
地形模型包括多个;对于处于目标水体的水体边缘的地形模型,地形模型包括深水区域和过渡区域;深水区域中模型面的顶点色为预设的第一固定值;过渡区域中,距离深水区域越远的模型面,模型面的顶点色与第一固定值的差值越大。
[0166]
对于处于目标水体的水体边缘的地形模型,地形模型还包括水岸区域;水岸区域中模型面的顶点色为预设的第二固定值;第二固定值与第一固定值不同;过渡区域中,距离水岸区域越近的模型面,模型面的顶点色与第二固定值的差值越小。
[0167]
在初始地形模型上设置区域分界线,以通过区域分界线将初始地形模型划分为多个水体区域;基于水体区域的边缘线,生成水体区域的模型面;其中,水体区域的边缘线包括:包围水体区域的区域分界线和/或初始地形模型的模型边缘线;根据水体区域的种类,设置水体区域内模型面的顶点色,得到用于渲染目标水体的地形模型。
[0168]
基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果;基于第一采样结果,确定待渲染像素的法线方向。
[0169]
第一配置参数包括初始值参数和坐标值参数;基于模型位置的位置坐标,生成第一位置向量;将初始值参数与第一位置向量的乘积作为第一中间结果,将时间参数和坐标值参数的乘积作为第二中间结果;将第一中间结果和第二中间结果的和确定为第一采样坐标;按照第一采样坐标对法线贴图进行采样,得到第一采样结果。
[0170]
第一配置参数还包括波幅参数;从第一采样结果中提取水平面方向的法线分量;基于提取出的法线分量与波幅参数的乘积,确定待渲染像素的法线方向。
[0171]
第一配置参数包括多组;多组第一配置参数之间的参数值不同;针对每组第一配置参数,执行基于模型位置的位置参数、预设的时间参数以及预设的第一配置参数,对法线贴图进行采样,得到第一采样结果的步骤,得到多个第一采样结果;基于多个第一采样结果,确定待渲染像素的法线方向。
[0172]
对于属于过渡区域的模型位置,基于模型位置的位置参数、以及预设的时间参数,对预设的噪声贴图进行采样,得到第二采样结果;基于第二采样结果和模型位置对应的顶点色,确定泡沫控制参数;基于泡沫控制参数、预设的泡沫颜色参数和水体颜色参数,确定第二颜色参数。
[0173]
对于属于过渡区域的模型位置,基于模型位置的位置坐标,生成第二位置向量;将
预设的第二配置参数与时间参数的乘积,与第二位置向量相加,得到相加结果;将相加结果与预设的第三配置参数的乘积,确定为第二采样坐标;按照第二采样坐标对噪声贴图进行采样,得到第二采样结果。
[0174]
从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数;对第一通道参数进行开平方运算,得到第二通道参数;基于第二采样结果、第一通道参数和第二通道参数,确定泡沫控制参数。
[0175]
从第二采样结果中提取第二指定通道的通道采样值;将通道采样值的第四配置参数次幂与第二通道参数的乘积,作为第三中间结果;将第五配置参数与时间参数的乘积作为第四中间结果;计算第三中间结果与第四中间结果的差值,将差值的正弦值的平方值乘以第一通道参数,得到泡沫控制参数。
[0176]
基于第一颜色参数和预设的浅水颜色参数,确定水体颜色参数;将泡沫控制参数作为插值权重,对水体颜色参数和泡沫颜色参数进行插值处理,得到第二颜色参数。
[0177]
将第一通道参数的第六配置参数次幂作为插值权重,对第一颜色参数和浅水颜色参数进行插值处理,得到水体颜色参数;其中,第一通道参数通过下述方式得到:从模型位置对应的顶点色中提取第一指定通道的通道顶点色值;通过预设的第三固定值与通道顶点色值相减,得到第一通道参数。
[0178]
基于模型位置对应的顶点色,确定渲染透明度参数;基于渲染透明度参数、第二颜色参数、模型位置的光照方向和法线方向,对模型位置对应的待渲染像素进行渲染。
[0179]
该方式中,预先将地形模型划分为多个水体区域,不同的水体区域采用不同的算法计算渲染参数,进而完成水体的渲染。该方式无需修改地形系统的整体参数,通过贴片的方式在地形系统上渲染水体,渲染的计算量较低,节约了性能开销,对于资源有限的移动终端更加友好,有利于在移动终端上进行渲染。
[0180]
本发明实施例所提供的水体渲染方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0181]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0182]
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0183]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0184]
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0185]
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1