CN110866967B - 水波纹渲染方法、装置、设备及存储介质 - Google Patents

水波纹渲染方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110866967B
CN110866967B CN201911119560.8A CN201911119560A CN110866967B CN 110866967 B CN110866967 B CN 110866967B CN 201911119560 A CN201911119560 A CN 201911119560A CN 110866967 B CN110866967 B CN 110866967B
Authority
CN
China
Prior art keywords
water surface
pixel point
ripple
water
value
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
CN201911119560.8A
Other languages
English (en)
Other versions
CN110866967A (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.)
Shenzhen Realis Multimedia Technology Co Ltd
Original Assignee
Shenzhen Realis Multimedia Technology 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 Shenzhen Realis Multimedia Technology Co Ltd filed Critical Shenzhen Realis Multimedia Technology Co Ltd
Priority to CN201911119560.8A priority Critical patent/CN110866967B/zh
Publication of CN110866967A publication Critical patent/CN110866967A/zh
Application granted granted Critical
Publication of CN110866967B publication Critical patent/CN110866967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/12Shadow map, environment map
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/30Assessment of water resources

Landscapes

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

Abstract

本发明公开了一种水波纹渲染方法,包括:创建一个水面波纹着色器,在水面波纹着色器中创建一个水面材质球,将水面材质球放在一个预先创建的水面图层上;对水面图层中每个像素点的纹理坐标进行偏移处理,以在水面图层中生成水面图像;创建一个水底波纹着色器,在水底波纹着色器中创建一个水底材质球,将水底材质球放在一个预先创建的水底图层上;对水底图层中每个像素点的纹理坐标进行偏移处理,以在水底图层中生成水底图像;将水面图像和水底图像进行叠加,以生成目标水波纹图像。本发明还公开了一种水波纹渲染装置、设备和一种存储介质。本发明解决了现有的Unity3D无法渲染出水面和水底荡漾的效果的技术问题。

Description

水波纹渲染方法、装置、设备及存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及水波纹渲染方法、装置、设备及存储介质。
背景技术
Unity3D是由Unity Technologies公司开发的可轻松创建诸如三维视频游戏、建筑可视化、实时三维动画以及2D平面游戏等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎,因其强大的跨平台开发特性、绚丽的3D渲染效果以及自由丰富的人机交互功能而闻名出众。
目前,在利用Unity3D实现仿真的水波纹视觉效果的过程中,水面和水底其实是一张图片,Unity3D自带的图片渲染方式是静态的,无法渲染出水面和水底荡漾的效果。
发明内容
本发明的主要目的在于提出一种水波纹渲染方法、装置、设备及存储介质,旨在解决现有的Unity3D无法渲染出水面和水底荡漾的效果的技术问题。
为实现上述目的,本发明提供一种水波纹渲染方法,所述方法包括如下步骤:
创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;
获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;
创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;
获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;
将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。
可选地,所述创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上的步骤之前,还包括:
接收图层创建指令;
根据所述图层创建指令创建一个水面图层和一个水底图层。
可选地,所述获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像的步骤包括:
在所述水面图层上添加纹理,所述纹理划分为uv值向上偏移部分和uv值向下偏移部分,所述uv值表示纹理坐标;
分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标;
对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像。
可选地,所述分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标的步骤包括:
调用所述水面波纹着色器的顶点函数;
在所述水面波纹着色器的顶点函数中,将所述uv值向上偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向上偏移部分中每个像素点的纹理坐标,将所述uv值向下偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向下偏移部分中每个像素点的纹理坐标。
可选地,所述对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标的步骤包括:
调用所述水面波纹着色器的片元函数;
在所述水面波纹着色器的片元函数中,使用预设的时间函数对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标。
可选地,所述根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像的步骤包括:
获取偏移后的所述水面图层中每个像素点的纹理坐标的水平分量值和垂直分量值,并读取预设的噪声纹理的灰度值;
将所述水平分量值与所述灰度值叠加,得到所述噪声纹理向上偏移的颜色值;
将所述垂直分量值与所述灰度值叠加,得到所述噪声纹理向下偏移的颜色值;
将所述噪声纹理向上偏移的颜色值乘以所述灰度值和第一预设权重,将所述噪声纹理向下偏移的颜色值乘以所述灰度值和第二预设权重,得到所述水面图层中每个像素点的颜色值;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和所述水面图层中每个像素点的颜色值,在所述水面图层中生成水面图像。
可选地,所述获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像的步骤包括:
调用所述水底波纹着色器的顶点函数;
在所述水底波纹着色器的顶点函数中,将所述水底图层的顶点从模型空间转化为世界空间,得到所述水底图层中每个像素点的纹理坐标;
调用所述水底波纹着色器的片元函数;
在所述水底波纹着色器的片元函数中,使用预设的时间函数、正弦函数和余弦函数对所述水底图层中每个像素点的纹理坐标进行偏移处理;
根据根据所述水底图层中每个像素点进行偏移处理后的纹理坐标,在所述水底图层中生成水底图像。
此外,为实现上述目的,本发明还提供一种水波纹渲染装置,所述装置包括:
水面图层处理模块,用于创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;
水面图像生成模块,用于获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;
水底图层处理模块,用于创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;
水底图像生成模块,用于获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;
叠加模块,用于将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。
此外,为实现上述目的,本发明还提供一种水波纹渲染设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的水波纹渲染程序,所述水波纹渲染程序被所述处理器执行时实现如上所述的水波纹渲染方法的步骤。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有水波纹渲染程序,所述水波纹渲染程序被处理器执行时实现如上所述的水波纹渲染方法的步骤。
本发明创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。这种方式通过创建两个图层,然后通过纹理坐标偏移,在水面图层上生成水面图像,在水底图层上生成水底图像,然后将两个图像叠加,可以使目标水波纹图像显示水面和水底荡漾的效果,从而解决了现有的Unity3D无法渲染出水面和水底荡漾的效果的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明水波纹渲染方法第一实施例的流程示意图;
图3为本发明水波纹渲染装置一实施例的模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图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,创建一个水面波纹着色器,在水面波纹着色器中创建一个水面材质球,将水面材质球放在一个预先创建的水面图层上;
本实施例水波纹渲染方法应用于使用Unity3D工具实现水波纹效果仿真的场景。比如,在显示有一个池塘的游戏场景中,为使视觉效果更佳,池塘可以显示出一种水波荡漾、波光粼粼的感觉,为了实现这种视觉效果,本实施例提出一种水波纹渲染方法。
本实施例水波纹渲染方法可由安装有Unity3D的水波纹渲染设备实现,在本实施例中以水波纹渲染设备为服务器进行说明。首先,服务器接收着色器创建指令,该着色器创建指令可由用户触发,也可以通过预设程序自动触发;然后,根据该着色器创建指令创建一个水面波纹着色器,并在该水面波纹着色器中创建一个水面材质球,将该水面材质球放在一个预先创建的水面图层上。
进一步地,上述步骤S10之前,还可以包括:接收图层创建指令;根据图层创建指令创建一个水面图层和一个水底图层。
在本实施例中,在创建着色器之前,服务器可以首先接收图层创建指令,根据该图层创建指令创建一个水面图层和一个水底图层。通过创建两个不同的图层,为后续分别生成水面图像和水底图像,进而渲染出水面和水底荡漾的效果提供了前提保证。
步骤S20,获取水面图层中每个像素点的纹理坐标,对水面图层中每个像素点的纹理坐标进行偏移处理,以在水面图层中生成水面图像;
在将水面材质球放在水面图层上之后,服务器可以通过水面波纹着色器的顶点函数,计算出此时水面图层中每个像素点的纹理坐标,然后对该水面图层中每个像素点的纹理坐标进行偏移处理,以在水面图层中生成水面图像。其中,纹理坐标为UV坐标,U代表水平方向,U代表垂直方向,通过UV坐标,可以定位每个像素点在图像中的位置;顶点函数用于实现将纹理的顶点从模型空间转化为世界空间。
步骤S30,创建一个水底波纹着色器,在水底波纹着色器中创建一个水底材质球,将水底材质球放在一个预先创建的水底图层上;
该步骤中,采用与创建水面波纹着色器类似的方法,服务器可以创建一个水底波纹着色器,并在该水底波纹着色器中创建一个水底材质球,将该水底材质球放在一个预先创建的水底图层上。
步骤S40,获取水底图层中每个像素点的纹理坐标,对水底图层中每个像素点的纹理坐标进行偏移处理,以在水底图层中生成水底图像;
在将水底材质球放在水底图层上之后,服务器可以通过水底波纹着色器的顶点函数,计算出此时水底图层中每个像素点的纹理坐标,然后对该水底图层中每个像素点的纹理坐标进行偏移处理,以在水底图层中生成水底图像。
需要说明的是,基于水面图层和水底图层中像素点的纹理坐标,可以预先设置不同的偏移规则,以实现水波纹仿真效果。
步骤S50,将水面图像和水底图像进行叠加,以生成目标水波纹图像。
该步骤中,服务器将上述生成的水面图像和水底图像进行叠加,从而生成目标水波纹图像,该目标水波纹图像可以显示出一种水面和水底荡漾的仿真效果。
在本实施例中,服务器创建一个水面波纹着色器,在水面波纹着色器中创建一个水面材质球,将水面材质球放在一个预先创建的水面图层上;获取水面图层中每个像素点的纹理坐标,对水面图层中每个像素点的纹理坐标进行偏移处理,以在水面图层中生成水面图像;创建一个水底波纹着色器,在水底波纹着色器中创建一个水底材质球,将水底材质球放在一个预先创建的水底图层上;获取水底图层中每个像素点的纹理坐标,对水底图层中每个像素点的纹理坐标进行偏移处理,以在水底图层中生成水底图像;将水面图像和水底图像进行叠加,以生成目标水波纹图像。这种方式通过创建两个图层,然后通过纹理坐标偏移,在水面图层上生成水面图像,在水底图层上生成水底图像,然后将两个图像叠加,可以使目标水波纹图像显示水面和水底荡漾的效果,从而解决了现有的Unity3D无法渲染出水面和水底荡漾的效果的技术问题。
进一步地,基于本发明水波纹渲染方法第一实施例,提出本发明水波纹渲染方法第二实施例。
在本实施例中,上述步骤S20可以进一步包括:在所述水面图层上添加纹理,所述纹理划分为uv值向上偏移部分和uv值向下偏移部分,所述uv值表示纹理坐标;分别获取uv值向上偏移部分和uv值向下偏移部分中每个像素点的纹理坐标;对uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到水面图层中每个像素点进行偏移处理后的纹理坐标;根据水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在水面图层中生成水面图像。
在本实施例中,对于水面采用在水面上添加一层较亮且透明的纹路和较暗且透明的纹路相结合的纹理,较亮的纹路和较暗的纹路是无规则的分布,并将纹理分为两个部分,一部分的纹理坐标向上偏移,另一部分的纹理坐标向下偏移,由此生成一种包含无规则、明暗相间的纹理的水面图像,以实现水面荡漾效果的仿真。
具体地,服务器首先将水面图层划分为uv值向上偏移部分和uv值向下偏移部分,uv值向上偏移部分和uv值向下偏移部分的数量、大小、分布规则可以灵活设置,本实施例对此不作限定;然后,分别获取uv值向上偏移部分和uv值向下偏移部分中每个像素点的纹理坐标;对述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,从而得到水面图层中每个像素点进行偏移处理后的纹理坐标;之后,为生成无规则、明暗相间的纹理,需引入噪声纹理,根据水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在水面图层中生成水面图像。
进一步地,在上述步骤S20中,分别获取uv值向上偏移部分和uv值向下偏移部分中每个像素点的纹理坐标的步骤可以包括:调用水面波纹着色器的顶点函数;在水面波纹着色器的顶点函数中,将uv值向上偏移部分的顶点从模型空间转化为世界空间,得到uv值向上偏移部分中每个像素点的纹理坐标,将uv值向下偏移部分的顶点从模型空间转化为世界空间,得到uv值向下偏移部分中每个像素点的纹理坐标。
具体地,设创建的水面波纹着色器为NoiseWaterShader,将其绑定一个材质球,将该材质球放在水面图层上,在NoiseWaterShader里面定义两个Texture2D类型(二维图片型)的变量_MainTex和_NoiseTex,其中_MainTex作为主纹理,_NoiseTex作为噪声纹理,在NoiseWaterShader的顶点函数中,将顶点从模型空间转化为世界空间,获得_MainTex的uv,并返回,由此可以得到纹理向上和uv值向下偏移部分中每个像素点的纹理坐标。
进一步地,在上述步骤S20中,对uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到水面图层中每个像素点进行偏移处理后的纹理坐标的步骤可以包括:调用水面波纹着色器的片元函数;在水面波纹着色器的片元函数中,使用预设的时间函数对uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到水面图层中每个像素点进行偏移处理后的纹理坐标。
其中,片元函数用于把模型空间上物体每个像素点上的颜色进行变换计算,然后得到一个颜色值并渲染到裁剪空间中对象对应的像素点上,函数的返回值是一个颜色值。
具体实施时,可以在水面波纹着色器的片元函数中,定义一个float类型(浮点型)的变量mainUV1储存主纹理的uv,将其使用时间函数,对mainUV1进行向上的偏移,同时定义一个float类型的变量mainUV2储存主纹理的uv,将其使用时间函数,对mainUV2进行向下的偏移,由此得到水面图层中每个像素点进行偏移处理后的纹理坐标。
进一步地,在上述步骤S20中,根据水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在水面图层中生成水面图像的步骤包括:获取偏移后的水面图层中每个像素点的纹理坐标的水平分量值和垂直分量值,并读取预设的噪声纹理的灰度值;将水平分量值与灰度值叠加,得到噪声纹理向上偏移的颜色值;将垂直分量值与灰度值叠加,得到噪声纹理向下偏移的颜色值;将噪声纹理向上偏移的颜色值乘以灰度值和第一预设权重,将噪声纹理向下偏移的颜色值乘以灰度值和第二预设权重,得到水面图层中每个像素点的颜色值;根据水面图层中每个像素点进行偏移处理后的纹理坐标和水面图层中每个像素点的颜色值,在水面图层中生成水面图像。
具体地,可以在水面波纹着色器的片元函数中,定义一个float类型的变量noiseGray1储存噪声纹理的灰度值,定义一个fixed类型(浮点型)的变量shapeColor1储存噪声纹理向上偏移的颜色值,其中shapeColor1的获取是在主纹理的基础上,将主纹理的水平分量值uv.x叠加上noiseGray1即可;同理,定义shapeColor2储存噪声纹理向下偏移的颜色值,最后将shapeColor1和shapeColor2分别与对应的噪声纹理灰度值相乘,并乘以预设权重,返回颜色值,由此可以获得水面图层中每个像素点的颜色值。
之后,服务器根据水面图层中每个像素点进行偏移处理后的纹理坐标及对应的颜色值,即可在水面图层中生成水面图像。
在本实施例中,通过将将纹理分为两个部分,一部分的纹理坐标向上偏移,另一部分的纹理坐标向下偏移,可以生成一种包含无规则、明暗相间的纹理的水面图像,从而使水面荡漾效果更加接近真实景象,增强了用户的视觉体验。
进一步地,基于本发明水波纹渲染方法第一、第二实施例,提出本发明水波纹渲染方法第三实施例。
在本实施例中,上述步骤S40可以包括:调用水底波纹着色器的顶点函数;在水底波纹着色器的顶点函数中,将水底图层的顶点从模型空间转化为世界空间,得到水底图层中每个像素点的纹理坐标;调用水底波纹着色器的片元函数;在水底波纹着色器的片元函数中,使用预设的时间函数、正弦函数和余弦函数对水底图层中每个像素点的纹理坐标进行偏移处理;根据根据水底图层中每个像素点进行偏移处理后的纹理坐标,在水底图层中生成水底图像。
在本实施例中,考虑到现实场景中,在水面轻微荡漾的时候,从水面看去,底部会像凹透镜和凸透镜一样会对水底的实物进行放大或者缩小,为实现该效果,本实施例使用正弦函数和余弦函数,对水底纹理进行uv偏移。
具体地,设创建的水面波纹着色器为WaterBottomShader,将其绑定一个材质球,将该材质球放在水底图层上。在WaterBottomShader里面定义一个Texture2D类型的变量_MainTex作为主纹理,该主纹理可以绑定一张适合作为水底的贴图。在WaterBottomShader的顶点函数中,将顶点从模型空间转化为世界空间,获得_MainTex的uv,并返回,由此可以得到水底图层中每个像素点的纹理坐标;之后,将水底图层中每个像素点的纹理坐标传入片元函数中,在片元函数中,将主纹理的uv.x和uv.y分别使用正弦和余弦函数,搭配时间函数进行偏移,由此可以获得水底图层中每个像素点的颜色值。
之后,服务器根据水底图层中每个像素点的纹理坐标及对应的颜色值,即可在水底图层中生成水底图像。
本实施例通过在片元函数中,使用预设的时间函数、正弦函数和余弦函数对水底图层中每个像素点的纹理坐标进行偏移,实现了水底的仿真效果,进一步增强了用户的视觉体验。
本发明还提供一种水波纹渲染装置。参照图3,图3为本发明水波纹渲染装置一实施例的模块示意图。本实施例中,所述水波纹渲染装置包括:
水面图层处理模块10,用于创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;
水面图像生成模块20,用于获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;
水底图层处理模块30,用于创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;
水底图像生成模块40,用于获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;
叠加模块50,用于将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。
进一步地,所述装置还包括:
图层创建模块,用于接收图层创建指令;根据所述图层创建指令创建一个水面图层和一个水底图层。
进一步地,所述水面图像生成模块20还用于:
在所述水面图层上添加纹理,所述纹理划分为uv值向上偏移部分和uv值向下偏移部分,所述uv值表示纹理坐标;
分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标;
对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像。
进一步地,所述水面图像生成模块20还用于:
调用所述水面波纹着色器的顶点函数;
在所述水面波纹着色器的顶点函数中,将所述uv值向上偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向上偏移部分中每个像素点的纹理坐标,将所述uv值向下偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向下偏移部分中每个像素点的纹理坐标。
进一步地,所述水面图像生成模块20还用于:
调用所述水面波纹着色器的片元函数;
在所述水面波纹着色器的片元函数中,使用预设的时间函数对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标。
进一步地,所述水面图像生成模块20还用于:
获取偏移后的所述水面图层中每个像素点的纹理坐标的水平分量值和垂直分量值,并读取预设的噪声纹理的灰度值;
将所述水平分量值与所述灰度值叠加,得到所述噪声纹理向上偏移的颜色值;
将所述垂直分量值与所述灰度值叠加,得到所述噪声纹理向下偏移的颜色值;
将所述噪声纹理向上偏移的颜色值乘以所述灰度值和第一预设权重,将所述噪声纹理向下偏移的颜色值乘以所述灰度值和第二预设权重,得到所述水面图层中每个像素点的颜色值;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和所述水面图层中每个像素点的颜色值,在所述水面图层中生成水面图像。
进一步地,所述水底图像生成模块40还用于:
调用所述水底波纹着色器的顶点函数;
在所述水底波纹着色器的顶点函数中,将所述水底图层的顶点从模型空间转化为世界空间,得到所述水底图层中每个像素点的纹理坐标;
调用所述水底波纹着色器的片元函数;
在所述水底波纹着色器的片元函数中,使用预设的时间函数、正弦函数和余弦函数对所述水底图层中每个像素点的纹理坐标进行偏移处理;
根据根据所述水底图层中每个像素点进行偏移处理后的纹理坐标,在所述水底图层中生成水底图像。
上述各程序模块实现的方法及有益效果可参照本发明水波纹渲染方法实施例,此处不再赘述。
本发明还提供一种存储介质。
本发明存储介质上存储有水波纹渲染程序,所述水波纹渲染程序被处理器执行时实现如上所述的水波纹渲染方法的步骤。
其中,在所述处理器上运行的水波纹渲染程序被执行时所实现的方法可参照本发明水波纹渲染方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种水波纹渲染方法,其特征在于,所述方法包括如下步骤:
创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;
获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;
所述获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像的步骤包括:
在所述水面图层上添加纹理,所述纹理划分为uv值向上偏移部分和uv值向下偏移部分,所述uv值表示纹理坐标,所述u代表水平方向,所述v代表垂直方向,所述uv值为水平方向和垂直方向的坐标值;
分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标;
对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像;
创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;
获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;
所述获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像的步骤包括:
调用所述水底波纹着色器的顶点函数;
在所述水底波纹着色器的顶点函数中,将所述水底图层的顶点从模型空间转化为世界空间,得到所述水底图层中每个像素点的纹理坐标;
调用所述水底波纹着色器的片元函数,所述片元函数用于把模型空间上物体每个像素点上的颜色进行变换计算,得到一个颜色值并渲染到裁剪空间中对象对应的像素点上;
在所述水底波纹着色器的片元函数中,使用预设的时间函数、正弦函数和余弦函数对所述水底图层中每个像素点的纹理坐标进行偏移处理;
根据所述水底图层中每个像素点进行偏移处理后的纹理坐标,在所述水底图层中生成水底图像;
将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。
2.如权利要求1所述的方法,其特征在于,所述创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上的步骤之前,还包括:
接收图层创建指令;
根据所述图层创建指令创建一个水面图层和一个水底图层。
3.如权利要求1所述的方法,其特征在于,所述分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标的步骤包括:
调用所述水面波纹着色器的顶点函数;
在所述水面波纹着色器的顶点函数中,将所述uv值向上偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向上偏移部分中每个像素点的纹理坐标,将所述uv值向下偏移部分的顶点从模型空间转化为世界空间,得到所述uv值向下偏移部分中每个像素点的纹理坐标。
4.如权利要求1所述的方法,其特征在于,所述对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标的步骤包括:
调用所述水面波纹着色器的片元函数,所述片元函数用于把模型空间上物体每个像素点上的颜色进行变换计算,得到一个颜色值并渲染到裁剪空间中对象对应的像素点上;
在所述水面波纹着色器的片元函数中,使用预设的时间函数对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标。
5.如权利要求1所述的方法,其特征在于,所述根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像的步骤包括:
获取偏移后的所述水面图层中每个像素点的纹理坐标的水平分量值和垂直分量值,并读取预设的噪声纹理的灰度值;
将所述水平分量值与所述灰度值叠加,得到所述噪声纹理向上偏移的颜色值;
将所述垂直分量值与所述灰度值叠加,得到所述噪声纹理向下偏移的颜色值;
将所述噪声纹理向上偏移的颜色值乘以所述灰度值和第一预设权重,将所述噪声纹理向下偏移的颜色值乘以所述灰度值和第二预设权重,得到所述水面图层中每个像素点的颜色值;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和所述水面图层中每个像素点的颜色值,在所述水面图层中生成水面图像。
6.一种水波纹渲染装置,其特征在于,所述装置包括:
水面图层处理模块,用于创建一个水面波纹着色器,在所述水面波纹着色器中创建一个水面材质球,将所述水面材质球放在一个预先创建的水面图层上;
水面图像生成模块,用于获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像;
所述获取所述水面图层中每个像素点的纹理坐标,对所述水面图层中每个像素点的纹理坐标进行偏移处理,以在所述水面图层中生成水面图像的步骤包括:
在所述水面图层上添加纹理,所述纹理划分为uv值向上偏移部分和uv值向下偏移部分,所述uv值表示纹理坐标,所述u代表水平方向,所述v代表垂直方向,所述uv值为水平方向和垂直方向的坐标值;
分别获取所述uv值向上偏移部分和所述uv值向下偏移部分中每个像素点的纹理坐标;
对所述uv值向上偏移部分中每个像素点的纹理坐标进行向上偏移处理,并对所述uv值向下偏移部分中每个像素点的纹理坐标进行向下偏移处理,得到所述水面图层中每个像素点进行偏移处理后的纹理坐标;
根据所述水面图层中每个像素点进行偏移处理后的纹理坐标和预设的噪声纹理数据,在所述水面图层中生成水面图像;
水底图层处理模块,用于创建一个水底波纹着色器,在所述水底波纹着色器中创建一个水底材质球,将所述水底材质球放在一个预先创建的水底图层上;
水底图像生成模块,用于获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像;
所述获取所述水底图层中每个像素点的纹理坐标,对所述水底图层中每个像素点的纹理坐标进行偏移处理,以在所述水底图层中生成水底图像的步骤包括:
调用所述水底波纹着色器的顶点函数;
在所述水底波纹着色器的顶点函数中,将所述水底图层的顶点从模型空间转化为世界空间,得到所述水底图层中每个像素点的纹理坐标;
调用所述水底波纹着色器的片元函数,所述片元函数用于把模型空间上物体每个像素点上的颜色进行变换计算,得到一个颜色值并渲染到裁剪空间中对象对应的像素点上;
在所述水底波纹着色器的片元函数中,使用预设的时间函数、正弦函数和余弦函数对所述水底图层中每个像素点的纹理坐标进行偏移处理;
根据根据所述水底图层中每个像素点进行偏移处理后的纹理坐标,在所述水底图层中生成水底图像;
叠加模块,用于将所述水面图像和所述水底图像进行叠加,以生成目标水波纹图像。
7.一种水波纹渲染设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的水波纹渲染程序,所述水波纹渲染程序被所述处理器执行时实现如权利要求1至5中任一项所述的水波纹渲染方法的步骤。
8.一种存储介质,其特征在于,所述存储介质上存储有水波纹渲染程序,所述水波纹渲染程序被处理器执行时实现如权利要求1至5中任一项所述的水波纹渲染方法的步骤。
CN201911119560.8A 2019-11-15 2019-11-15 水波纹渲染方法、装置、设备及存储介质 Active CN110866967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911119560.8A CN110866967B (zh) 2019-11-15 2019-11-15 水波纹渲染方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911119560.8A CN110866967B (zh) 2019-11-15 2019-11-15 水波纹渲染方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110866967A CN110866967A (zh) 2020-03-06
CN110866967B true CN110866967B (zh) 2023-06-13

Family

ID=69654540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911119560.8A Active CN110866967B (zh) 2019-11-15 2019-11-15 水波纹渲染方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110866967B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112435304B (zh) * 2020-07-20 2023-03-14 上海哔哩哔哩科技有限公司 水体交互贴图方法及系统
CN112102422B (zh) * 2020-11-19 2021-03-05 蚂蚁智信(杭州)信息技术有限公司 图像处理方法及装置
CN112860839A (zh) * 2021-04-23 2021-05-28 成都四方伟业软件股份有限公司 一种基于Unity3D的水环境质量实时监测方法及装置
CN113450443B (zh) * 2021-07-08 2023-03-24 网易(杭州)网络有限公司 海面模型的渲染方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814006A (zh) * 2010-04-28 2010-08-25 中兴通讯股份有限公司 一种实现水波纹特效的方法和装置
US20160155261A1 (en) * 2014-11-26 2016-06-02 Bevelity LLC Rendering and Lightmap Calculation Methods
CN107895397A (zh) * 2016-10-01 2018-04-10 北京餐影传媒科技有限责任公司 一种虚拟显示方法及装置
CN108470369B (zh) * 2018-03-26 2022-03-15 城市生活(北京)资讯有限公司 一种水面渲染方法及装置

Also Published As

Publication number Publication date
CN110866967A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
CN110866967B (zh) 水波纹渲染方法、装置、设备及存储介质
CN111420404B (zh) 游戏中对象渲染的方法及装置、电子设备、存储介质
KR101145260B1 (ko) 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치
US9324166B2 (en) Systems, methods, and apparatuses for creating digital glitter
RU2427918C2 (ru) Метафора двумерного редактирования для трехмерной графики
CN115049811B (zh) 一种数字孪生虚拟三维场景的编辑方法、系统及存储介质
CN110917617B (zh) 水波纹图像的生成方法、装置、设备及存储介质
CN108765520B (zh) 文本信息的渲染方法和装置、存储介质、电子装置
CN110115841B (zh) 一种游戏场景中植被对象的渲染方法和装置
CN112884860B (zh) 水面波纹效果生成方法、装置、电子设备和存储介质
CN113076152A (zh) 渲染方法及装置、电子设备和计算机可读存储介质
CN111047506A (zh) 环境图生成和孔填充
CN114742931A (zh) 渲染图像的方法、装置、电子设备及存储介质
JP4890553B2 (ja) 2d/3d結合レンダリング
EP3563352B1 (en) Indexed value blending for use in image rendering
CN117557703A (zh) 渲染的优化方法、电子设备和计算机可读存储介质
CN112085855B (zh) 交互式图像编辑方法、装置、存储介质及计算机设备
CN117611703A (zh) 弹幕字符的渲染方法、装置、设备、存储介质及程序产品
US8952968B1 (en) Wave modeling for computer-generated imagery using intersection prevention on water surfaces
CN112308955A (zh) 基于图像的纹理填充方法、装置、设备及存储介质
US20180005432A1 (en) Shading Using Multiple Texture Maps
CN113192173B (zh) 三维场景的图像处理方法、装置及电子设备
JP2003168130A (ja) リアルタイムで合成シーンのフォトリアルなレンダリングをプレビューするための方法
CN113592999B (zh) 一种虚拟发光体的渲染方法及相关设备
CN114288671A (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
GR01 Patent grant
GR01 Patent grant