CN110917617B - 水波纹图像的生成方法、装置、设备及存储介质 - Google Patents

水波纹图像的生成方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110917617B
CN110917617B CN201911120405.8A CN201911120405A CN110917617B CN 110917617 B CN110917617 B CN 110917617B CN 201911120405 A CN201911120405 A CN 201911120405A CN 110917617 B CN110917617 B CN 110917617B
Authority
CN
China
Prior art keywords
pixel point
target
image
texture coordinates
water
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
Application number
CN201911120405.8A
Other languages
English (en)
Other versions
CN110917617A (zh
Inventor
夏露辉
许秋子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruilishi Visual Creative Technology Shenzhen Co ltd
Original Assignee
Ruilishi Visual Creative Technology Shenzhen Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ruilishi Visual Creative Technology Shenzhen Co ltd filed Critical Ruilishi Visual Creative Technology Shenzhen Co ltd
Priority to CN201911120405.8A priority Critical patent/CN110917617B/zh
Publication of CN110917617A publication Critical patent/CN110917617A/zh
Application granted granted Critical
Publication of CN110917617B publication Critical patent/CN110917617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/30Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
    • A63F2300/308Details of the user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种水波纹图像的生成方法,包括:通过预设的C#脚本程序,计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;创建一个着色器,将目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至着色器中;创建一个材质球,将着色器中存储的数据传入材质球;计算目标水波纹图像在屏幕中的位置坐标,根据位置坐标和材质球生成目标水波纹图像。本发明还公开了一种水波纹图像的生成装置、设备和一种存储介质。本发明解决了在利用Unity3D实现仿真的水波纹视觉效果时,计算机性能消耗过大,以及由于水波纹扭曲效果不能作用于背景图片以外的物体上而导致的视觉效果不佳的技术问题。

Description

水波纹图像的生成方法、装置、设备及存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及水波纹图像的生成方法、装置、设备及存储介质。
背景技术
Unity3D是由Unity Technologies公司开发的可轻松创建诸如三维视频游戏、建筑可视化、实时三维动画以及2D平面游戏等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎,因其强大的跨平台开发特性、绚丽的3D渲染效果以及自由丰富的人机交互功能而闻名出众。
目前,在利用Unity3D实现仿真的水波纹视觉效果的过程中,用Unity3D实现的2D平面水波纹效果基于一张图片,该图片一般作为背景,这种方式的缺陷在于:只有该图片才有水波纹的扭曲效果,其他的图层或者游戏物体(比如在场景中游动的鱼)并没有该扭曲效果,导致视觉效果不佳;此外,计算动态场景中每帧图像的水波纹纹理需要调用Unity3D的应用程序编程接口(Application Programming Interface,API),导致计算机性能消耗过大。
发明内容
本发明的主要目的在于提出一种水波纹图像的生成方法、装置、设备及存储介质,旨在解决在利用Unity3D实现仿真的水波纹视觉效果时,计算机性能消耗过大,以及由于水波纹扭曲效果不能作用于背景图片以外的物体上而导致的视觉效果不佳的技术问题。
为实现上述目的,本发明提供一种水波纹图像的生成方法,所述方法包括如下步骤:
通过预设的C#脚本程序,获取待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标;
根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;
在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;
调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。
可选地,所述根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值的步骤包括:
将所述上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到所述目标水波纹图像中每个像素点的纹理坐标;
根据所述目标水波纹图像中每个像素点的纹理坐标,计算与所述目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量;
根据所述水平偏移量和所述垂直偏移量,计算所述目标水波纹图像中每个像素点的颜色值。
可选地,所述将所述上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到所述目标水波纹图像中每个像素点的纹理坐标的步骤包括:
在计算所述目标水波纹图像中的任一目标像素点的纹理坐标时,获取所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标;
将所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标代入预设的坐标变换公式中进行计算,得到所述目标像素点在所述目标水波纹图像中的纹理坐标。
可选地,所述坐标变换公式为:
waveB[w,h]'=(waveA[w,h-1]+waveA[w,h+1]+waveA[w-1,h-1]+waveA[w-1,h]+waveA[w-1,h+1]+waveA[w+1,h-1]+waveA[w+1,h]+waveA[w+1,h+1])/4-waveB[w,h];
其中,waveB[w,h]'表示所述目标像素点在所述目标水波纹图像中的纹理坐标,waveA[w,h-1]、waveA[w,h+1]、waveA[w-1,h-1]、waveA[w-1,h]、waveA[w-1,h+1]、waveA[w+1,h-1]、waveA[w+1,h]、waveA[w+1,h+1]分别表示所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标,waveB[w,h]表示所述目标像素点在所述上一帧水波纹图像中的纹理坐标。
可选地,所述根据所述目标水波纹图像中每个像素点的纹理坐标,计算与所述目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量的步骤包括:
在计算与所述目标像素点对应的水平偏移量和垂直偏移量时,获取与所述目标像素点在水平方向上相邻的左、右像素点的纹理坐标,以及与所述目标像素点在垂直方向上相邻的上、下像素点的纹理坐标;
计算所述左、右像素点在水平方向上的纹理坐标差值,以及所述上、下像素点在垂直方向上的纹理坐标差值;
将所述左、右像素点在水平方向上的纹理坐标差值作为与所述目标像素点对应的水平偏移量,将所述上、下像素点在垂直方向上的纹理坐标差值作为与所述目标像素点对应的垂直偏移量。
可选地,所述颜色值包括R,G,B三基色的颜色值,其中,R根据所述水平偏移量计算得到,G根据所述垂直偏移量计算得到,R和G的取值范围在0~1之间,B为0~1之间的预设值。
可选地,所述方法还包括:
根据预设的波纹衰减算法,对所述目标像素点在所述目标水波纹图像中的纹理坐标进行衰减处理;
将所述衰减处理后的纹理坐标作为所述目标像素点在所述目标水波纹图像的下一帧水波纹图像中的纹理坐标。
可选地,所述波纹衰减算法为:
waveB[w,h]”=waveB[w,h]'-waveB[w,h]'*atten,其中,waveB[w,h]”表示衰减处理后的纹理坐标,atten表示预设的衰减系数。
可选地,所述方法还包括:
以所述水波生成中心点为圆心,根据预设半径确定一个波纹中心区域;
根据所述着色器的片元函数,在所述波纹中心区域计算一个新的波纹;
按照预设的混合权重,将所述目标水波纹图像中的波纹与所述新的波纹进行混合,其中,在所述波纹中心区域,所述目标水波纹图像中波纹的混合权重随着离所述水波生成中心点距离的增大而增大,所述新的波纹的混合权重随着离所述水波生成中心点距离的增大而减小。
此外,为实现上述目的,本发明还提供一种水波纹图像的生成装置,所述装置包括:
获取模块,用于通过预设的C#脚本程序,获取待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标;
脚本执行模块,用于根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
着色器创建模块,用于创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;
材质球创建模块,用于在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;
生成模块,用于调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。
此外,为实现上述目的,本发明还提供一种水波纹图像的生成设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的水波纹图像的生成程序,所述水波纹图像的生成程序被所述处理器执行时实现如上所述的水波纹图像的生成方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有水波纹图像的生成程序,所述水波纹图像的生成程序被处理器执行时实现如上所述的水波纹图像的生成方法的步骤。
本发明通过预设的C#脚本程序,获取待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标;根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。通过这种方式,水波纹的扭曲效果可以作用到其他图层或者游戏物体上,从而增强了视觉效果;此外,通过多线程计算方式,能够合理利用计算资源,提高计算效率。从而本发明解决了在利用Unity3D实现仿真的水波纹视觉效果时,计算机性能消耗过大,以及由于水波纹扭曲效果不能作用于背景图片以外的物体上而导致的视觉效果不佳的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明水波纹图像的生成方法第一实施例的流程示意图;
图3为本发明水波纹图像的生成装置一实施例的模块示意图;
图4为本发明实施例中目标水波纹图像的显示效果示意图;
图5为本发明实施例中水波生成中心点的显示效果示意图;
图6为本发明实施例中将目标水波纹图像与波纹中心区域中生成的新的波纹进行混合后的显示效果示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例中水波纹图像的生成设备可以是PC机、计算机或服务器。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及水波纹图像的生成程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的水波纹图像的生成程序,并执行下述水波纹图像的生成方法各个实施例中的操作。
基于上述硬件结构,提出本发明水波纹图像的生成方法各个实施例。
参照图2,图2为本发明水波纹图像的生成方法第一实施例的流程示意图,所述方法包括:
步骤S10,通过预设的C#脚本程序,获取待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标;
本实施例中水波纹图像的生成方法应用于使用Unity3D工具实现水波纹效果仿真的场景,具体可以由水波纹图像的生成设备实现,本实施例以水波纹图像的生成设备为服务器为例进行说明。通过观察大自然中的水波,我们发现水波有扩散、衰减、折射的特性,根据这些特性,运用数学和几何知识,可以模拟出真实的水波。本实施例基于Unity的2D场景,设定鼠标在屏幕上停留的位置作为水波生成中心点,用户也可根据自己需求灵活设置水波生成中心点。
为保证本发明正常实施,服务器需预先创建一个C#脚本程序,C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,本实施例中,C#脚本程序用于计算待生成的目标水波纹图像中的水波纹纹理数据,该水波纹纹理数据包括水波纹图像中每个像素点的纹理坐标及对应的颜色值。
具体地,可以在C#脚本程序中定义两个int类型(整型)的变量waveWidth、waveHeigh,分别作为水波分辨率的长和宽,其中waveWidth/waveHeight可以为水波纹图像显示窗口分辨率的长宽比;定义两个float类型(浮点型)的二维纹理坐标数组waveA、waveB,其中waveA用于存储上一帧水波纹图像中每个像素点的纹理坐标,waveB用于存储目标水波纹图像中每个像素点的纹理坐标,为存储图像中所有像素点的纹理坐标,waveA、waveB的数组长度可以设置为waveWidth*waveHeight;此外,定义一个Color类型(颜色型)的数组,用于存储目标水波纹图像中每个像素点的颜色值;定义一个Texture2D类型(二维图片型)的变量tex_uv,用于存储目标水波纹图像的水波纹纹理数据。
在每帧水波纹图像显示的时间间隔,服务器执行上述C#脚本程序,可以获取到预先存储的当前待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标,其中,纹理坐标为UV坐标,U代表水平方向,U代表垂直方向,通过UV坐标,可以定位每个像素点在图像中的位置。
步骤S20,根据上一帧水波纹图像中每个像素点的纹理坐标,计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
该步骤中,服务器继续执行C#脚本程序,以根据上述获取到的上一帧水波纹图像中每个像素点的纹理坐标,计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值。
具体地,该步骤S20可以进一步包括:将上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到目标水波纹图像中每个像素点的纹理坐标;根据目标水波纹图像中每个像素点的纹理坐标,计算与目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量;根据水平偏移量和垂直偏移量,计算目标水波纹图像中每个像素点的颜色值。
在本实施例中,服务器可以将上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到目标水波纹图像中每个像素点的纹理坐标,该纹理坐标存储至数组waveB中,然后,根据目标水波纹图像中每个像素点的纹理坐标,计算与该目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量,再根据该水平偏移量和垂直偏移量,计算目标水波纹图像中每个像素点的颜色值,该颜色值存储至数组Color中。
其中,将上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到目标水波纹图像中每个像素点的纹理坐标的步骤可以进一步包括:在计算目标水波纹图像中的任一目标像素点的纹理坐标时,获取目标像素点在上一帧水波纹图像中的纹理坐标,以及目标像素点周围的8个像素点在上一帧水波纹图像中的纹理坐标;将目标像素点在上一帧水波纹图像中的纹理坐标,以及目标像素点周围的8个像素点在上一帧水波纹图像中的纹理坐标代入预设的坐标变换公式中进行计算,得到目标像素点在目标水波纹图像中的纹理坐标。
上述坐标变换公式可以为:
waveB[w,h]'=(waveA[w,h-1]+waveA[w,h+1]+waveA[w-1,h-1]+waveA[w-1,h]+waveA[w-1,h+1]+waveA[w+1,h-1]+waveA[w+1,h]+waveA[w+1,h+1])/4-waveB[w,h];
其中,waveB[w,h]'表示目标像素点在目标水波纹图像中的纹理坐标,waveA[w,h-1]、waveA[w,h+1]、waveA[w-1,h-1]、waveA[w-1,h]、waveA[w-1,h+1]、waveA[w+1,h-1]、waveA[w+1,h]、waveA[w+1,h+1]分别表示目标像素点周围的8个像素点在上一帧水波纹图像中的纹理坐标,waveB[w,h]表示目标像素点在上一帧水波纹图像中的纹理坐标。
进一步地,上述根据目标水波纹图像中每个像素点的纹理坐标,计算与目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量的步骤包括:在计算与目标像素点对应的水平偏移量和垂直偏移量时,获取与目标像素点在水平方向上相邻的左、右像素点的纹理坐标,以及与目标像素点在垂直方向上相邻的上、下像素点的纹理坐标;计算左、右像素点在水平方向上的纹理坐标差值,以及上、下像素点在垂直方向上的纹理坐标差值;将左、右像素点在水平方向上的纹理坐标差值作为与目标像素点对应的水平偏移量,将上、下像素点在垂直方向上的纹理坐标差值作为与目标像素点对应的垂直偏移量。
在本实施例中,设目标像素点对应的水平偏移量为offset_u,垂直偏移量为offset_v,则offset_u等于目标像素点的左、右两个像素点在水平方向上的纹理坐标差值,offset_v等于目标像素点的上、下两个像素点在垂直方向上的纹理坐标差值。之后,再根据offset_u和offset_v计算目标像素点的颜色值。
进一步地,上述颜色值包括R,G,B三基色的颜色值,其中,R根据水平偏移量计算得到,G根据垂直偏移量计算得到,R和G的取值范围在0~1之间,B为0~1之间的预设值。
服务器在计算得到目标水波纹图像中每个像素点的纹理坐标及对应的颜色值后,将该目标水波纹图像中每个像素点的纹理坐标及对应的颜色值赋值给tex_uv,即得到目标水波纹图像的水波纹纹理。
进一步地,本实施例中,水波纹图像的生成方法还可以包括:根据预设的波纹衰减算法,对所述目标像素点在所述目标水波纹图像中的纹理坐标进行衰减处理;将所述衰减处理后的纹理坐标作为所述目标像素点在所述目标水波纹图像的下一帧水波纹图像中的纹理坐标。
在本实施例中,为了呈现一种波纹随着时间的推移慢慢衰减的效果,可以根据预设的波纹衰减算法,对目标像素点在所述目标水波纹图像中的纹理坐标,即waveB[w,h]'进行衰减处理,然后将衰减处理后的纹理坐标作为该目标像素点在目标水波纹图像的下一帧水波纹图像中的纹理坐标。
上述波纹衰减算法可以为:waveB[w,h]”=waveB[w,h]'-waveB[w,h]'*atten,其中,waveB[w,h]”表示衰减处理后的纹理坐标,atten表示预设的衰减系数。
采用上述算法,波纹会在每一帧慢慢衰减,直到为0。其中,衰减系数atten为float类型的变量,其可以灵活设置,比如当想要波纹快速衰减时,可以将atten设置得较大,当想要波纹缓慢衰减时,可以将atten设置得较小。
需要说明的是,为了使波纹能够扩散,可以用将当前的帧计算的波形和上两帧的波形进行替换,循环重复上述计算,波纹会不断的进行扩散。
步骤S30,创建一个着色器,将目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至着色器中;
服务器在计算得到目标水波纹图像的水波纹纹理后,创建一个着色器Shader,然后将该目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至该着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至该着色器中,以供后续调用。
具体地,可以先创建一个着色器,命名为WaterWaveCameraShader,在WaterWaveCameraShader里定义sampler2D类型的变量存储上述计算得到的tex_uv,定义两个float类型的变量_WaveCenter_x和_WaveCenter_y,存***纹生成中心点的uv坐标的x和y,定义一个float类型的变量_Scale_xy,存储水波分辨率的比值waveWidth/waveHeight。
步骤S40,在着色器中创建一个材质球,将着色器中存储的目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、水波分辨率的长宽比值和水波生成中心点的纹理坐标传入材质球;
该步骤中,服务器首先在着色器中创建一个材质球,由于本发明的水波纹是基于摄像机(Camera)的,所以WaterWaveCamera脚本需绑定在一个Camera上,在WaterWaveCamera脚本中写一个后处理函数,此函数是在该摄像机拍摄到的图像的基础上,对这个图像进行后期特效处理;然后,将着色器中存储的目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、水波分辨率的长宽比值和水波生成中心点的纹理坐标传入材质球。
步骤S50,调用着色器的顶点函数,根据顶点函数计算目标水波纹图像在屏幕中的位置坐标,根据位置坐标和材质球生成目标水波纹图像。
该步骤中,服务器通过调用着色器自带的顶点函数,计算目标水波纹图像在屏幕中的位置坐标,其中顶点函数用于完成纹理的顶点坐标从模型空间到剪裁空间的转换;然后,根据计算得到的位置坐标和材质球生成目标水波纹图像。其中,计算目标水波纹图像在屏幕中的位置坐标以及根据位置坐标和材质球生成目标水波纹图像的具体方式可以参照现有技术,此处不做赘述。
本实施例通过上述方式,水波纹的扭曲效果可以作用到其他图层或者游戏物体上,从而增强了视觉效果;此外,通过单独创建一个C#脚本程序计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值,实现了对水波纹理的计算,相比于现有的通过调用Unity3D的API计算水波纹理的方式,计算机性能消耗大大减少。从而本实施例解决了在利用Unity3D实现仿真的水波纹视觉效果时,计算机性能消耗过大,以及由于水波纹扭曲效果不能作用于背景图片以外的物体上而导致的视觉效果不佳的技术问题。
进一步地,基于本发明水波纹图像的生成方法第一实施例,提出本发明水波纹图像的生成方法第二实施例。
在本实施例中,水波纹图像的生成方法还可以包括:以水波生成中心点为圆心,根据预设半径确定一个波纹中心区域;根据着色器的片元函数,在波纹中心区域计算一个新的波纹;按照预设的混合权重,将目标水波纹图像中的波纹与新的波纹进行混合,其中,在波纹中心区域,目标水波纹图像中波纹的混合权重随着离水波生成中心点距离的增大而增大,新的波纹的混合权重随着离水波生成中心点距离的增大而减小。
在本实施例中,为进一步增强图像的视觉效果,可以对生成的目标水波纹图像中的水波纹理进行优化。具体地,可以定义一个float类型的变量_Waveuv,来储存_WaveTex获取到的水波纹纹理的uv,_Waveuv.x和_Waveuv.y取值区间为(0~1),由于波纹的uv偏移是有正有负的,所以需要将这个_Waveuv.x和_Waveuv.y映射到(-1~1)之间,如果此时波纹效果太强,可以乘以一个小于1的数来削弱_Waveuv偏移效果。将顶点函数输出的uv值和_Waveuv进行叠加,并应用到主纹理_MainTex上,即可得到水波纹效果。但此时的水波纹效果的波纹中心区域看起来是由很多密密麻麻的水波组成,视觉感官极差,效果如图4所示,图4为本发明实施例中目标水波纹图像的显示效果示意图。
为了削弱中心区域的违和感,可以在Shader的片元函数里面使用正弦函数和时间函数重新在波纹中心区域计算一个新的波纹,如图5所示,图5为本发明实施例中水波生成中心点的显示效果示意图,可以以水波生成中心点为圆心,并定义一个float类型的变量_R,作为需要处理的波纹中心区域半径,由此确定一个波纹中心区域,然后调用Shader的片元函数在该波纹中心区域计算一个新的波纹,之后,按照预设的混合权重,将目标水波纹图像中的波纹与该新的波纹进行混合,混合规则可以为:在波纹中心区域,目标水波纹图像中的波纹的混合权重随着离水波生成中心点距离的增大而增大,新的波纹的混合权重随着离水波生成中心点距离的增大而减小,如此可以实现两个波的无缝衔接,最终效果如图6所示,图6为本发明实施例中将目标水波纹图像与波纹中心区域中生成的新的波纹进行混合后的显示效果示意图,图6中的波纹视觉效果已经有显著改善,且场景中的鱼也有扭曲效果。
本实施例通过在波纹中心区域计算一个新的波纹,并将目标水波纹图像中的波纹与新的波纹进行混合,进一步增强了图像的视觉效果。
本发明还提供一种水波纹图像的生成装置。参照图3,图3为本发明水波纹图像的生成装置一实施例的模块示意图。本实施例中,所述水波纹图像的生成装置包括:
获取模块10,用于通过预设的C#脚本程序,获取待生成的目标水波纹图像的上一帧水波纹图像中每个像素点的纹理坐标;
脚本执行模块20,用于根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
着色器创建模块30,用于创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;
材质球创建模块40,用于在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;
生成模块50,用于调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。
进一步地,所述脚本执行模块20还用于:
将所述上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到所述目标水波纹图像中每个像素点的纹理坐标;
根据所述目标水波纹图像中每个像素点的纹理坐标,计算与所述目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量;
根据所述水平偏移量和所述垂直偏移量,计算所述目标水波纹图像中每个像素点的颜色值。
进一步地,所述脚本执行模块20还用于:
在计算所述目标水波纹图像中的任一目标像素点的纹理坐标时,获取所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标;
将所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标代入预设的坐标变换公式中进行计算,得到所述目标像素点在所述目标水波纹图像中的纹理坐标。
进一步地,所述坐标变换公式为:
waveB[w,h]'=(waveA[w,h-1]+waveA[w,h+1]+waveA[w-1,h-1]+waveA[w-1,h]+waveA[w-1,h+1]+waveA[w+1,h-1]+waveA[w+1,h]+waveA[w+1,h+1])/4-waveB[w,h];
其中,waveB[w,h]'表示所述目标像素点在所述目标水波纹图像中的纹理坐标,waveA[w,h-1]、waveA[w,h+1]、waveA[w-1,h-1]、waveA[w-1,h]、waveA[w-1,h+1]、waveA[w+1,h-1]、waveA[w+1,h]、waveA[w+1,h+1]分别表示所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标,waveB[w,h]表示所述目标像素点在所述上一帧水波纹图像中的纹理坐标。
进一步地,所述脚本执行模块20还用于:
在计算与所述目标像素点对应的水平偏移量和垂直偏移量时,获取与所述目标像素点在水平方向上相邻的左、右像素点的纹理坐标,以及与所述目标像素点在垂直方向上相邻的上、下像素点的纹理坐标;
计算所述左、右像素点在水平方向上的纹理坐标差值,以及所述上、下像素点在垂直方向上的纹理坐标差值;
将所述左、右像素点在水平方向上的纹理坐标差值作为与所述目标像素点对应的水平偏移量,将所述上、下像素点在垂直方向上的纹理坐标差值作为与所述目标像素点对应的垂直偏移量。
进一步地,所述颜色值包括R,G,B三基色的颜色值,其中,R根据所述水平偏移量计算得到,G根据所述垂直偏移量计算得到,R和G的取值范围在0~1之间,B为0~1之间的预设值。
进一步地,所述装置还包括:
衰减模块,用于根据预设的波纹衰减算法,对所述目标像素点在所述目标水波纹图像中的纹理坐标进行衰减处理;
将所述衰减处理后的纹理坐标作为所述目标像素点在所述目标水波纹图像的下一帧水波纹图像中的纹理坐标;
进一步地,所述波纹衰减算法为:
waveB[w,h]”=waveB[w,h]'-waveB[w,h]'*atten,其中,waveB[w,h]”表示衰减处理后的纹理坐标,atten表示预设的衰减系数。
进一步地,所述装置还包括:
确定模块,用于以所述水波生成中心点为圆心,根据预设半径确定一个波纹中心区域;
计算模块,用于根据所述着色器的片元函数,在所述波纹中心区域计算一个新的波纹;
波纹混合模块,用于按照预设的混合权重,将所述目标水波纹图像中的波纹与所述新的波纹进行混合,其中,在所述波纹中心区域,所述目标水波纹图像中波纹的混合权重随着离所述水波生成中心点距离的增大而增大,所述新的波纹的混合权重随着离所述水波生成中心点距离的增大而减小。
上述各程序模块实现的方法及有益效果可参照本发明水波纹图像的生成方法实施例,此处不再赘述。
本发明还提供一种存储介质。
本发明存储介质上存储有水波纹图像的生成程序,所述水波纹图像的生成程序被处理器执行时实现如上所述的水波纹图像的生成方法的步骤。
其中,在所述处理器上运行的水波纹图像的生成程序被执行时所实现的方法可参照本发明水波纹图像的生成方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (12)

1.一种水波纹图像的生成方法,其特征在于,所述方法包括如下步骤:
在每帧水波纹图像显示的时间间隔执行预设的C#脚本程序,利用所述C#脚本程序解析上一帧水波纹图像中每个像素点的纹理坐标,并存储到预先生成的数组中;
根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;
在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;
调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。
2.如权利要求1所述的方法,其特征在于,所述根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值的步骤包括:
将所述上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到所述目标水波纹图像中每个像素点的纹理坐标;
根据所述目标水波纹图像中每个像素点的纹理坐标,计算与所述目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量;
根据所述水平偏移量和所述垂直偏移量,计算所述目标水波纹图像中每个像素点的颜色值。
3.如权利要求2所述的方法,其特征在于,所述将所述上一帧水波纹图像中每个像素点的纹理坐标进行坐标变换,得到所述目标水波纹图像中每个像素点的纹理坐标的步骤包括:
在计算所述目标水波纹图像中的任一目标像素点的纹理坐标时,获取所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标;
将所述目标像素点在所述上一帧水波纹图像中的纹理坐标,以及所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标代入预设的坐标变换公式中进行计算,得到所述目标像素点在所述目标水波纹图像中的纹理坐标。
4.如权利要求3所述的方法,其特征在于,所述坐标变换公式为:
waveB[w,h]'=(waveA[w,h-1]+waveA[w,h+1]+waveA[w-1,h-1]+waveA[w-1,h]+waveA[w-1,h+1]+waveA[w+1,h-1]+waveA[w+1,h]+waveA[w+1,h+1])/4-waveB[w,h];
其中,waveB[w,h]'表示所述目标像素点在所述目标水波纹图像中的纹理坐标,waveA[w,h-1]、waveA[w,h+1]、waveA[w-1,h-1]、waveA[w-1,h]、waveA[w-1,h+1]、waveA[w+1,h-1]、waveA[w+1,h]、waveA[w+1,h+1]分别表示所述目标像素点周围的8个像素点在所述上一帧水波纹图像中的纹理坐标,waveB[w,h]表示所述目标像素点在所述上一帧水波纹图像中的纹理坐标。
5.如权利要求4所述的方法,其特征在于,所述根据所述目标水波纹图像中每个像素点的纹理坐标,计算与所述目标水波纹图像中每个像素点的纹理坐标对应的水平偏移量和垂直偏移量的步骤包括:
在计算与所述目标像素点对应的水平偏移量和垂直偏移量时,获取与所述目标像素点在水平方向上相邻的左、右像素点的纹理坐标,以及与所述目标像素点在垂直方向上相邻的上、下像素点的纹理坐标;
计算所述左、右像素点在水平方向上的纹理坐标差值,以及所述上、下像素点在垂直方向上的纹理坐标差值;
将所述左、右像素点在水平方向上的纹理坐标差值作为与所述目标像素点对应的水平偏移量,将所述上、下像素点在垂直方向上的纹理坐标差值作为与所述目标像素点对应的垂直偏移量。
6.如权利要求3所述的方法,其特征在于,所述颜色值包括R,G,B三基色的颜色值,其中,R根据所述水平偏移量计算得到,G根据所述垂直偏移量计算得到,R和G的取值范围在0~1之间,B为0~1之间的预设值。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
根据预设的波纹衰减算法,对所述目标像素点在所述目标水波纹图像中的纹理坐标进行衰减处理;
将所述衰减处理后的纹理坐标作为所述目标像素点在所述目标水波纹图像的下一帧水波纹图像中的纹理坐标。
8.如权利要求7所述的方法,其特征在于,所述波纹衰减算法为:
waveB[w,h]”=waveB[w,h]'-waveB[w,h]'*atten,其中,waveB[w,h]”表示衰减处理后的纹理坐标,atten表示预设的衰减系数。
9.如权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
以所述水波生成中心点为圆心,根据预设半径确定一个波纹中心区域;
根据所述着色器的片元函数,在所述波纹中心区域计算一个新的波纹;
按照预设的混合权重,将所述目标水波纹图像中的波纹与所述新的波纹进行混合,其中,在所述波纹中心区域,所述目标水波纹图像中波纹的混合权重随着离所述水波生成中心点距离的增大而增大,所述新的波纹的混合权重随着离所述水波生成中心点距离的增大而减小。
10.一种水波纹图像的生成装置,其特征在于,所述装置包括:
获取模块,用于在每帧水波纹图像显示的时间间隔执行预设的C#脚本程序,利用所述C#脚本程序解析上一帧水波纹图像中每个像素点的纹理坐标,并存储到预先生成的数组中;
脚本执行模块,用于根据所述上一帧水波纹图像中每个像素点的纹理坐标,计算目标水波纹图像中每个像素点的纹理坐标及对应的颜色值;
着色器创建模块,用于创建一个着色器,将所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值存储至所述着色器中,并将预设的水波分辨率的长宽比值、水波生成中心点的纹理坐标存储至所述着色器中;
材质球创建模块,用于在所述着色器中创建一个材质球,将所述着色器中存储的所述目标水波纹图像中每个像素点的纹理坐标及对应的颜色值、所述水波分辨率的长宽比值和所述水波生成中心点的纹理坐标传入所述材质球;
生成模块,用于调用所述着色器的顶点函数,根据所述顶点函数计算所述目标水波纹图像在屏幕中的位置坐标,根据所述位置坐标和所述材质球生成所述目标水波纹图像。
11.一种水波纹图像的生成设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的水波纹图像的生成程序,所述水波纹图像的生成程序被所述处理器执行时实现如权利要求1至9中任一项所述的水波纹图像的生成方法的步骤。
12.一种存储介质,其特征在于,所述存储介质上存储有水波纹图像的生成程序,所述水波纹图像的生成程序被处理器执行时实现如权利要求1至9中任一项所述的水波纹图像的生成方法的步骤。
CN201911120405.8A 2019-11-15 2019-11-15 水波纹图像的生成方法、装置、设备及存储介质 Active CN110917617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911120405.8A CN110917617B (zh) 2019-11-15 2019-11-15 水波纹图像的生成方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911120405.8A CN110917617B (zh) 2019-11-15 2019-11-15 水波纹图像的生成方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110917617A CN110917617A (zh) 2020-03-27
CN110917617B true CN110917617B (zh) 2023-10-24

Family

ID=69853183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911120405.8A Active CN110917617B (zh) 2019-11-15 2019-11-15 水波纹图像的生成方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110917617B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113645414B (zh) * 2020-04-27 2022-09-30 北京达佳互联信息技术有限公司 水波纹特效视频生成方法、装置、电子设备及存储介质
CN113744124A (zh) * 2020-05-29 2021-12-03 北京达佳互联信息技术有限公司 图像处理方法、装置、电子设备及计算机存储介质
CN112164121B (zh) * 2020-09-30 2021-11-23 北京完美赤金科技有限公司 撕裂效果图的生成方法和装置、存储介质、电子装置
CN112258412B (zh) * 2020-10-22 2021-07-13 浙江大学 基于定义域和值域的卷积近似的着色器自动滤波方法、装置和***
CN111968213B (zh) * 2020-10-23 2021-03-23 成都完美时空网络技术有限公司 扭曲效果生成方法、装置、设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107154063B (zh) * 2017-04-19 2023-03-14 腾讯科技(深圳)有限公司 图像展示区域的形状设置方法及装置
CN107292961A (zh) * 2017-06-30 2017-10-24 浙江科澜信息技术有限公司 一种实现三维场景中地球海洋水效的方法
CN107958480B (zh) * 2017-11-23 2021-04-30 腾讯科技(上海)有限公司 图像渲染方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Unity Shader 水波纹效果;无;《https://gameinstitute.qq.com/community/detail/122193》;20180220;第1-4页 *

Also Published As

Publication number Publication date
CN110917617A (zh) 2020-03-27

Similar Documents

Publication Publication Date Title
CN110917617B (zh) 水波纹图像的生成方法、装置、设备及存储介质
CN110196746B (zh) 交互界面渲染方法及装置、电子设备、存储介质
CN103677828B (zh) 一种图层绘制方法、绘图引擎及终端设备
US20050195196A1 (en) Interactive water effects using texture coordinate shifting
CN110866967B (zh) 水波纹渲染方法、装置、设备及存储介质
JP2017527898A (ja) 適応的シェーディングによるテクスチャルックアップを使用した帯域幅低減
CN111476851B (zh) 图像处理方法、装置、电子设备及存储介质
CN110706326B (zh) 数据展示方法及装置
US20140071124A1 (en) Image processing apparatus
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
CN113076152A (zh) 渲染方法及装置、电子设备和计算机可读存储介质
US8379037B1 (en) Multi-resolution texture aggregation
CN115471598A (zh) 一种动态水面渲染方法、装置及设备
EP2875490A1 (en) Customized image filters
CN110782391A (zh) 驾驶仿真场景中的图像处理方法、装置及存储介质
CN117611703A (zh) 弹幕字符的渲染方法、装置、设备、存储介质及程序产品
JP3649478B2 (ja) 画像情報処理装置及び画像情報処理方法
CN112734900A (zh) 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质
US20070080963A1 (en) Method of rendering graphical objects
CN113192173B (zh) 三维场景的图像处理方法、装置及电子设备
CN115131481A (zh) Gpu绘制效率确定方法、模型构建方法、装置、介质及设备
CN111681307A (zh) 一种应用于三维软件的动态三维坐标轴的实现方法
CN114494384B (zh) 建筑物阴影分析方法、装置、设备及存储介质
WO2022135050A1 (zh) 渲染方法、设备以及***
CN117437346A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230918

Address after: B1012, Building 7, Shenzhen Bay Science and Technology Ecological Park, No. 1819 Shahe West Road, Gaoxin District, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province, 518057

Applicant after: Ruilishi Visual Creative Technology (Shenzhen) Co.,Ltd.

Address before: Room 9-12, 10th floor, block B, building 7, Shenzhen Bay science and technology ecological park, 1819 Shahe West Road, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN REALIS MULTIMEDIA TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant