一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对象模型的渲染方法、装置、计算机设备以及存储介质与流程

2022-11-09 21:23:26 来源:中国专利 TAG:


1.本技术涉及图像处理技术领域,具体涉及一种对象模型的渲染方法、装置、计算机设备以及存储介质。


背景技术:

2.流光效果是图像渲染中常用的特效渲染,例如,在游戏场景中,在对游戏角色对应的三维模型的渲染中增加流光效果,可提高游戏角色外观效果。
3.现有技术中,流光效果的实现通常是先构建一张四方连续的流光贴图,在渲染时通过一个随时间变化的纹理坐标在流光贴图中进行读取并与特定的色彩信息相乘后,叠加至原有的渲染结果上,以实现纹理移动的流光效果。现有的流光效果的实现需要额外使用与流光效果对应的纹理贴图,该纹理贴图的加载以及读取增加了渲染过程的采样负荷,降低了渲染效率。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种对象模型的渲染方法、装置、计算机设备以及存储介质,用以提高对象模型的渲染效率。
5.第一方面,本技术提供一种对象模型的渲染方法,该方法包括:
6.获取第一二维向量;
7.基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;
8.将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;
9.获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
10.第二方面,本技术提供一种对象模型的渲染装置,该装置包括:
11.流光向量获取模块,用于获取第一二维向量;
12.初始分布获取模块,用于基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;
13.目标分布获取模块,用于将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;
14.对象渲染模块,用于获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
15.第三方面,本技术还提供一种计算机设备,该计算机设备包括:
16.一个或多个处理器;
17.存储器;以及
18.一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并
配置为由所述处理器执行以实现对象模型的渲染方法。
19.第四方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行对象模型的渲染方法中的步骤。
20.第五方面,本技术实施例提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述第一方面提供的方法。
21.上述对象模型的渲染方法、装置、计算机设备以及存储介质,获取第一二维向量;基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。通过第一二维向量设置对象模型对应纹理空间内的流光分布数据,并在该流光分布数据的基础上进行动态的周期性数值映射,得到可实现流光纹路动态变化的目标流光值分布数据,后续在原有的纹理贴图的基础上叠加目标流光值分布数据中的流光值,对对象模型进行渲染,实现无需额外的、与流光效果对应的纹理贴图即可在对象模型上增加流光效果的渲染,无需增加对纹理贴图的加载和读取过程,降低渲染能耗以及渲染过程的采样负荷,提高渲染效率。
附图说明
22.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是本技术实施例中对象模型的渲染方法的流程示意图;
24.图2是本技术实施例中初始流光值分布数据的示意图;
25.图3是本技术实施例中目标流光值分布数据获取步骤的流程示意图;
26.图4a是本技术实施例中目标流光值分布数据的示意图;
27.图4b是本技术实施例中目标流光值分布数据的另一个示意图;
28.图5a是本技术实施例中初始噪声分布数据的示意图;
29.图5b是本技术实施例中目标流光值分布数据的另一个示意图;
30.图6是本技术实施例中对象模型渲染步骤的流程示意图;
31.图7是本技术实施例中又一个植被对象渲染效果示意图;
32.图8是本技术实施例中对象模型的渲染装置的结构示意图;
33.图9是本技术实施例中计算机设备的结构示意图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施
例,都属于本技术保护的范围。
35.在本技术的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
36.在本技术的描述中,“例如”一词用来表示“用作例子、例证或说明”。本技术中被描述为“例如”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任何技术人员能够实现和使用本发明,给出了以下描述。在以下描述中,为了解释的目的而列出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况下也可以实现本发明。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必要的细节使本发明的描述变得晦涩。因此,本发明并非旨在限于所示的实施例,而是与符合本技术所公开的原理和特征的最广范围相一致。
37.本技术实施例提供的对象模型的渲染方法,可以运行于终端设备或服务器。其中,终端设备可以为本地终端设备。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。以该对象模型的渲染方法应用于电子游戏中的虚拟场景为例,电子游戏服务器可基于该对象模型的渲染方法渲染具有流光效果的对象模型。
38.以对象模型为游戏角色对象为例,现有技术中在对游戏角色对象进行渲染过程中,为了达到流光特效效果,往往需要额外构建流光效果相应的纹理贴图,进而通过一个随时间变化的纹理坐标在该纹理贴图中进行读取以加载到游戏角色对象对应的三维模型上,流光效果相应的纹理贴图的额外加载以及读取增大了渲染过程的采样负荷,导致渲染效率降低;此外,为了控制流光效果中流光纹路的具体走势,在三维模型的uv展开过程中,需要将游戏角色对象对应的三维模型展开为特定的形状,导致uv展开难度增加,三维模型的制作成本增大。
39.为了解决上述问题,本技术实施例提供一种对象模型的渲染方法,参阅图1,该方法包括步骤s110至140,具体如下:
40.s110,获取第一二维向量。
41.其中,第一二维向量用于控制对象模型上流光纹路的移动方向以及流光纹路的密度。具体地,第一二维向量的方向为第一方向,该第一方向用于控制流光效果中流光纹理的移动方向;第一二维向量的长度用于控制流光效果中流光纹路的密度,其中,第一二维向量的长度与流光效果中流光纹路的密度成正相关关系,即第一二维向量的长度越长,流光纹路的密度越大。可以理解的是,第一二维向量可以是由技术人员根据实际情况设置的。
42.s120,基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增。
43.其中,对象模型是指三维绘图中待渲染的三维模型;以游戏场景为例,对象模型可以是指游戏场景中游戏角色的三维模型,如游戏场景中的人物角色或动物角色对应的三维模型。
44.三维模型可通过uv展开(uv unwrapping)映射到一个二维平面中,该二维平面即
为纹理空间(也称为uv空间);在三维模型渲染过程中,uv空间中绘制完成的图片可以称为纹理贴图,基于uv展开的逆过程,可以将绘制好的纹理贴图映射到三维模型表面,从而实现表征模型颜色、材质、光影等效果。
45.其中,三维模型的网格顶点在纹理空间中对应的坐标即纹理坐标(也称为uv坐标)。具体地,初始流光值分布数据可包括纹理空间内各个纹理坐标点对应的初始流光值。
46.在获取到第一二维向量后,可将对象模型对应纹理空间内的纹理坐标与第一二维向量点乘,以获取纹理空间内各个纹理坐标上对应的初始流光值,即纹理空间内的初始流光值分布数据;可以理解的是,在纹理空间内,初始流光值分布数据沿第一二维向量的方向线性递增。例如,参见图2,图2为纹理空间内初始流光值分布数据的示意图,在图2中纹理空间内各个坐标点的明度表示该坐标上初始流光值的相对大小。
47.s130,将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据。
48.其中,随时间周期变化的目标流光值分布数据,是指在纹理空间内各个纹理坐标对应的流光值随时间周期变化。为了达到流光效果,在获取到初始流光值分布数据后,可在初始流光值分布数据的基础上进行周期性数值映射,使得纹理空间内任意纹理坐标上的流光值随时间进行变换,实现沿着第一方向的扫描光的流光效果。
49.具体地,将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据,具体可以通过三角函数将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;在一个实施例中,如图3所示,将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据的步骤,包括:
50.s310,获取流光速度参数;
51.s320,采用预设的三角函数,根据流光速度参数将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据。
52.其中,流光速度参数用于控制流光纹路的移动速度。具体地,流光速度参数是一个标量,可任意取值;当流光速度参数大于0,流光移动方向与第一二维向量的方向相反,当流光速度参数小于0,流光移动方向与第一二维向量的方向相同。
53.其中,三角函数可以为正弦函数或余弦函数,在此不进行限定。
54.具体地,可计算预设时间参数与流光速度参数的乘积,得到乘积结果,进而对乘积结果与初始流光值分布数据进行叠加,得到叠加结果,最后,采用预设的三角函数对叠加结果映射为最终的目标流光值分布数据,实现获取不同预设时间参数下的流光值分布数据,即目标流光值分布数据。其中,预设时间参数可以是渲染引擎所提供的时间参数。
55.例如,目标流光值分布数据包括纹路空间内各个纹理坐标对应的目标流光值,针对任意纹理坐标对应的目标流光值,具体可通过以下伪代码获取:
56.lightflowamount0=sin(diramount
01
time*lightflowspeed);或
57.lightflowamount0=cos(diramount
01
time*lightflowspeed)。
58.其中,time表示预设时间参数,具体可由渲染引擎提供;lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值,diramount
01
表示初始流光值分布数据中某一纹理坐标对应的流光值,lightflowspeed表示流光速度参数。
59.参见图4a,图4a示出了目标流光值分布数据随时间周期变化的效果示意图,其中,图4a中a图、b图以及c图中初始流光值分布数据以及流光速度参数相同,而预设时间参数不
同,具体地,a图为(t-1)时刻的目标流光值分布数据,b图为t时刻的目标流光值分布数据,c图为(t 1)时刻的目标流光值分布数据。在后续基于该随时间周期变化的目标流光值分布数据进行对象模型流光效果的渲染时,可得到流光纹理为直线、且沿一定方向进行扫描的扫描光流光效果。
60.进一步地,还可以预先设置流光密度参数。流光密度参数用于控制流光纹路的密度,可以理解的是,流光密度参数越大,对象模型上的流光纹路的数量越多、且流光纹路间越密集,流光密度参数越小,对象模型上的流光纹路越少、且流光纹路间越稀疏。
61.在获取流光速度参数以及流光密度参数后,可采用预设的三角函数,根据流光速度参数以及流光密度参数将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据。具体地,可计算预设时间参数与流光速度参数的乘积,得到第一乘积结果;并计算初始流光值分布数据与流光密度参数的乘积,得到第二乘积结果,进而对第一乘积结果与第二乘积结果进行叠加,得到叠加结果,最后,采用预设的三角函数对叠加结果映射为最终的流光值分布数据,实现获取不同预设时间参数下的流光值分布数据,即目标流光值分布数据。
62.例如,针对纹理空间内任意纹理坐标对应的目标流光值,具体可通过以下伪代码获取:
63.lightflowamount0=sin(diramount
01
*lightflowdensity time*lightflowspeed);或
64.lightflowamount0=cos(diramount
01
*lightflowdensity time*lightflowspeed)。
65.其中,time表示预设时间参数,具体可由渲染引擎提供;lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值,diramount
01
表示初始流光值分布数据中某一纹理坐标对应的流光值,lightflowspeed表示流光速度参数,lightflowdensity表示流光密度参数。
66.参见图4b,图4b示出了不同流光密度参数对应目标流光值分布数据的示意图。其中,图4b中a图以及b图中初始流光值分布数据以及流光速度参数相同,而流光密度参数不同,具体地,a图为流光密度参数取值为a值的目标流光值分布数据,b图为流光密度参数取值为b值的目标流光值分布数据,而a值小于b值。
67.为了增加流光效果中流光纹路的多样性,还可以设置噪声对流光纹路进行扰动。在一个实施例中,将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据的步骤之前,还包括:获取纹理空间内初始噪声分布数据;在纹理空间内对初始噪声分布数据以及初始流光值分布数据进行叠加处理,得到受噪声扰动的初始流光值分布数据。
68.其中,初始噪声分布数据包括纹理空间内各个纹理坐标对应的噪声值,初始噪声分布数据中各个纹理坐标对应的噪声值具体可以是一个固定的噪声值,也可以是一个随着时间变化的噪声值。
69.具体地,在一个实施例中,获取纹理空间内初始噪声分布数据,可以包括:获取第二二维向量;其中,第一二维向量与第二二维向量为方向不同的二维向量;基于第二二维向量,获取纹理空间内的初始噪声分布数据;其中,初始噪声分布数据在纹理空间内沿第二二维向量对应的第二方向线性递增。
70.其中,第二二维向量用于控制噪声对流光纹理的扰动方向,可以理解的是,第二二维向量的方向为第二方向,第二方向可表示流光纹理的波动方向。具体地,第二二维向量可以是由技术人员根据实际情况设置的。在获取到第二二维向量后,可将对象模型对应纹理空间内的纹理坐标与第二二维向量点乘,以获取纹理空间内各个纹理坐标上对应的噪声值,即纹理空间内的初始噪声分布数据;可以理解的是,在纹理空间内,初始噪声分布数据沿第二二维向量的方向线性递增。例如,参见图5a,图5a为纹理空间内初始噪声分布数据的示意图,在图5a中纹理空间内各个坐标点的明度表示该坐标上初始噪声值的相对大小。
71.在获取到初始噪声分布数据后,可在纹理空间内对初始噪声分布数据以及初始流光值分布数据进行叠加处理,具体地,针对纹理空间任意纹理坐标,可在初始噪声分布数据中获取该纹理坐标对应的噪声值,并在初始流光值分布数据中获取该纹理坐标对应的流光值,进而将该纹理坐标对应的噪声值以及流光值进行叠加,得到该纹理坐标对应的受噪声扰动的流光值;后续采用预设的三角函数,根据流光速度参数将叠受噪声扰动的流光值映射为随时间周期变化的流光值。例如,针对纹理空间内任意纹理坐标对应的流光值,具体可通过以下伪代码获取:
72.lightflowamount0=sin(diramount
01
*lightflowdensity noise time*lightflowspeed);或
73.lightflowamount0=cos(diramount
01
*lightflowdensity noise time*lightflowspeed)。
74.其中,time表示预设时间参数,具体可由渲染引擎提供;lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值,diramount
01
表示初始流光值分布数据中某一纹理坐标对应的流光值,noise表示初始噪声分布数据中相应纹理坐标对应的噪声值,lightflowspeed表示流光速度参数,lightflowdensity表示流光密度参数。参见图5b,图5b示出了受噪声扰动的初始流光值分布数据的示意图。图5b中的a图为未受噪声扰动的初始流光值分布数据,图5b中的b图为受噪声扰动的初始流光值分布数据,在后续基于该随时间周期变化的目标流光值分布数据进行对象模型流光效果的渲染时,可得到流光纹路受噪声扰动产生波动、且沿一定方向进行扫描的扫描光流光效果。
75.进一步地,为了增加噪声扰动源的复杂性,还可以在初始噪声分布数据的基础上进行周期性数值映射,使得纹理空间内任意纹理坐标上的噪声扰动源随时间进行变换;在一个实施例中,对初始噪声分布数据以及初始流光值分布数据进行叠加处理的步骤,包括:获取噪声速度参数;采用预设的三角函数,根据噪声速度参数将初始噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内对目标噪声分布数据以及初始流光值分布数据进行叠加处理。
76.其中,噪声速度参数用于控制噪声源在流光纹路上的移动速度。具体地,噪声速度参数是一个标量,可任意取值;当噪声速度参数大于0,噪声移动方向与第二二维向量的方向相反,当噪声速度参数大于0,流光移动方向与第二二维向量的方向相同。
77.具体地,可计算预设时间参数与噪声速度参数的乘积,得到乘积结果,进而对乘积结果与初始噪声分布数据进行叠加,得到叠加结果,最后,采用预设的三角函数对叠加结果映射为最终的噪声分布数据,实现获取不同预设时间参数下的目标噪声分布数据。其中,预设时间参数可以是渲染引擎所提供的时间参数。
78.例如,初始噪声分布数据包括各个纹理坐标对应的噪声值,针对任意纹理坐标对应的噪声值,具体可通过以下伪代码获取:
79.noise=sin(diramount
02
time*noisespeed),或
80.noise=cos(diramount
02
time*noisespeed),
81.其中,time表示预设时间参数,具体可由渲染引擎提供;noise表示目标噪声分布数据中某一纹理坐标对应的噪声值,diramount
02
表示初始噪声分布数据中某一纹理坐标对应的噪声值,noisespeed表示噪声速度参数。
82.进一步地,还可以预先设置噪声密度参数。噪声密度参数用于控制在流光纹路上噪声扰动密度。可以理解的是,噪声密度参数越大,流光纹路被噪声扰动后产生的扭曲越密集,噪声密度参数越小,流光纹路被噪声扰动后产生的扭曲越稀疏;以在直线流光纹理受到扰动后产生波动为例,噪声密度参数越大,流光纹路被噪声扰动后产生的波的数量越多、且波与波之间越密集,噪声密度参数越小,流光纹路被噪声扰动后产生的波的数量越少、且波与波之间越稀疏。
83.在获取噪声速度参数以及噪声密度参数后,可采用预设的三角函数,根据噪声速度参数以及噪声密度参数将初始噪声分布数据映射为随时间周期变化的噪声分布数据。具体地,可计算预设时间参数与噪声速度参数的乘积,得到第一乘积结果;并计算初始噪声分布数据与噪声密度参数的乘积,得到第二乘积结果,进而对第一乘积结果与第二乘积结果进行叠加,得到叠加结果,最后,采用预设的三角函数对叠加结果映射为最终的目标噪声分布数据,实现获取不同预设时间参数下的噪声分布数据。
84.例如,针对任意纹理坐标对应的噪声值,具体可通过以下伪代码获取:
85.noise=sin(diramount
02
*noisedensity time*noisespeed),或
86.noise=cos(diramount
02
*noisedensity time*noisespeed);
87.其中,time表示预设时间参数,具体可由渲染引擎提供;noise表示目标噪声分布数据中某一纹理坐标对应的噪声值,diramount
02
表示初始噪声分布数据中某一纹理坐标对应的噪声值,noisedensity表示噪声密度参数,noisespeed表示噪声速度参数。
88.具体地,还可以通过随着时间周期性变化的噪声对初始流光值分布数据进行扰动,以获取随时间周期变化的目标流光值分布数据;如图6所示,在一个实施例中,将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据的步骤,包括:
89.s610,获取纹理空间内初始噪声分布数据以及噪声速度参数;
90.s620,采用预设的三角函数,根据噪声速度参数将噪声分布数据映射为随时间周期变化的目标噪声分布数据;
91.s630,在纹理空间内根据随时间周期变化的目标噪声分布数据对初始流光值分布数据进行叠加处理,得到随时间周期变化的目标流光值分布数据。
92.其中,初始噪声分布数据的获取步骤、目标噪声分布数据的获取步骤以及噪声速度参数的限定解释具体可以参见上述实施例中的描述。在获取到目标噪声分布数据后,可以对目标噪声分布数据以及初始流光值分布数据进行叠加处理,然后利用三角函数对叠加结果进行映射,得到最终的随时间周期变化的目标流光值分布数据。可以理解的是,此时的流光效果中,流光纹路在第一二维向量对应的第一方向上不动,但受到上述动态的噪声扰动而运动变化。
93.例如,针对纹理空间内中任意纹理坐标对应的流光值,具体可通过以下伪代码获取:
94.lightflowamount0=sin(diramount
01
noise),或
95.lightflowamount0=cos(diramount
01
noise)。
96.其中,lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值,diramount
01
表示初始流光值分布数据中某一纹理坐标对应的流光值,noise表示目标噪声分布数据中某一纹理坐标对应的噪声值。
97.进一步地,还可以设置噪声强度参数,噪声强度参数用于控制噪声扰动源的强度。可以理解的是,噪声强度参数越大,流光纹路被噪声扰动后产生的扭曲程度越大,噪声强度参数越小,流光纹路被噪声扰动后产生的扭曲程度越小;以在直线流光纹理受到扰动后产生波动为例,噪声强度参数越大,流光纹路被噪声扰动后产生的波动的波峰或波谷越大。在纹理空间内对初始噪声分布数据(或目标噪声分布数据)以及初始流光值分布数据进行叠加处理的过程中,先利用噪声强度参数对目标噪声分布数据进行调整后,再进行初始噪声分布数据(或目标噪声分布数据)以及初始流光值分布数据的叠加处理。
98.例如,针对目标流光值分布数据中任意纹理坐标对应的流光值,具体可通过以下伪代码获取:
99.lightflowamount0=sin(diramount01 noise*noiseintensiy),或
100.lightflowamount0=cos(diramount01 noise*noiseintensiy),或
101.lightflowamount0=sin(diramount01 noise*noiseintensiy time*lightflowspeed),或
102.lightflowamount0=sin(diramount01 noise*noiseintensiy time*lightflowspeed)。
103.其中,lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值,diramount
01
表示初始流光值分布数据中相应纹理坐标对应的流光值,noise表示初始噪声分布数据中相应纹理坐标对应的噪声值,noiseintensiy表示噪声强度参数,lightflowspeed表示流光速度参数,time表示预设时间参数。
104.s140,获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
105.其中,纹理空间的纹理贴图是指在增加流光效果前对象模型原有的渲染数据,包括各个纹理坐标对应的像素值。在获取到目标流光值分布数据后,可以在对象模型对应纹理空间内原有的纹理贴图上叠加目标流光值分布数据,进而利用叠加了目标流光值分布数据的纹理贴图对对象模型进行渲染,实现在对象模型原有的渲染结果上增加流光效果。
106.具体地,如图7所示,在一个实施例中,基于目标流光值分布数据以及纹理贴图,渲染对象模型的步骤,包括:
107.s710,基于纹理贴图获取纹理空间内各纹理坐标的像素值;
108.s720,基于目标流光值分布数据获取纹理空间内各纹理坐标在不同时刻下的流光值;
109.s730,根据各纹理坐标的像素值以及在不同时刻下的流光值,渲染对象模型。
110.针对纹理空间内任意一个坐标点(即纹理坐标),从纹理贴图中获取该坐标点对应
的像素值,并从目标流光值分布数据获取该坐标点在不同时刻下的流光值,进而根据像素值以及在不同时刻下的流光值获取该坐标点对应网格顶点在不同时刻下的渲染数据。
111.进一步地,可以预先设置流光效果对应的流光颜色参数以及流光强度参数,其中,流光颜色参数用于控制流光效果所呈现的颜色,例如银色流光效果、紫色流光效果等;流光强度参数用于控制流光效果所呈现的明亮程度。在获取到不同时刻下的流光值后,可以基于流光值、流光强度参数、流光颜色参数计算流光效果对应的流光渲染数据,进而将流光渲染数据叠加到对应像素值上,以获取对应网格顶点在不同时刻下的渲染数据。
112.例如,可以通过以下伪代码实现根据各纹理坐标的像素值以及在不同时刻下的流光值,渲染对象模型:
113.coloroutput=colororigin lightflowamount*lightflowintensity*lightflowcolor
114.其中,coloroutput表示对象模型对应纹理空间内纹理某一纹理坐标的渲染数据;lightflowamount表示对象模型对应纹理空间内纹理某一纹理坐标的流光值;lightflowintensity表示流光强度参数;lightflowcolor表示流光颜色参数。
115.通过流光颜色参数以及流光强度参数可实现灵活设置流光效果中流光纹路的颜色以及明亮程度,无需额外构建与流光效果对应的纹理贴图,降低美术工作量,提高对象模型的渲染效率。
116.上述对象模型的渲染方法中,获取第一二维向量;基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。通过第一二维向量设置对象模型对应纹理空间内的流光分布数据,并在该流光分布数据的基础上进行动态的周期性数值映射,得到可实现流光纹路动态变化的目标流光值分布数据,后续在原有的纹理贴图的基础上叠加目标流光值分布数据中的流光值,对对象模型进行渲染,实现无需额外的、与流光效果对应的纹理贴图即可在对象模型上增加流光效果的渲染,无需增加对纹理贴图的加载和读取过程,降低渲染能耗以及渲染过程的采样负荷,提高渲染效率。
117.下面结合一具体应用场景对本技术实施例提供的对象模型的渲染方法进行进一步说明。具体地,以该对象模型的渲染方法应用于unity中进行说明:
118.第一步:获取非0的第一二维矢量,针对对象模型对应的纹理空间内的任意纹理坐标,将纹理坐标与该第一二维矢量进行点乘以获取该纹理坐标上的初始流光值,得到纹理空间内初始流光值分布数据;
119.具体地,获取纹理空间内初始流光值分布数据具体可表示为:
120.diramount
01
=dot(uv,dirset01),
121.其中,dirset
01
表示该第一二维向量,其长度和方向都是任意的,第一二维向量的方向设定了流光效果中流光纹理的大致运动方向;diramount
01
表示纹理空间内任意纹理坐标的初始流光值。
122.如下图2,图2示出了纹理空间中的初始流光值分布数据的示意图,其中各个坐标点上的明度表征了纹理空间内各个纹理坐标对应diramount
01
的相对大小。
123.第二步:利用正弦函数或余弦函数,对纹理空间内初始流光值分布数据映射为目标流光值分布数据。
124.具体地,获取纹理空间内随时间周期变化的目标流光值分布数据具体可表示为:
125.lightflowamount0=sin(diramount
01
*lightflowdensity time*lightflowspeed),或
126.lightflowamount0=cos(diramount
01
*lightflowdensity time*lightflowspeed),
127.其中,time为运行时间,可由渲染引擎提供;lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的目标流光值;diramount
01
表示目标流光值分布数据中相应纹理坐标的初始流光值;lightflowdensity表示流光密度参数,可根据实际情况灵活设置;lightflowspeed表示流光速度参数,可根据实际情况灵活设置,具体地,当流光速度参数取值为负数时,流光效果中的流光纹路的移动方向与上述dirset01的方向相同,当流光速度参数取值为正数,流光效果中的流光纹路的移动方向与上述dirset01的方向相反。可以理解的是,流光速度参数的绝对值越大,流光效果中的流光纹路的移动速率越大,当流光速度参数取值为0时,则流光效果中的流光纹路固定不变,不随时间变化。
128.第三步,获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
129.具体地,针对目标流光值分布数据中任意纹理坐标对应的目标流光值(即lightflowamount0),由于lightflowamount0的取值区间为[-1,1],为了后续的颜色叠加,还可以将其映射到[0,1]区间,具体可通过下述映射公式获取:
[0130]
lightflowamount=lightflowamount0*0.5 0.5
[0131]
进而,将该流光值lightflowamount与预先设置的流光颜色参数以及流光强度参数相乘,并将乘积叠加到纹理空间对应的原始纹理贴图中,以得到增加流光效果后的渲染数据。
[0132]
coloroutput=colororigin lightflowamount*lightflowintensity*lightflowcolor
[0133]
其中,coloroutput表示对象模型对应纹理空间内纹理某一纹理坐标的像素值(即渲染数据);lightflowamount表示纹理空间内相应纹理坐标的流光值;lightflowintensity表示流光强度参数;lightflowcolor表示流光颜色参数。
[0134]
下面结合另一具体应用场景对本技术实施例提供的对象模型的渲染方法进行进一步说明。具体地,以该对象模型的渲染方法应用于unity中进行说明:
[0135]
第一步:获取非0的第一二维矢量,针对对象模型对应的纹理空间内的任意纹理坐标,将纹理坐标与该第一二维矢量进行点乘以获取该纹理坐标上的初始流光值,得到纹理空间内初始流光值分布数据;
[0136]
具体地,获取纹理空间内初始流光值分布数据具体可表示为:
[0137]
diramount
01
=dot(uv,dirset
01
),
[0138]
其中,dirset
01
表示该第一二维向量,其长度和方向都是任意的,第一二维向量的方向设定了流光效果中流光纹理的大致运动方向;diramount
01
表示纹理空间内任意纹理坐标的初始流光值。
[0139]
如下图2,图2示出了纹理空间中的初始流光值分布数据的示意图,其中各个坐标点上的明度表征了纹理空间内各个纹理坐标对应diramount
01
的相对大小。
[0140]
第二步,获取非0的第二二维矢量,针对对象模型对应的纹理空间内的任意纹理坐标,将纹理坐标与该第二二维矢量进行点乘以获取该纹理坐标上的初始噪声值,得到纹理空间内初始噪声分布数据;
[0141]
具体地,获取纹理空间内初始噪声分布数据具体可表示为:
[0142]
diramount
02
=dot(uv,dirset
02
),
[0143]
其中,dirset
02
表示该第二二维向量,其长度和方向都是任意的,第二二维向量的方向设定了流光效果中噪声扰动源的方向;diramount
02
表示纹理空间内任意纹理坐标的初始噪声值。
[0144]
第三步:利用正弦函数或余弦函数,对纹理空间内初始噪声分布数据映射为目标噪声分布数据。
[0145]
具体地,获取纹理空间内随时间周期变化的目标噪声分布数据具体可表示为:
[0146]
noise0=sin(diramount
02
*noisedensity time*noisespeed);或
[0147]
noise0=cos(diramount
02
*noisedensity time*noisespeed)。
[0148]
其中,time为运行时间,可由渲染引擎提供。noise0表示目标噪声分布数据中某一纹理坐标的目标噪声值。diramount
02
表示目标噪声分布数据中相应纹理坐标的初始噪声值。noisedensity表示噪声密度参数,可根据实际需要进行设置。noisespeed表示噪声速度参数,可根据实际情况灵活设置,具体地,当噪声速度参数取值为负数时,流光效果中的流光纹路上由于噪声扰动而产生的波的移动方向与上述dirset
02
的方向相同,当噪声速度参数取值为正数,流光效果中的流光纹路上由于噪声扰动而产生的波的移动方向与上述dirset
02
的方向相反;可以理解的是,噪声速度参数的绝对值越大,流光效果中的流光纹路上的波动速率越大,当流光速度参数取值为0时,则流光效果中的流光纹路上由于噪声扰动而产生的波固定不变,不随时间变化。
[0149]
可以理解的是,noise0为正弦曲线或余弦曲线的形式作为噪声扰动源,各个纹理坐标对应的noise0可作为后续步骤四中的目标噪声分布数据。
[0150]
为了进一步增加噪声扰动源的复杂度,还可以进行进一步的映射,映射方式如下:
[0151]
noise=noise0*noise0*noise0
[0152]
其中,noise也可以作为后续步骤四中的目标噪声分布数据。
[0153]
可以理解的是,noise或noise0这一噪声分布数据,在对象模型的渲染过程中并不需要烘焙或缓存对应的纹理贴图,而作为对象模型的每个像素计算过程中的中间过程值。
[0154]
第四步,在获取到目标噪声分布数据后,可以将目标噪声分布数据与初始流光值分布数据进行叠加处理,得到受到噪声扰动的初始流光值分布数据,进而利用正弦函数或余弦函数,对纹理空间内受到噪声扰动的初始流光值分布数据映射为目标流光值分布数据。
[0155]
具体地,以使用第三步中的noise为例,获取纹理空间内随时间周期变化的目标流光值分布数据具体可表示为:
[0156]
lightflowamount0=sin(diramount
01
*lightflowdensity noise*noiseintensiy time*lightflowspeed);或
[0157]
lightflowamount0=cos(diramount
01
*lightflowdensity noise*noiseintensiy time*lightflowspeed)。
[0158]
其中,time为运行时间,可由渲染引擎提供;lightflowamount0表示目标流光值分布数据中某一纹理坐标对应的流光值;diramount
01
表示初始流光值分布数据中相应纹理坐标对应的流光值;lightflowdensity表示流光密度参数,可根据实际情况灵活设置;lightflowspeed表示流光速度参数,可根据实际情况灵活设置;具体地,当流光速度参数取值为负数时,流光效果中的流光纹路的移动方向与上述dirset
01
的方向相同,当流光速度参数取值为正数,流光效果中的流光纹路的移动方向与上述dirset
01
的方向相反。可以理解的是,流光速度参数的绝对值越大,流光效果中的流光纹路的移动速率越大,当流光速度参数取值为0时,则流光效果中的流光纹路在dirset
01
的方向上固定不变,仅受到噪声的扰动。noise表示初始噪声分布数据中相应纹理坐标对应的噪声值,noiseintensiy表示噪声强度参数。
[0159]
第五步,获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
[0160]
具体地,针对目标流光值分布数据中任意纹理坐标对应的目标流光值(即lightflowamount0),由于lightflowamount0的取值区间为[-1,1],为了后续的颜色叠加,还可以将其映射到[0,1]区间,具体可通过下述映射公式获取:
[0161]
lightflowamount=lightflowamount0*0.5 0.5
[0162]
进而,将该流光值lightflowamount与预先设置的流光颜色参数以及流光强度参数相乘,并将乘积叠加到纹理空间对应的原始纹理贴图中,以得到增加流光效果后的渲染结果
[0163]
coloroutput=colororigin lightflowamount*lightflowintensity*lightflowcolor
[0164]
其中,coloroutput表示对象模型对应纹理空间内纹理某一纹理坐标的渲染数据;lightflowamount表示纹理空间内相应纹理坐标的流光值;lightflowintensity表示流光强度参数;lightflowcolor表示流光颜色参数。
[0165]
为了更好实施本技术实施例提供的对象模型的渲染方法,在本技术实施例所提对象模型的渲染方法的基础之上,本技术实施例中还提供一种对象模型的渲染装置,如图8所示,对象模型的渲染装置800包括:
[0166]
流光向量获取模块810,用于获取第一二维向量;
[0167]
初始分布获取模块820,用于基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;
[0168]
目标分布获取模块830,用于将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;
[0169]
对象渲染模块840,用于获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
[0170]
在本技术一些实施例中,目标分布获取模块830,用于获取流光速度参数;采用预设的三角函数,根据流光速度参数将初始流光值分布数据映射为随时间周期变化的目标流
光值分布数据。
[0171]
在本技术一些实施例中,目标分布获取模块830,还用于获取纹理空间内初始噪声分布数据;在纹理空间内对初始噪声分布数据以及初始流光值分布数据进行叠加处理,得到受噪声扰动的初始流光值分布数据。
[0172]
在本技术一些实施例中,目标分布获取模块830,用于获取噪声速度参数;采用预设的三角函数,根据噪声速度参数将初始噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内对目标噪声分布数据以及初始流光值分布数据进行叠加处理。
[0173]
在本技术一些实施例中,目标分布获取模块830,用于获取纹理空间内初始噪声分布数据以及噪声速度参数;采用预设的三角函数,根据噪声速度参数将噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内根据随时间周期变化的目标噪声分布数据对初始流光值分布数据进行叠加处理,得到随时间周期变化的目标流光值分布数据。
[0174]
在本技术一些实施例中,目标分布获取模块830,还用于获取第二二维向量;其中,第一二维向量与第二二维向量为方向不同的二维向量;基于第二二维向量,获取纹理空间内的初始噪声分布数据;其中,初始噪声分布数据在纹理空间内沿第二二维向量对应的第二方向线性递增。
[0175]
在本技术一些实施例中,对象渲染模块840,用于基于纹理贴图获取纹理空间内各纹理坐标的像素值;基于目标流光值分布数据获取纹理空间内各纹理坐标在不同时刻下的流光值;根据各纹理坐标的像素值以及在不同时刻下的流光值,渲染不同时刻下对象模型。
[0176]
关于对象模型的渲染装置的具体限定可以参见上文中对于对象模型的渲染方法的限定,在此不再赘述。上述对象模型的渲染装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0177]
在本技术一些实施例中,对象模型的渲染装置800可以实现为一种计算机程序的形式,计算机程序可在如图9所示的计算机设备上运行。计算机设备的存储器中可存储组成该对象模型的渲染装置800的各个程序模块,比如,图8所示的流光向量获取模块810、初始分布获取模块820、目标分布获取模块830以及对象渲染模块840。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本技术各个实施例的对象模型的渲染方法中的步骤。
[0178]
例如,图9所示的计算机设备可以通过如图8所示的对象模型的渲染装置800中的流光向量获取模块810执行步骤s110。计算机设备可通过初始分布获取模块820执行步骤s120。计算机设备可通过目标分布获取模块830执行步骤s130。计算机设备可通过对象渲染模块840执行步骤s140。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的计算机设备通过网络连接通信。该计算机程序被处理器执行时以实现一种对象模型的渲染方法。
[0179]
本领域技术人员可以理解,图9中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0180]
在本技术一些实施例中,提供了一种计算机设备,包括一个或多个处理器;存储器;以及一个或多个应用程序,其中一个或多个应用程序被存储于存储器中,并配置为由处理器执行下述步骤:
[0181]
获取第一二维向量;
[0182]
基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;
[0183]
将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;
[0184]
获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
[0185]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:获取流光速度参数;采用预设的三角函数,根据流光速度参数将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据。
[0186]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:获取纹理空间内初始噪声分布数据;在纹理空间内对初始噪声分布数据以及初始流光值分布数据进行叠加处理,得到受噪声扰动的初始流光值分布数据。
[0187]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:获取噪声速度参数;采用预设的三角函数,根据噪声速度参数将初始噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内对目标噪声分布数据以及初始流光值分布数据进行叠加处理。
[0188]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:获取纹理空间内初始噪声分布数据以及噪声速度参数;采用预设的三角函数,根据噪声速度参数将噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内根据随时间周期变化的目标噪声分布数据对初始流光值分布数据进行叠加处理,得到随时间周期变化的目标流光值分布数据。
[0189]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:获取第二二维向量;其中,第一二维向量与第二二维向量为方向不同的二维向量;基于第二二维向量,获取纹理空间内的初始噪声分布数据;其中,初始噪声分布数据在纹理空间内沿第二二维向量对应的第二方向线性递增。
[0190]
在本技术一些实施例中,处理器执行计算机程序时还实现以下步骤:基于纹理贴图获取纹理空间内各纹理坐标的像素值;基于目标流光值分布数据获取纹理空间内各纹理坐标在不同时刻下的流光值;根据各纹理坐标的像素值以及在不同时刻下的流光值,渲染不同时刻下对象模型。
[0191]
在本技术一些实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器进行加载,使得处理器执行以下步骤:
[0192]
获取第一二维向量;
[0193]
基于第一二维向量获取对象模型对应纹理空间内的初始流光值分布数据;其中,
初始流光值分布数据在纹理空间内沿第一二维向量的第一方向线性递增;
[0194]
将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据;
[0195]
获取纹理空间的纹理贴图,基于目标流光值分布数据以及纹理贴图,渲染对象模型。
[0196]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:获取流光速度参数;采用预设的三角函数,根据流光速度参数将初始流光值分布数据映射为随时间周期变化的目标流光值分布数据。
[0197]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:获取纹理空间内初始噪声分布数据;在纹理空间内对初始噪声分布数据以及初始流光值分布数据进行叠加处理,得到受噪声扰动的初始流光值分布数据。
[0198]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:获取噪声速度参数;采用预设的三角函数,根据噪声速度参数将初始噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内对目标噪声分布数据以及初始流光值分布数据进行叠加处理。
[0199]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:获取纹理空间内初始噪声分布数据以及噪声速度参数;采用预设的三角函数,根据噪声速度参数将噪声分布数据映射为随时间周期变化的目标噪声分布数据;在纹理空间内根据随时间周期变化的目标噪声分布数据对初始流光值分布数据进行叠加处理,得到随时间周期变化的目标流光值分布数据。
[0200]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:获取第二二维向量;其中,第一二维向量与第二二维向量为方向不同的二维向量;基于第二二维向量,获取纹理空间内的初始噪声分布数据;其中,初始噪声分布数据在纹理空间内沿第二二维向量对应的第二方向线性递增。
[0201]
在本技术一些实施例中,计算机程序被处理器执行时还实现以下步骤:基于纹理贴图获取纹理空间内各纹理坐标的像素值;基于目标流光值分布数据获取纹理空间内各纹理坐标在不同时刻下的流光值;根据各纹理坐标的像素值以及在不同时刻下的流光值,渲染不同时刻下对象模型。
[0202]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0203]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0204]
以上对本技术实施例所提供的一种对象模型的渲染方法、装置、计算机设备以及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献