水流动画生成方法、装置、存储介质与电子设备与流程

未命名 07-27 阅读:91 评论:0


1.本公开涉及计算机技术领域,尤其涉及一种水流动画生成方法、水流动画生成装置、计算机可读存储介质与电子设备。


背景技术:

2.水流动画常常应用于影视、游戏、动画等领域,通过在虚拟场景中增加水流动画,可以呈现拟真虚拟场景,提升虚拟场景的氛围感和生动性。
3.相关技术中,通常需要工作人员基于经验,手工制作水流动画。显然,该方法需要耗费较高的人力成本和时间成本,且效率低下。


技术实现要素:

4.本公开提供了一种水流动画生成方法、水流动画生成装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善水流动画生成效率低的问题。
5.本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
6.根据本公开的第一方面,提供一种水流动画生成方法,包括:基于水流贴图获取像素点的基础水流颜色;根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值,所述目标帧是待生成的水流动画中的一帧或多帧,所述时间参数在一个水流周期内随帧序递增,所述第一偏移值与所述第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;基于所述基础水流颜色获取水流参数,并根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色;采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;基于所述每一帧中所述像素点的目标水流颜色生成所述水流动画。
7.根据本公开的第二方面,提供一种水流动画生成装置,包括:基础水流颜色获取模块,被配置为基于水流贴图获取像素点的基础水流颜色;偏移值确定模块,被配置为根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值,所述目标帧是待生成的水流动画中的一帧或多帧,所述时间参数在一个水流周期内随帧序递增,所述第一偏移值与所述第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;第一水流颜色和第二水流颜色获取模块,被配置为基于所述基础水流颜色获取水流参数,并根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色;颜色混合模块,被配置为采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;水流动画获取模块,被配置为基于所述每一帧中所述像素点的目标水流颜色生成所述水流动画。
8.根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的水流动画生成方法及其可能的实现方式。
9.根据本公开的第四方面,提供一种电子设备,包括:处理器;存储器,用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令,来执行上述第一方面的水流动画生成方法及其可能的实现方式。
10.本公开的技术方案具有以下有益效果:
11.一方面,实现了自动化生成水流动画,相比于手工制作水流动画的方式,提高了效率,并且降低了生成水流动画的人力成本和时间成本。另一方面,本方案能够基于水流参数和第一偏移值,第二偏移值分别获取第一水流颜色和第二水流颜色,并利用颜色混合参数将第一水流颜色和第二水流颜色进行混合,以得到目标水流颜色,再基于每一帧的像素点的目标水流颜色生成水流动画,降低了方法的复杂度,以及生成水流动画过程的性能消耗,提升了水流动画的播放流畅度,有效改善了用户体验。再一方面,基于目标帧的时间参数生成了周期性变化的第一偏移值和第二偏移值,并根据第一偏移值和第二偏移值获取第一水流颜色和第二水流颜色,将第一水流颜色与第二水流颜色进行混合以得到像素点的目标水流颜色,实现了水流效果的循环播放效果,提升了水流动画的真实感以及生动性。
12.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
13.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
14.图1示出本示例性实施方式的系统运行架构;
15.图2示出本示例性实施方式中一种生成水流动画的流程图;
16.图3a示出本示例性实施方式中一种水流场景贴图的示意图;
17.图3b示出本示例性实施方式中一种水流噪声贴图的示意图;
18.图4示出本示例性实施方式中一种获取基础水流颜色的流程图;
19.图5示出本示例性实施方式中一种获取第一水流颜色和第二水流颜色的流程图;
20.图6示出本示例性实施方式中一种获取第一颜色采样坐标和第二颜色采样坐标的流程图;
21.图7示出本示例性实施方式中一种获取目标水流颜色的流程图;
22.图8示出本示例性实施方式中另一种获取目标水流颜色的流程图;
23.图9示出本示例性实施方式中一种水流动画生成装置的结构示意图;
24.图10示出本示例性实施方式中一种电子设备的结构示意图。
具体实施方式
25.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许
多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
26.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
27.相关技术中,工作人员通常将水流效果制作成骨骼动画或帧动画。但由于动画制作过程较为复杂,且需要耗费大量的时间成本和人力成本,使得生成水流动画的过程效率低下。且由此得到的水流动画,在加载和播放时需要耗费较大的性能开销,容易导致播放卡顿,使得用户观看体验较差。
28.鉴于上述一个或多个问题,本公开示例性实施方式首先提供一种水流动画生成方法。下面结合图1对本示例性实施方式运行环境的系统架构进行说明。
29.参考图1所示,系统架构100可以包括终端设备110。终端设备110可以是笔记本电脑、台式电脑、平板电脑等电子设备,终端设备110可以用于从水流贴图中获取像素点的基础水流颜色。
30.可以由终端设备110执行本示例性实施方式中的水流动画生成方法。例如,在游戏场景中,终端设备110可以是运行游戏的电脑,水流贴图可以是包括水流的游戏场景图像,也可以是只有水流的水流噪声图像,终端设备110通过执行闪电动画生成方法,基于水流贴图在游戏场景中生成水流动画,使得游戏场景更具氛围感和生动性,从而提升玩家的沉浸感。
31.由上可知,本示例性实施方式中的水流动画生成方法可以由上述终端设备110执行。
32.下面结合图2对水流动画生成方法进行说明。图2示出了水流动画生成方法的示例性流程,包括以下步骤s210至s250:
33.步骤s210,基于水流贴图获取像素点的基础水流颜色;
34.步骤s220,根据目标帧的时间参数确定目标帧的第一偏移值与第二偏移值,目标帧是待生成的水流动画中的一帧或多帧,时间参数在一个水流周期内随帧序递增,第一偏移值与第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;
35.步骤s230,基于基础水流颜色获取水流参数,并根据水流参数与第一偏移值得到第一水流颜色,根据水流参数与第二偏移值获取第二水流颜色;
36.步骤s240,采用颜色混合参数对第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;
37.步骤s250,基于每一帧中像素点的目标水流颜色生成水流动画。
38.基于上述方法,一方面,实现了自动化生成水流动画,相比于手工制作水流动画的方式,提高了效率,并且降低了生成水流动画的人力成本和时间成本。另一方面,本方案能够基于水流参数和第一偏移值,第二偏移值分别获取第一水流颜色和第二水流颜色,并利
用颜色混合参数将第一水流颜色和第二水流颜色进行混合,以得到目标水流颜色,再基于每一帧的像素点的目标水流颜色生成水流动画,降低了方法的复杂度,以及生成水流动画过程的性能消耗,提升了水流动画的播放流畅度,有效改善了用户体验。再一方面,基于目标帧的时间参数生成了周期性变化的第一偏移值和第二偏移值,并根据第一偏移值和第二偏移值获取第一水流颜色和第二水流颜色,将第一水流颜色与第二水流颜色进行混合以得到像素点的目标水流颜色,实现了水流效果的循环播放效果,提升了水流动画的真实感以及生动性。
39.下面对图2中的每个步骤进行具体说明。
40.参考图2,在步骤s210中,基于水流贴图获取像素点的基础水流颜色。
41.其中,水流贴图是包括水流图像的贴图,如图3a和图3b所示;基础水流颜色可以表征水流贴图中水流的颜色;像素点可以是水流贴图中水流区域的像素点。
42.在一种实施方式中,上述水流贴图可以包括水流场景贴图和水流噪声贴图;上述基于水流贴图获取像素点的基础水流颜色,如图4所示,可以包括步骤s410~s420:
43.步骤s410,基于水流场景贴图获取水流噪声贴图;
44.步骤s420,利用像素点的纹理坐标对水流噪声贴图进行颜色采样,以获取像素点的基础水流颜色。
45.其中,水流场景贴图可以是包括水流以及其他虚拟元素的图像,如图3a所示,水流噪声贴图可以是仅包括水流元素的贴图,如图3b所示。
46.举例而言,可以利用opengl的颜色采样函数texture2d,基于水流场景贴图中水流区域的像素点的纹理坐标vtexturecoord,对水流噪声贴图usamplernoise进行采样,以得到基础水流颜色flowcolor。
47.基于图4的方法,基于水流场景贴图获取水流噪声贴图,并对水流噪声贴图进行颜色采样,以得到像素点的基础水流颜色,能够降低获取基础水流颜色的方法复杂度,且降低其他虚拟元素对基础水流颜色的干扰,有效提高了获取基础水流颜色的准确度。
48.在一种实施方式中,上述基于水流场景贴图获取水流噪声贴图,可以包括:对水流场景贴图中水流以外的区域进行透明化处理,以得到水流噪声贴图。
49.举例而言,工作人员可以制作出水流场景贴图,再将水流场景贴图中除水流以外的区域的像素点设置为透明,以得到水流噪声贴图,水流噪声贴图中水流区域以外区域像素点的纹理坐标为0。
50.可见,基于水流场景贴图获取水流噪声贴图的方法能够使水流噪声贴图和水流场景贴图中的水流位置和尺寸保持一致,从而根据水流噪声贴图精确获取水流场景贴图中的水流位置,以提高获取基础水流颜色的准确度。
51.继续参考图2,在步骤s220中,可以根据目标帧的时间参数确定目标帧的第一偏移值与第二偏移值,目标帧是待生成的水流动画中的一帧或多帧,时间参数在一个水流周期内随帧序递增,第一偏移值与第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化。
52.其中,时间参数可以是在一个水流周期内随帧序递增的变量,例如,时间参数可以在0到1之间递增,当时间参数为0时,可以表示一个水流周期开启,当时间参数为1时,可以表一个水流周期结束,即时间参数从0递增到1的过程是单个水流效果的全过程。水流周期
可以表征单个水流效果的全过程,示例性的,在单个水流周期中,水流最左侧水流像素的纹理信息可以线性漂移至水流最右侧。第一偏移值和第二偏移值是用于对水流颜色进行采样时,确定采样位置的两个偏移值,两者之间相差采样间隔值,使得在获取水流颜色时可以在不同的采样位置进行采样,从而得到双采样的水流颜色效果,例如,第一偏移值可以根据时间参数value确定,第二偏移值则可以根据value与采样间隔值的和确定;采样间隔值是关于根据时间参数生成第二偏移值的常量,本公开对采样间隔值的具体数值不作特殊限定,例如,采样间隔值可以是0.5。
53.在一种实施方式中,上述根据目标帧的时间参数确定目标帧的第一偏移值与第二偏移值,可以包括下述步骤:
54.根据时间参数确定第一偏移值;
55.根据时间参数与采样间隔值的和确定第二偏移值。
56.举例而言,时间参数value的数值范围可以是[0,1],即每一个目标帧都对应一个value,在一个水流周期中,value可以在[0,1]范围内自增,若当前水流周期结束,则此时value的值为1,将value的值设置为0,以开启下一个水流周期;value在连续的水流周期中呈现0-》1-》0-》1......的循环。若value=0,采样间隔值为0.5,则可以利用opengl中的fract函数和时间参数得到第一偏移值fract(value)=frac(0)=0和第二偏移值fract(value+0.5)=fract(0.5)=0.5;其中,fract()函数经常用于取小数计算,fract(x)可以等同于x-floor(x),floor(x)可以用于对x向下取整。若value=0.5,则则第一偏移值fract(value)=frac(0.5)=0.5,第二偏移值fract(value+0.5)=fract(1)=1。若value=1,则第一偏移值fract(value)=frac(1)=1,第二偏移值fract(value+0.5)=fract(1.5)=0.5。也就是说,在单个水流周期中,若时间参数value从0递增到1,则第一偏移值呈现0-》0.5-》1的递增,第二偏移值呈现0.5-》1-》0.5的变化,当单个水流周期结束,value又被重置为0,因此,在多个水流周期中,第一偏移值和第二偏移值都呈现周期性变化,且第一偏移值和第二偏移值之间总是相差采样间隔值0.5。
[0057]
上述根据时间参数获取第一偏移值和第二偏移值的方法,确保了第一偏移值和第二偏移值的周期性变化,从而实现了第一水流颜色和第二水流颜色的周期性变化,实现了水流动画循环播放的效果。
[0058]
在获取了基础水流颜色,第一偏移值和第二偏移值后,继续参考图2,可以在步骤s230中,基于基础水流颜色获取水流参数,并根据水流参数与第一偏移值得到第一水流颜色,根据水流参数与第二偏移值获取第二水流颜色。
[0059]
其中,第一水流颜色和第二水流颜色可以表示水流贴图中不同像素点的水流颜色。
[0060]
在一种实施方式中,上述基于基础水流颜色获取水流参数,可以包括:将像素点的纹理坐标、预设水流强度参数以及预设水流方向参数相乘,以获取水流参数。
[0061]
其中,像素点的纹理坐标可以包括像素点的纹理信息,本公开对像素点的纹理坐标的获取方式不作特殊限定,举例而言,像素点的纹理坐标可以根据水流场景贴图中的像素点获取,还可以根据基础水流颜色的纹理坐标获取,如基础水流颜色可以用flowcolor表示,则像素点的纹理坐标flowcoord=vec2(flowcolor.x,flowcolor.y)。预设水流强度参数可以是表征水流的流动强度的参数,本公开对预设水流强度参数的具体数值不作特殊限
定,示例性的,预设水流强度参数可以是一个二维变量,如预设水流强度参数flowstrength=vec2(strength,strength)。预设水流方向参数可以是表征水流方向的参数,举例而言,水流方向可以包括上、下、左、右,则预设水流方向参数flowdirection=vec(0.0,1.0)可以表示水流方向为上,flowdirection=vec(0.0,-1.0)可以表示水流方向为下,flowdirection=vec(1.0,0.0)可以表示水流方向为左,flowdirection=vec(-1.0,0.0)可以表示水流方向为右。
[0062]
举例而言,将像素点的纹理坐标flowcoord和预设水流强度参数flowstrength、预设水流方向参数flowdirection三者相乘,可以得到基于三者的水流参数flowfactor。该水流参数包括了水流方向信息和水流强度信息,且计算复杂度低,有利于提高了水流动画的整体运行效率。
[0063]
在一种实施方式中,上述根据水流参数与第一偏移值得到第一水流颜色,根据水流参数与第二偏移值获取第二水流颜色,如图5所示,可以包括步骤s510~s520:
[0064]
在步骤s510中,根据水流参数与第一偏移值获取第一颜色采样坐标,并基于水流参数与第二偏移值获取第二颜色采样坐标。
[0065]
其中,颜色采样坐标是在水流噪声贴图中进行颜色采样的依据。在一种实施方式中,上述根据水流参数与第一偏移值获取第一颜色采样坐标,并基于水流参数与第二偏移值获取第二颜色采样坐标,如图6所示,可以包括步骤s610~s620:
[0066]
步骤s610,将水流参数分别与第一偏移值,第二偏移值相乘,以得到第一偏移坐标和第二偏移坐标;
[0067]
步骤s620,将像素点的纹理坐标分别与第一偏移坐标、第二偏移坐标相加,以得到第一颜色采样坐标和第二颜色采样坐标。
[0068]
举例而言,基于时间参数value进行两次偏移值计算,以得到第一偏移值fract(value)和第二偏移值fract(value+0.5);则可以根据下述公式(1)和公式(2)分别获取第一偏移坐标和第二偏移坐标:
[0069]
vec2 offset1=flowfactor* fract(value) (1)
[0070]
vec2 offset2=flowfactor* fract(value+0.5) (2)
[0071]
其中,offset1表示第一偏移坐标,offset2表示第二偏移坐标,flowfactor表示水流参数,vec2表示offset1和offset2是二维变量。
[0072]
在获取到第一偏移坐标和第二偏移坐标后,可以根据下述公式(3)和公式(4)分别获取第一颜色采样坐标和第二颜色采样坐标:
[0073]
vec2 uv1=vtexturecoord.xy+offset1 (3)
[0074]
vec2 uv2=vtexturecoord.xy+offset2 (4)
[0075]
其中,uv1可以表示第一颜色采样坐标,uv2可以表示第二颜色采样坐标,上述vtexturecoord.xy可以表示像素点的纹理坐标,offset1表示第一偏移坐标,offset2表示第二偏移坐标,vec2表示uv1和uv2是二维变量。
[0076]
在获取到第一颜色采样坐标和第二颜色采样坐标后,可以在步骤s520中,利用第一颜色采样坐标与第二颜色采样坐标分别对水流场景贴图进行颜色采样,以得到第一水流颜色和第二水流颜色。
[0077]
举例而言,可以通过下述公式(5)和公式(6),利用texture2d()函数以及颜色采样
坐标对水流场景贴图进行颜色采样,以得到第一水流颜色和第二水流颜色:
[0078]
vec4 color1= texture2d(usampler,uv1) (5)
[0079]
vec4 color2= texture2d(usampler,uv2) (6)
[0080]
其中,color1、color2分别表示第一水流颜色、第二水流颜色;usampler可以表示水流场景贴图;uv1、uv2可以分别表示第一颜色采样坐标、第二颜色采样坐标;vec4可以表示第一水流颜色、第二水流颜色为由四个浮点数组成的向量。
[0081]
基于图5的方法,可以实现循环双采样相差采样间隔值倍数的uv坐标对应的颜色值,从而实现水流效果的循环播放,进一步提升水流动画的真实感。
[0082]
在获取第一水流颜色和第二水流颜色后,继续参考图2,可以在步骤s240中,采用颜色混合参数对第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色。
[0083]
其中,目标水流颜色可以是像素点在目标帧中所呈现的颜色,在一种实施方式中,上述采用颜色混合参数对第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色,参考图7所示,可以包括步骤s710~s720:
[0084]
步骤s710,基于时间参数计算颜色混合参数;
[0085]
步骤s720,利用颜色混合参数对第一水流颜色与第二水流颜色进行线性插值,根据线性插值的运算结果得到每一帧的像素点的目标水流颜色。
[0086]
其中,插值是根据已知的数据序列(例如一系列离散的点),找到其中的规律,然后根据这个规律,来对其中尚未有数据记录的点进行数值估算,而线性插值是根据一维数据序列中需要插值的点的左右临近两个数据来进行数值估算(根据到这两个点的距离来分配数值估算比重)。
[0087]
举例而言,根据时间参数与第一颜色混合参考值和第二颜色混合参考值计算颜色混合参数的过程可以如下述公式7所示,本公开对第一颜色混合参考值和第二颜色混合参考值的具体数值不作特殊限定,示例性的,第一颜色参考值可以是2.0,第二颜色参考值可以是1.0。
[0088]
interpolation=abs(fract(value)*2.0-1.0) (7)
[0089]
其中,interpolation可以表示颜色混合参数,value是时间参数,fract(value)表示根据时间参数获取的第一偏移值,2.0可以是第一颜色混合参考值,1.0可以表示第二颜色混合参考值,abs(x)函数的作用是取x的绝对值。
[0090]
在获取到颜色混合参数后,可以根据下述公式(8)利用mix()函数和颜色混合参数对第一水流颜色与第二水流颜色进行线性插值,以获取每一帧的像素点的目标水流颜色:
[0091]
vec4 blendcolor = mix(color1,color2,interpolation) (8)
[0092]
=color1*(1-interpolation)+color2*interpolation
[0093]
其中,blendcolor可以表示目标水流颜色,color1表示第一水流颜色,color2表示第二水流颜色,interpolation可以表示颜色混合参数,vec4可以表示颜色混合参数blendcolor是由四个浮点数组成的向量。
[0094]
基于图7的方法,通过时间参数value获取颜色混合参数,再使用颜色混合参数对第一水流颜色和第二水流颜色进行线性插值,以得到目标水流颜色的过程运算量较小,且复杂度低,提高了获取目标水流颜色的运算效率,有利于提高生成水流动画的整体效率。
[0095]
在获取到目标水流颜色后,继续参考图2,在步骤s250,可以基于每一帧中像素点的目标水流颜色生成水流动画。
[0096]
举例而言,在游戏场景中,可以将确定了目标水流颜色的多帧水流场景贴图进行组合,以得到单个水流周期的所有图像帧,根据单个水流周期的所有图像帧可以生成水流动画,再导入虚幻引擎中,以在水流场景贴图所对应的游戏场景中进行播放,以提升水流效果的真实感,从而提高游戏的表现力和生动性。
[0097]
在一种实施方式中,如图8所示,可以将生成水流动画的过程分为数据预处理,时间参数处理以及目标水流颜色生成三大部分,可以根据下述步骤s801~s817获取目标帧的水流颜色,从而生成水流动画:
[0098]
步骤s801,将预设的水流场景贴图usampler中水流以外区域间透明化处理,以得到水流噪声贴图usamplernoise,并将水流噪声提提存入路径noiseurl;
[0099]
步骤s802,根据预设的水流噪声贴图资源路径noiseurl加载水流噪声贴图noisetexture;
[0100]
步骤s803,将水流噪声贴图noisetexture传入目标水流颜色生成部分并声明为usamplernoise;
[0101]
步骤s804,将预设的水流强度strength和水流方向direction传入目标水流颜色生成部分;
[0102]
步骤s805,根据时间参数value与预设速度因子speedvalue的和更新时间参数:value=value+speedvalue(预设速度因子的值可以是0.1);
[0103]
步骤s806,时间参数大于预设时间参数阈值value》=1,若是,跳转至步骤s807,否则,跳转至步骤s808;
[0104]
步骤s807,将时间参数置为0:value=0;
[0105]
步骤s808,将value传入目标水流颜色生成部分;
[0106]
步骤s809,利用texture2d()函数和水流基础贴图的纹理坐标vtexturecoord对水流噪声贴图usamplernoise采样得到基础水流颜色flowcolor∶flowcolor=texture2d(usamplernoise,vtexturecoord);
[0107]
步骤s810,从基础水流颜色flowcolor中提取出像素点的纹理坐标flowcoord∶flowcoord=vec2(flowcolor.x,flowcolor.y);
[0108]
步骤s811,根据传入的水流强度strength计算出预设水流强度参数flowstrength∶flowstrength=vec2(strength,strength);
[0109]
步骤s812,根据传入的水流方向direction计算出预设水流方向参数flowdirection∶if(direction==1.0)flowdirection=vec2(0.0,1.0)else if(direction==2.0)flowdirection=vec2(0.0,-1.0)else if(direction==3.0)flowdirection=vec2(1.0,0.0)else if(direction==4.0)flowdirection=vec2(-1.0,0.0);
[0110]
步骤s813,基于像素点的纹理坐标flowcoord,预设水流强度参数flowstrength,预设水流方向参数flowdirection计算水流参数flowfactor:flowfactor=flowcoord*flowstrength*flowdirection;
[0111]
步骤s814,对时间参数value进行两次偏移值计算,以得到第一偏移值fract
(value)和第二偏移值fract(value+0.5);将水流参数flowfactor与第一偏移值和第二偏移值相乘,得到第一偏移坐标offset1=flowfactor*fract(value),第二偏移坐标offset2=flowfactor*fract(value+0.5);
[0112]
步骤s815,将水流场景贴图的纹理坐标vtexturecoord.xy加上第一偏移坐标offset1、第二偏移坐标offset2,得到第一颜色采样坐标uv1和第二颜色采样坐标uv2∶uv1=vtexturecoord.xy+offset1 uv2=vtexturecoord.xy+offset2;
[0113]
步骤s816,基于第一颜色采样坐标uv1和第二颜色采样坐标uv2,对水流场景贴图usampler进行两次采样得到第一水流颜色color1和第二水流颜色color2∶color1=texture2d(usampler,uv1)color2=texture2d(usampler,uv2);
[0114]
步骤s817,基于时间参数value计算颜色混合参数interpolation:interpolation=abs(fract(value)*2.0-1.0);基于颜色混合参数对第一水流颜色color1和第二水流颜色color2进行线性插值,以得到目标水流颜色gl fragcolor∶gl fragcolor=mix(color1,color2,interpolation);
[0115]
基于图8的方法,能够在提升水流动画的真实感的同时,有效提高水流动画的生成效率,降低生成水流动画的制作成本。
[0116]
本公开的示例性实施方式还提供一种水流动画生成装置。如图9所示,该水流动画生成装置900可以包括:
[0117]
基础水流颜色获取模块910,被配置为基于水流贴图获取像素点的基础水流颜色;
[0118]
偏移值确定模块920,被配置为根据目标帧的时间参数确定目标帧的第一偏移值与第二偏移值,目标帧是待生成的水流动画中的一帧或多帧,时间参数在一个水流周期内随帧序递增,第一偏移值与第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;
[0119]
第一水流颜色和第二水流颜色获取模块930,被配置为基于基础水流颜色获取水流参数,并根据水流参数与第一偏移值得到第一水流颜色,根据水流参数与第二偏移值获取第二水流颜色;
[0120]
颜色混合模块940,被配置为采用颜色混合参数对第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;
[0121]
水流动画获取模块950,被配置为基于每一帧中像素点的目标水流颜色生成水流动画。
[0122]
在一种实施方式中,上述水流贴图包括水流场景贴图和水流噪声贴图;上述基于水流贴图获取像素点的基础水流颜色,可以包括:
[0123]
基于水流场景贴图获取水流噪声贴图;
[0124]
利用像素点的纹理坐标对水流噪声贴图进行颜色采样,以获取像素点的基础水流颜色。
[0125]
在一种实施方式中,上述基于水流场景贴图获取水流噪声贴图,可以包括:
[0126]
对水流场景贴图中水流以外的区域进行透明化处理,以得到水流噪声贴图。
[0127]
在一种实施方式中,上述根据目标帧的时间参数确定目标帧的第一偏移值与第二偏移值,可以包括:
[0128]
根据时间参数确定第一偏移值;
[0129]
根据时间参数与采样间隔值的和确定第二偏移值。
[0130]
在一种实施方式中,上述基于基础水流颜色获取水流参数,可以包括:
[0131]
将像素点的纹理坐标、预设水流强度参数以及预设水流方向参数相乘,以获取水流参数。
[0132]
在一种实施方式中,上述根据水流参数与第一偏移值得到第一水流颜色,根据水流参数与第二偏移值获取第二水流颜色,可以包括:
[0133]
根据水流参数与第一偏移值获取第一颜色采样坐标,并基于水流参数与第二偏移值获取第二颜色采样坐标;
[0134]
利用第一颜色采样坐标与第二颜色采样坐标分别对水流场景贴图进行颜色采样,以得到第一水流颜色和第二水流颜色。
[0135]
在一种实施方式中,上述根据水流参数与第一偏移值获取第一颜色采样坐标,并基于水流参数与第二偏移值获取第二颜色采样坐标,可以包括:
[0136]
将水流参数分别与第一偏移值,第二偏移值相乘,以得到第一偏移坐标和第二偏移坐标;
[0137]
将像素点的纹理坐标分别与第一偏移坐标、第二偏移坐标相加,以得到第一颜色采样坐标和第二颜色采样坐标。
[0138]
在一种实施方式中,上述采用颜色混合参数对第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色,可以包括:
[0139]
基于时间参数计算颜色混合参数;
[0140]
利用颜色混合参数对第一水流颜色与第二水流颜色进行线性插值,根据线性插值的运算结果得到每一帧的像素点的目标水流颜色。
[0141]
上述装置中各部分的具体细节在方法部分实施方式中已经详细说明,因而不再赘述。
[0142]
本公开的示例性实施方式还提供了一种计算机可读存储介质,可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。在一种可选的实施方式中,该程序产品可以实现为便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0143]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0144]
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介
质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0145]
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0146]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0147]
本公开的示例性实施方式还提供一种电子设备。该电子设备可以包括处理器与存储器。存储器存储有处理器的可执行指令,如可以是程序代码。处理器通过执行该可执行指令来执行本示例性实施方式中的方法。
[0148]
下面参考图10,以通用计算设备的形式对电子设备进行示例性说明。应当理解,图10显示的电子设备1000仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来限制。
[0149]
如图10所示,电子设备1000可以包括:处理器1010、存储器1020、总线1030、i/o(输入/输出)接口1040、网络适配器1050。
[0150]
处理器1010可以包括一个或多个处理单元,例如:处理器1010可以包括中央处理器(central processing unit,cpu)、ap(application processor,应用处理器)、调制解调处理器、显示处理器(display process unit,dpu)、gpu(graphics processing unit,图形处理器)、isp(image signal processor,图像信号处理器)、控制器、编码器、解码器、dsp(digital signal processor,数字信号处理器)、基带处理器、人工智能处理器等。在一种实施方式中,可以由cpu基于水流贴图获取像素点的基础水流颜色,并根据目标帧的时间参数确定目标帧的第一偏移值和第二偏移值,再基于基础水流颜色获取水流参数,根据水流参数与第一偏移值获取第一水流颜色,基于水流参数和第二偏移值获取第二水流颜色,采用颜色混合参数对第一水流颜色和第二水流颜色进行混合,以得到目标帧的像素点的目标水流颜色,最后基于每一帧中像素点的目标水流颜色生成水流动画。
[0151]
存储器1020可以包括易失性存储器,例如ram 1021、缓存单元1022,还可以包括非易失性存储器,例如rom 1023。存储器1020还可以包括一个或多个程序模块1024,这样的程序模块1024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。例如,程序模块1024可以包括上述装置900中的各模块。
[0152]
总线1030用于实现电子设备1000的不同组件之间的连接,可以包括数据总线、地址总线和控制总线。
[0153]
电子设备1000可以通过i/o接口1040与一个或多个外部设备1100(例如键盘、鼠标、外置控制器等)进行通信。
[0154]
电子设备1000可以通过网络适配器1050与一个或者多个网络通信,例如网络适配器1050可以提供如3g/4g/5g等移动通信解决方案,或者提供如无线局域网、蓝牙、近场通信等无线通信解决方案。网络适配器1050可以通过总线1030与电子设备1000的其它模块通信。
[0155]
尽管图10中未示出,还可以在电子设备1000中设置其它硬件和/或软件模块,包括但不限于:显示器、微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0156]
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0157]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
[0158]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。

技术特征:
1.一种水流动画生成方法,其特征在于,包括:基于水流贴图获取像素点的基础水流颜色;根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值,所述目标帧是待生成的水流动画中的一帧或多帧,所述时间参数在一个水流周期内随帧序递增,所述第一偏移值与所述第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;基于所述基础水流颜色获取水流参数,并根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色;采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;基于所述每一帧中所述像素点的目标水流颜色生成所述水流动画。2.根据权利要求1所述的方法,其特征在于,所述水流贴图包括水流场景贴图和水流噪声贴图;所述基于水流贴图获取像素点的基础水流颜色,包括:基于所述水流场景贴图获取所述水流噪声贴图;利用所述像素点的纹理坐标对所述水流噪声贴图进行颜色采样,以获取所述像素点的基础水流颜色。3.根据权利要求2所述的方法,其特征在于,所述基于水流场景贴图获取水流噪声贴图,包括:对所述水流场景贴图中水流以外的区域进行透明化处理,以得到所述水流噪声贴图。4.根据权利要求1所述的方法,其特征在于,所述根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值,包括:根据所述时间参数确定所述第一偏移值;根据所述时间参数与采样间隔值的和确定所述第二偏移值。5.根据权利要求1所述的方法,其特征在于,所述基于所述基础水流颜色获取水流参数,包括:将所述像素点的纹理坐标、预设水流强度参数以及预设水流方向参数相乘,以获取所述水流参数。6.根据权利要求1所述的方法,其特征在于,所述根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色,包括:根据所述水流参数与所述第一偏移值获取第一颜色采样坐标,并基于所述水流参数与所述第二偏移值获取第二颜色采样坐标;利用所述第一颜色采样坐标与所述第二颜色采样坐标分别对所述水流场景贴图进行颜色采样,以得到所述第一水流颜色和第二水流颜色。7.根据权利要求6所述的方法,其特征在于,所述根据所述水流参数与所述第一偏移值获取第一颜色采样坐标,并基于所述水流参数与所述第二偏移值获取第二颜色采样坐标,包括:将所述水流参数分别与所述第一偏移值,所述第二偏移值相乘,以得到第一偏移坐标和第二偏移坐标;将所述像素点的纹理坐标分别与所述第一偏移坐标、第二偏移坐标相加,以得到所述第一颜色采样坐标和第二颜色采样坐标。
8.根据权利要求1所述的方法,其特征在于,所述采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色,包括:基于所述时间参数计算所述颜色混合参数;利用所述颜色混合参数对所述第一水流颜色与第二水流颜色进行线性插值,根据所述线性插值的运算结果得到所述每一帧的像素点的目标水流颜色。9.一种水流动画生成装置,其特征在于,包括:基础水流颜色获取模块,被配置为基于水流贴图获取像素点的基础水流颜色;偏移值确定模块,被配置为根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值,所述目标帧是待生成的水流动画中的一帧或多帧,所述时间参数在一个水流周期内随帧序递增,所述第一偏移值与所述第二偏移值之间相差采样间隔值且随所述时间参数呈现周期性变化;第一水流颜色和第二水流颜色获取模块,被配置为基于所述基础水流颜色获取水流参数,并根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色;颜色混合模块,被配置为采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;水流动画获取模块,被配置为基于所述每一帧中所述像素点的目标水流颜色生成所述水流动画。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8任一项所述的方法。11.一种电子设备,其特征在于,包括:处理器;存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至8任一项所述的方法。

技术总结
本公开提供一种水流动画生成方法、装置、存储介质与电子设备,涉及计算机技术领域。该水流动画生成方法包括:基于水流贴图获取像素点的基础水流颜色;根据目标帧的时间参数确定所述目标帧的第一偏移值与第二偏移值;基于所述基础水流颜色获取水流参数,并根据所述水流参数与所述第一偏移值得到第一水流颜色,根据所述水流参数与所述第二偏移值获取第二水流颜色;采用颜色混合参数对所述第一水流颜色和第二水流颜色进行颜色混合,以得到每一帧的像素点的目标水流颜色;基于所述每一帧中所述像素点的目标水流颜色生成所述水流动画。本公开改善了水流动画生成效率低的问题。改善了水流动画生成效率低的问题。改善了水流动画生成效率低的问题。


技术研发人员:李峰
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.03.06
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐