波纹的渲染方法、装置、电子设备及计算机可读介质与流程

文档序号:24194605发布日期:2021-03-09 16:20阅读:135来源:国知局
波纹的渲染方法、装置、电子设备及计算机可读介质与流程

1.本公开涉及图像处理技术领域,具体而言,涉及一种波纹的渲染方法、波纹的渲染装置、电子设备及计算机可读介质。


背景技术:

2.在一些3d游戏或视频中,对于水波的模拟是非常重要的一个部分。而在现有技术中,想要实现较为真实的水波效果,通常是以大量的顶点来完成水波的模拟,从而避免水波失真。
3.然而,这种实现方案对于设备的要求比较高,需要在cpu上产生大量的顶点,导致设备性能受到很大的影响,如果产生的顶点数量较少,则又会因为采样密度不足而导致波形失真。
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.在本公开的一种示例性实施例中,所述根据所述波峰调整参数和所述振幅调整参数确定所述位置点的法向量偏移值,包括:
29.根据所述位置点与所述波纹的当前位置之间的距离确定所述位置点的当前相位,并根据所述当前相位得到所述位置点当前的正弦函数和余弦函数;
30.根据所述位置点当前的正弦函数和余弦函数以及所述波峰调整参数得到所述位置点的归一化法向量;
31.根据所述归一化法向量与所述振幅调整参数的乘积得到所述位置点的法向量偏移值。
32.在本公开的一种示例性实施例中,所述通过所述波动法向量渲染所述波纹,包括:
33.获取光照参数,并根据所述光照参数和所述波动法向量得到所述位置点的漫反射颜色和镜面反射颜色;
34.获取反射扭曲因子,根据所述反射扭曲因子和所述波动法向量得到所述位置点的纹理坐标;
35.获取所述位置点的反射贴图,并通过所述纹理坐标对所述反射贴图进行采样,得到所述位置点的反射颜色;
36.根据所述反射颜色、所述漫反射颜色和所述镜面反射颜色得到所述位置点的位置点颜色,并通过各个位置点的位置点颜色渲染所述波纹。
37.根据本公开的第二方面,提供一种波纹的渲染装置,包括:
38.衰减系数确定模块,用于确定波纹的当前传播距离,并根据所述当前传播距离确定所述波纹的传播平面上任一位置点的能量衰减系数和波形衰减系数;
39.调整参数确定模块,用于获取所述位置点的波峰调整参数,并根据所述能量衰减系数和所述波形衰减系数得到所述位置点的振幅调整参数;
40.法线偏移确定模块,用于获取所述波纹的初始法向量,并根据所述波峰调整参数和所述振幅调整参数确定所述位置点的法向量偏移值;
41.波纹渲染模块,用于根据所述初始法向量和所述法向量偏移值得到所述位置点的波动法向量,并通过所述波动法向量渲染所述波纹。
42.根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的波纹的渲染方法。
43.根据本公开的第四方面,提供一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的波纹的渲染方法。
44.本公开示例性实施例可以具有以下有益效果:
45.本公开示例实施方式的波纹的渲染方法中,在原始波纹的基础上,通过能量衰减系数和波形衰减系数调整波纹的振幅,并通过波峰调整参数调整波纹的波峰效果,一方面,可以渲染出具有真实衰减效果的波纹的传播图像,模拟出随着时间的推移波形逐渐减弱的效果;另一方面,不需要进行大量的计算就可以实现较为真实的波形效果,可以大大减少系统的消耗,节约系统资源。
46.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1示出了本公开示例实施方式的波纹的渲染方法的流程示意图;
49.图2示出了本公开示例实施方式的确定能量衰减系数和波形衰减系数的流程示意图;
50.图3示出了根据本公开的一个具体实施方式中的径向波纹的计算示意图;
51.图4示出了本公开示例实施方式的计算波形衰减系数的流程示意图;
52.图5示出了本公开示例实施方式的确定任一位置点的法向量偏移值的流程示意图;
53.图6示出了本公开示例实施方式的通过波动法向量渲染波纹的流程示意图;
54.图7示出了根据本公开的一个具体实施方式中第一时刻的波纹状态的示意图;
55.图8示出了根据本公开的一个具体实施方式中第二时刻的波纹状态的示意图;
56.图9示出了根据本公开的一个具体实施方式中第三时刻的波纹状态的示意图;
57.图10示出了根据本公开的一个具体实施方式中第四时刻的波纹状态的示意图;
58.图11示出了根据本公开的一个具体实施方式中第五时刻的波纹状态的示意图;
59.图12示出了本公开示例实施方式的波纹的渲染装置的框图;
60.图13示出了适于用来实现本公开实施方式的电子设备的计算机系统的结构示意图。
具体实施方式
61.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
62.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
63.本示例实施方式首先提供了一种波纹的渲染方法。参考图1所示,上述波纹的渲染方法可以包括以下步骤:
64.步骤s110.确定波纹的当前传播距离,并根据当前传播距离确定波纹的传播平面上任一位置点的能量衰减系数和波形衰减系数。
65.步骤s120.获取位置点的波峰调整参数,并根据能量衰减系数和波形衰减系数得到位置点的振幅调整参数。
66.步骤s130.获取波纹的初始法向量,并根据波峰调整参数和振幅调整参数确定位置点的法向量偏移值。
67.步骤s140.根据初始法向量和法向量偏移值得到位置点的波动法向量,并通过波动法向量渲染波纹。
68.在3d渲染领域,例如3d游戏或者3d视频中,波纹的应用非常广泛,其中,以水波最为常见,还包括一些其它形状类似水纹的表面,本示例实施方式中仅以水波为例进行说明。水波主要分为方向波和环形波,其中,环形波指的是当平静的水面受外部激发而产生的一系列环形的往外扩散的水波。本示例实施方式中的波纹的渲染方法,就可以用于环形波的渲染。
69.在一些相关的实施例中,对于环形波,以通过顶点来实现的方法居多,还有一些可以通过片元着色器(fragment shader)来实现。如果通过大量的顶点来模拟带起伏的顶点波,可以使用几何元着色器(geometry shader)来对顶点进行裂分,以足够多的顶点来完成水波的模拟,避免水波失真。然而这种方法需要依赖几何元着色器,对于一些比较老旧的设备将无法支持;如果不采用几何元着色器,则需要在cpu上产生大量的顶点,将极大的影响系统性能;如果只在cpu上产生少量的顶点,则会因为采样密度不足而导致波形失真。除此之外,如果通过简单的纹理高度图在片元着色器中实现,则又会在水波的效果上略微有些僵硬,并且无法在运行时调整波形。
70.另外,对于环形波扩散时发生衰减,以及环形波中的多个波纹衰减的现象,没有很好的模拟方法进行处理。而本公开示例实施方式通过在gpu gems提供的波浪模拟的基础之
上,加入了波浪移动、能量衰减以及波形衰减的模拟,可以让环形波看上去更真实。
71.本公开示例实施方式的波纹的渲染方法中,在原始波纹的基础上,通过能量衰减系数和波形衰减系数调整波纹的振幅,并通过波峰调整参数调整波纹的波峰效果,一方面,可以渲染出具有真实衰减效果的波纹的传播图像,模拟出随着时间的推移波形逐渐减弱的效果;另一方面,不需要进行大量的计算就可以实现较为真实的波形效果,可以大大减少系统的消耗,节约系统资源。
72.下面,结合图2至图11对本示例实施方式的上述步骤进行更加详细的说明。
73.在步骤s110中,确定波纹的当前传播距离,并根据当前传播距离确定波纹的传播平面上任一位置点的能量衰减系数和波形衰减系数。
74.本示例实施方式中,可以通过获取波纹的传播速度和传播时间,再根据波纹的传播速度和传播时间的乘积得到波纹的当前传播距离。在环形波中,波纹的当前传播距离即当前环形波的半径。
75.波纹的传播平面上任一位置点,可以在波纹的传播范围内部,也可以在波纹的传播范围外部。如果位置点在波纹的传播范围外部,则说明当前时间点波纹还没有到达,可以先不进行计算。
76.能量衰减指的是,随着波的不断传输扩散,导致能量不断减小,从而使波峰逐渐减小直至消失的现象。通过能量衰减系数,可以控制当前传播时间下波的振幅。波形衰减指的是,当一个环形水波产生时,会形成多圈环形波纹,从第一个波纹开始,后续的第二个、第三个直到第n个波纹的波峰会越来越小,直至消失,这个衰减过程称为波形衰减。通过波形衰减系数,可以进一步更加准确地控制当前传播时间下波的振幅。
77.本示例实施方式中,如图2所示,根据当前传播距离确定波纹的传播平面上任一位置点的能量衰减系数和波形衰减系数,具体可以包括以下几个步骤:
78.步骤s210.获取波纹的起始点坐标,以及位置点的位置点坐标。
79.波纹的起始点指的是波纹发生的位置点。对于环形波来说,由于其是当平静的水面受外部激发而产生的一系列环形的往外扩散的水波,因此,波纹的起始点也可以理解为水面受外部激发的位置点。
80.如图3所示,波纹的起始点为o点,波纹的当前位置在w点,a点为波纹传播范围以内的某一位置点,a’点为波纹传播范围以外的某一位置点。因此,可以将径向方向切割成两个部分:ow和a’w,其中,ow区间表示波纹传播范围内部,会有一组振幅逐渐变弱的波纹;a’w区间表示波纹传播范围外部,由于波还未传递到这个区域,因此无任何波纹。
81.本示例实施方式中,假设以xz平面为水平面,y轴向为垂直方向,采用左手坐标系,则波纹的起始点为o点,也就是xz平面中圆心所在的点,其坐标可以记为{x
o
,z
o
},xz平面中任意的一点a的坐标可以记为{x
a
,z
a
}。
82.步骤s220.根据波纹的起始点坐标和当前传播距离确定波纹的当前位置坐标。
83.继续参考图3,当前波传播到的位置w点的坐标可以记为{xw,zw}。假设波纹是从0时刻开始传播,在t时刻到达w点,则根据波纹的传播速度wavespeed和传播时间time的乘积可以得到波纹的当前传播距离wavemove,即:
84.wavemove=wavespeed*time=length(pointw,pointo)
85.其中,length(point1,poin2)表示两点间的长度,即:
[0086][0087]
步骤s230.根据位置点的位置点坐标与波纹的当前位置坐标确定位置点与波纹的当前位置之间的距离。
[0088]
继续参考图3,对于波纹传播范围以内的任一位置点a,计算点a到点o,以及点a到点w的距离分别为:
[0089]
distanceoa=length(pointo,pointa)
[0090]
distanceaw=wavemove

distanceoa
[0091]
当distanceaw小于0时,即图3中a’点的情况,则抛弃运算;当distanceaw大于等于0时,则根据后续步骤继续计算能量衰减系数和波形衰减系数。
[0092]
步骤s240.在位置点与波纹的当前位置之间的距离大于或等于零时,根据波纹的当前传播距离确定波纹中所有位置点当前的能量衰减系数。
[0093]
本示例实施方式中,可以通过获取波纹的基础能量系数,以及能量距离衰减系数,再根据波纹的基础能量系数、能量距离衰减系数以及波纹的当前传播距离得到波纹中所有位置点当前的能量衰减系数。所有位置点当前的能量衰减系数k
e
的具体计算公式如下:
[0094][0095]
其中,wavemove表示波纹的当前传播距离;k
basee
表示波纹的基础能量系数,用于确定初始状态的能量强度(即wavemove为0时的值);atten
e
表示能量距离衰减系数。波纹的基础能量系数和能量距离衰减系数的值可以根据具体的需求进行设定。
[0096]
步骤s250.根据位置点与波纹的当前位置之间的距离确定位置点的波形衰减系数。
[0097]
本示例实施方式中,如图4所示,根据位置点与波纹的当前位置之间的距离确定位置点的波形衰减系数,具体可以包括以下几个步骤:
[0098]
步骤s410.获取波纹的基础波形振幅系数、波形距离衰减系数以及波峰偏移量。
[0099]
首先获取波纹的基础波形振幅系数k
basew
,用于确定初始态的振幅强度;获取波形距离衰减系数atten
w
;获取波峰偏移量offset,用于修正计算最大波峰离当前波传播位置的距离。
[0100]
步骤s420.根据位置点与波纹的当前位置之间的距离确定位置点的波峰位置,并根据波峰偏移量对位置点的波峰位置进行修正。
[0101]
波峰偏移量offset的确定是基于波传播到的位置强度不是最大,而是过一段达到最大的原理,即当distanceaw=offset时,才是波峰最大的位置。因此,可以通过计算distanceaw

offset的值对位置点的波峰位置进行修正。
[0102]
步骤s430.根据修正后的位置点的波峰位置,以及波纹的基础波形振幅系数和波形距离衰减系数,得到位置点的波形衰减系数。
[0103]
获取上述参数之后,对于某一位置点的波形衰减系数,具体的计算公式如下:
[0104][0105]
其中,abs表示求绝对值的函数。
[0106]
在步骤s120中,获取位置点的波峰调整参数,并根据能量衰减系数和波形衰减系数得到位置点的振幅调整参数。
[0107]
本示例实施方式中,波峰调整参数指的是gerstner(盖斯特纳)参数。盖斯特纳波(gerstner wave)指的是一种基于正弦函数的变种,可以让波峰变得更尖锐。因此,在正弦波的基础上加入gerstner参数,并将其作为波峰调整参数,可以控制波峰的尖锐程度。其中,gerstner参数的取值一般为0~1。
[0108]
另外,本示例实施方式中,可以根据能量衰减系数和波形衰减系数的乘积,得到任一位置点的振幅调整参数。
[0109]
在步骤s130中,获取波纹的初始法向量,并根据波峰调整参数和振幅调整参数确定位置点的法向量偏移值。
[0110]
本示例实施方式中,可以将任一位置点的波纹的初始法向量设置为一个正向上的单位法向量,即{x=0,y=1,z=0}。
[0111]
本示例实施方式中,如图5所示,根据波峰调整参数和振幅调整参数确定位置点的法向量偏移值,具体可以包括以下几个步骤:
[0112]
步骤s510.根据位置点与波纹的当前位置之间的距离确定位置点的当前相位,并根据当前相位得到位置点当前的正弦函数和余弦函数。
[0113]
本示例实施方式中,可以根据位置点与波纹的当前位置之间的距离确定位置点的当前相位,计算公式如下:
[0114]
phi=ω*distanceaw
[0115]
其中,位置点与波纹的当前位置之间的距离为distanceaw,ω是一个固定参数。
[0116]
确定位置点的当前相位之后,就可以根据当前相位分别得到该位置点当前的正弦函数s和余弦函数c,计算公式分别为:
[0117]
s=sin(phi)
[0118]
c=cos(phi)
[0119]
步骤s520.根据位置点当前的正弦函数和余弦函数以及波峰调整参数得到位置点的归一化法向量。
[0120]
首先,计算位置点a在xz平面下,当前径向的方向:
[0121]
diroa=dir(pointo,pointa)
[0122]
其中,dir(point1,point2)表示point1到point2的方向,其计算公式为:
[0123][0124]
其次,计算位置点a在xyz空间下的当前的法向量为:
[0125]
x=

diroa.x*ω*amplitude*c
[0126]
y=1

gerstner*s
[0127]
z=

diroa.z*ω*amplitude*c
[0128]
其中,amplitude表示波的基准振幅,可以根据实际需求进行设定;gerstner为gerstner参数,即波峰调整参数。
[0129]
对上述位置点a的法向量进行归一化处理,即可得到位置点a的归一化法向量为:normal=normalize({x,y,z})。其中,归一化的具体方法为:normalize.y和normalize.z的归一化方法与之类似。
[0130]
步骤s530.根据归一化法向量与振幅调整参数的乘积得到位置点的法向量偏移值。
[0131]
将上一步骤中得到的位置点a的归一化法向量与振幅调整参数相乘,即可得到位置点a的法向量偏移值normaladd,即:
[0132]
normaladd=normal*k
e
*k
w
[0133]
在步骤s140中,根据初始法向量和法向量偏移值得到位置点的波动法向量,并通过波动法向量渲染波纹。
[0134]
本示例实施方式中,通过将法向量偏移值作用在初始法向量上,在进行归一化处理,可以得到该位置点的波动法向量normalfinal为:normalfinal=normalize({normaladd.x,1+normaladd.y,normaladd.z})
[0135]
最后,通过上述波动法向量计算光照和反射扭曲,从而得到最终渲染的波纹。
[0136]
本示例实施方式中,如图6所示,通过波动法向量渲染波纹,具体可以包括以下几个步骤:
[0137]
步骤s610.获取光照参数,并根据光照参数和波动法向量得到位置点的漫反射颜色和镜面反射颜色。
[0138]
本示例实施方式中,需要输入的光照参数包括:光源方向(方向光)、光源颜色、波动法向量(normalfinal)以及观察方向(指向摄像机的方向)。
[0139]
获取上述参数之后,可以根据漫反射方程和镜面反射方程分别计算出漫反射颜色colordiff和镜面反射颜色colorspec。
[0140]
步骤s620.获取反射扭曲因子,根据反射扭曲因子和波动法向量得到位置点的纹理坐标。
[0141]
反射扭曲因子(paramreflect),可以用于确定波动法向量对反射贴图扭曲强度,反射扭曲因子的值全局唯一。其中,反射贴图可以通过求解反射矩阵,将场景渲染到一张贴图上得到。
[0142]
获取反射扭曲因子之后,首先,获取裁剪空间下的坐标点projcoord,并通过将顶点坐标从局部坐标系变换到裁剪空间获得输入数据。其中,裁剪空间是渲染流水线中的其中一个坐标空间,是转换的目标坐标系。
[0143]
然后,根据裁剪空间下的坐标点projcoord,以及反射扭曲因子和波动法向量得到纹理坐标texcoord为:
[0144]
texcoord=projcoord.xy+normalfinal.xz*paramreflect
[0145]
步骤s630.获取位置点的反射贴图,并通过纹理坐标对反射贴图进行采样,得到位置点的反射颜色。
[0146]
本示例实施方式中,通过使用纹理坐标texcoord对反射贴图进行采样,可以得到反射颜色colorreflect。
[0147]
步骤s640.根据反射颜色、漫反射颜色和镜面反射颜色得到位置点的位置点颜色,
并通过各个位置点的位置点颜色渲染波纹。
[0148]
根据反射颜色、漫反射颜色和镜面反射颜色的和输出最终的位置点颜色为:
[0149]
colorfinal=colorreflect+colordiff+colorspec。
[0150]
最后,通过各个位置点的位置点颜色来渲染得到最终的波纹。
[0151]
图7至图11示意性示出了5个连续时刻的水波的状态,可以看出,随着时间的推移,水波逐渐向外扩散,并且水波的振幅逐渐减小。通过本示例实施方式中的波纹的渲染方法得到的环形水波,在传播过程中显得非常自然,有很真实的衰减现象。
[0152]
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
[0153]
进一步的,本公开还提供了一种波纹的渲染装置。参考图12所示,该波纹的渲染装置可以包括衰减系数确定模块1210、调整参数确定模块1220、法线偏移确定模块1230以及波纹渲染模块1240。其中:
[0154]
衰减系数确定模块1210可以用于确定波纹的当前传播距离,并根据当前传播距离确定波纹的传播平面上任一位置点的能量衰减系数和波形衰减系数;
[0155]
调整参数确定模块1220可以用于获取位置点的波峰调整参数,并根据能量衰减系数和波形衰减系数得到位置点的振幅调整参数;
[0156]
法线偏移确定模块1230可以用于获取波纹的初始法向量,并根据波峰调整参数和振幅调整参数确定位置点的法向量偏移值;
[0157]
波纹渲染模块1240可以用于根据初始法向量和法向量偏移值得到位置点的波动法向量,并通过波动法向量渲染波纹。
[0158]
在本公开的一些示例性实施例中,衰减系数确定模块1210可以包括传播参数确定单元以及传播距离确定单元。其中:
[0159]
传播参数确定单元可以用于获取波纹的传播速度和传播时间;
[0160]
传播距离确定单元可以用于根据波纹的传播速度和传播时间的乘积得到波纹的当前传播距离。
[0161]
在本公开的一些示例性实施例中,衰减系数确定模块1210还可以包括位置点坐标获取单元、当前位置坐标确定单元、位置点距离确定单元、能量衰减系数确定单元以及波形衰减系数确定单元。其中:
[0162]
位置点坐标获取单元可以用于获取波纹的起始点坐标,以及位置点的位置点坐标;
[0163]
当前位置坐标确定单元可以用于根据波纹的起始点坐标和当前传播距离确定波纹的当前位置坐标;
[0164]
位置点距离确定单元可以用于根据位置点的位置点坐标与波纹的当前位置坐标确定位置点与波纹的当前位置之间的距离;
[0165]
能量衰减系数确定单元可以用于在位置点与波纹的当前位置之间的距离大于或等于零时,根据波纹的当前传播距离确定波纹中所有位置点当前的能量衰减系数;
[0166]
波形衰减系数确定单元可以用于以及,根据位置点与波纹的当前位置之间的距离
确定位置点的波形衰减系数。
[0167]
在本公开的一些示例性实施例中,能量衰减系数确定单元可以包括能量衰减参数获取单元以及能量衰减系数计算单元。其中:
[0168]
能量衰减参数获取单元可以用于获取波纹的基础能量系数,以及能量距离衰减系数;
[0169]
能量衰减系数计算单元可以用于根据波纹的基础能量系数、能量距离衰减系数以及波纹的当前传播距离得到波纹中所有位置点当前的能量衰减系数。
[0170]
在本公开的一些示例性实施例中,波形衰减系数确定单元可以包括波形衰减参数获取单元、波峰位置修正单元以及波形衰减系数计算单元。其中:
[0171]
波形衰减参数获取单元可以用于获取波纹的基础波形振幅系数、波形距离衰减系数以及波峰偏移量;
[0172]
波峰位置修正单元可以用于根据位置点与波纹的当前位置之间的距离确定位置点的波峰位置,并根据波峰偏移量对位置点的波峰位置进行修正;
[0173]
波形衰减系数计算单元可以用于根据修正后的位置点的波峰位置,以及波纹的基础波形振幅系数和波形距离衰减系数,得到位置点的波形衰减系数。
[0174]
在本公开的一些示例性实施例中,法线偏移确定模块1230可以包括正弦函数确定单元、归一化法向量确定单元以及法向量偏移值确定单元。其中:
[0175]
正弦函数确定单元可以用于根据位置点与波纹的当前位置之间的距离确定位置点的当前相位,并根据当前相位得到位置点当前的正弦函数和余弦函数;
[0176]
归一化法向量确定单元可以用于根据位置点当前的正弦函数和余弦函数以及波峰调整参数得到位置点的归一化法向量;
[0177]
法向量偏移值确定单元可以用于根据归一化法向量与振幅调整参数的乘积得到位置点的法向量偏移值。
[0178]
在本公开的一些示例性实施例中,波纹渲染模块1240可以包括光照反射计算单元、纹理坐标确定单元、反射扭曲计算单元以及波纹渲染单元。其中:
[0179]
光照反射计算单元可以用于获取光照参数,并根据光照参数和波动法向量得到位置点的漫反射颜色和镜面反射颜色;
[0180]
纹理坐标确定单元可以用于获取反射扭曲因子,根据反射扭曲因子和波动法向量得到位置点的纹理坐标;
[0181]
反射扭曲计算单元可以用于获取位置点的反射贴图,并通过纹理坐标对反射贴图进行采样,得到位置点的反射颜色;
[0182]
波纹渲染单元可以用于根据反射颜色、漫反射颜色和镜面反射颜色得到位置点的位置点颜色,并通过各个位置点的位置点颜色渲染波纹。
[0183]
上述波纹的渲染装置中各模块/单元的具体细节在相应的方法实施例部分已有详细的说明,此处不再赘述。
[0184]
图13示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
[0185]
需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0186]
如图13所示,计算机系统1300包括中央处理单元(cpu)1301,其可以根据存储在只
读存储器(rom)1302中的程序或者从存储部分1308加载到随机访问存储器(ram)1303中的程序而执行各种适当的动作和处理。在ram 1303中,还存储有系统操作所需的各种程序和数据。cpu 1301、rom 1302以及ram 1303通过总线1304彼此相连。输入/输出(i/o)接口1305也连接至总线1304。
[0187]
以下部件连接至i/o接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
[0188]
特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(cpu)1301执行时,执行本申请的系统中限定的各种功能。
[0189]
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0190]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组
合来实现。
[0191]
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。
[0192]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0193]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。
[0194]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1