CN101814006A - 一种实现水波纹特效的方法和装置 - Google Patents
一种实现水波纹特效的方法和装置 Download PDFInfo
- Publication number
- CN101814006A CN101814006A CN 201010159883 CN201010159883A CN101814006A CN 101814006 A CN101814006 A CN 101814006A CN 201010159883 CN201010159883 CN 201010159883 CN 201010159883 A CN201010159883 A CN 201010159883A CN 101814006 A CN101814006 A CN 101814006A
- Authority
- CN
- China
- Prior art keywords
- pixel
- next frame
- wave height
- image
- water wave
- 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.)
- Pending
Links
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 title claims abstract description 205
- 230000000694 effects Effects 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 32
- 239000004575 stone Substances 0.000 claims abstract description 98
- 238000003860 storage Methods 0.000 claims description 13
- 230000007480 spreading Effects 0.000 claims description 8
- 238000003892 spreading Methods 0.000 claims description 8
- 238000005266 casting Methods 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 230000002250 progressing effect Effects 0.000 claims 1
- 230000000007 visual effect Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000016776 visual perception Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种实现水波纹特效的方法,在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示;本发明同时还公开了一种实现水波纹特效的装置,如此,将每一帧图像在界面上显示,就会出现水波纹的视觉效果。
Description
技术领域
本发明涉及消费类电子产品的视觉特效技术,尤其涉及一种实现水波纹特效的方法和装置。
背景技术
进入第三代移动通信技术(3G)时代,消费类电子产品越来越注重用户的体验。那些能给用户带来好的视觉感受的产品,比如苹果公司的iphone手机,往往能占据很大的市场。然而,移动终端等小型消费类电子产品受制于价格、产品体积等因素,其硬件的运算和处理能力是不能与台式机、工作站相比的,这就导致不能使用较大型的图像处理软件来实现精巧的图像,很难给用户在视觉感受上带来较好的体验。
在当前市面上流行的各种移动终端等电子产品中,待机界面或图片浏览界面,基本上都是静态的,不能和用户产生交互,用户体验效果不佳。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现水波纹特效的方法和装置,实现界面显示的图片具有水波纹的视觉效果,并能与用户产生交互。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供的一种实现水波纹特效的方法,该方法包括:
在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;
在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;
根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示。
上述方案中,所述获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,具体为:将每个像素的左右两个像素的水波高度值的差值右移指定位,作为水平偏移量,上下两个像素的水波高度值的差值右移指定位,作为垂直偏移量,下一帧图像中,每个像素都由该像素的坐标加上相应的水平偏移量和垂直偏移量后,所对应的原图像上的像素填充。
上述方案中,所述获得下一帧图像各像素的水波高度值并记录具体为:在第一次下一帧驱动消息产生时,根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波高度值仍为初始水波高度值,记录各像素的水波高度值;
在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素,取其周围的多个像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度值。
上述方案中,当水波纹正在进行的同时,又有投石点出现时,该方法进一步包括:将当前帧图像各像素的水波高度值作为初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理。
上述方案中,该方法进一步包括:设置帧计数器和跳帧条件,根据帧计数器对下一帧驱动消息的计数值,在满足跳帧条件时,跳过此次的下一帧驱动消息。
上述方案中,该方法进一步包括:产生水波蔓延的衰减效果,具体为:对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数。
上述方案中,该方法进一步包括:产生水波在边沿处弹回的效果,具体为:在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充。
本发明提供的一种实现水波纹特效的装置,该装置包括:初始设置模块、投石处理模块、驱动消息模块、显示模块、存储模块、投石点模块;其中,
初始设置模块,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;
投石点模块,用于获取移动终端界面上被点击的像素位置作为投石点,通知投石处理模块和驱动消息模块;
投石处理模块,用于获得下一帧图像各像素的水波高度值,并通知存储模块;
驱动消息模块,用于周期性产生下一帧驱动消息给显示模块;
显示模块,用于通知投石处理模块,并根据投石处理模块获得的下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像;将得到的下一帧图像显示到界面;
存储模块,用于记录投石处理模块得到的水波高度值。
上述方案中,所述投石处理模块,进一步用于当水波纹正在进行的同时,又收到投石点模块通知的投石点、且收到显示模块的通知时,将当前帧图像各像素的水波高度值作为各像素的初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理;
和/或,所述投石处理模块,进一步用于产生水波蔓延的衰减效果,具体的:对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数后,通知存储模块;
和/或,所述显示模块,进一步用于产生水波在边沿处弹回的效果,具体的:在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充。
上述方案中,所述装置进一步包括跳帧模块、帧计数器,其中,
跳帧模块,用于设置跳帧条件,并根据帧计数器的计数值,在满足跳帧条件时,通知显示模块跳过此次的下一帧驱动消息;
所述显示模块,进一步用于在获取像素偏移量之前,通知跳帧模块,并在收到跳帧模块通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;
帧计数器,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块。
本发明提供的一种实现水波纹特效的方法和装置,在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像按照像素偏移量重新进行像素排列得到下一帧图像,并显示;如此,将每一帧图像在界面上显示,就会出现水波纹的视觉效果,当界面是触摸屏幕时,图像会根据用户触碰的点产生水波纹的视觉特效,从而能够与用户产生交互,具有较好的用户体验。
附图说明
图1为光线在水中发生折射现象的示意图;
图2为本发明实现水波纹特效的方法流程的示意图;
图3为本发明获取像素X0的水波高度值的示意图;
图4为本发明实现水波纹特效的装置结构的示意图。
具体实施方式
光线从水中传播到空气中会发生折射现象,如图1所示,水面下的B点,其光线在进入A点的人眼时发生了折射,而人还是会直观的认为B点在B’点的位置.当水面并不平静时,水面上各点的折射率是在时刻变化的,于是我们看到了水面下的B点在其周围一定范围不断地来回运动,所有的这些来回运动的点组成了一幅错切变化的图像。因此,只需要将原始的图像各像素点的位置按一些运算方法不断的重新排列,生成水波的中间过程,就可以模拟现实中的动态水波纹效果。
本发明的基本思想是:在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像按照像素偏移量重新进行像素排列得到下一帧图像,并显示;依此类推,每一帧图像都可以通过前两帧图像各像素的水波高度值得到。
下面通过附图及具体实施例对本发明做进一步的详细说明。
本发明实现水波纹特效的方法,如图2所示,该方法包括以下几个步骤:
步骤201:在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;
例如:在界面设定一个宽为w像素、高为h像素的矩形范围作为水波纹特效区域,矩形区域的左上角在界面的坐标为(left,top),将矩形区域内的所有坐标对应的像素组成的图像存储到指定位置,作为原图像。
步骤202:设置原图像所有像素的初始水波高度值及引起水波纹的石头的参数;
其中,所述初始水波高度值一般设为0,即水面是平静的,若初始水波高度值设定不为0,则会对最终的水波纹产生干涉的效果;
所述石头的参数包括石头的形状、大小及重量;其中,
所述石头的形状影响产生的水波纹的形状,可以是圆形、方形等;
所述石头的大小影响起始产生的水波纹的范围,一般可以选择覆盖1~50个像素;
所述石头的重量影响产生水波纹的振幅大小。
步骤203:当有石头投入时,根据投石点在界面的坐标,判断投石点是否在矩形区域内,如果在,则执行步骤204;如果不在,则继续执行本步骤;
所述当石头投入时一般是在移动终端的触摸界面上有点击发生时;
所述投石点是获取界面上被点击的像素位置作为投石点,为石头的中心;
进一步的,还可以根据石头的大小,判断石头是否砸到边界,如果砸到矩形区域的边界,则通过对投石点坐标的加减运算调整投石点的位置,使石头边缘紧邻矩形区域的边界。
步骤204:周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获取并记录下一帧图像各像素的水波高度值;
本步骤中,周期性产生下一帧驱动消息,在第一次下一帧驱动消息产生时,所述获取并记录下一帧图像各像素的水波高度值,具体的:根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波高度值仍为初始水波高度值,记录各像素的水波高度值;
其中,所述根据石头重量产生的水波高度值可以是直接以石头重量作为水波高度值,也可以是按照像素到石头中心、即投石点的距离乘以重量或者重量的平方计算得到的值作为水波高度值;所述右移指定位一般是在1~9位间选择一个进行右移,可以根据实际效果进行选择;
在第一次以后的每次下一帧驱动消息产生时,所述获取并记录下一帧图像各像素的水波高度值,具体的:对于当前帧图像每个位置的像素,取其周围的4个或4个以上像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度值;
其中,对于位置在边界上的像素,会有取不全周围像素的水波高度值的情况,所述位置在边界上的像素的水波高度值可以取原图像上所述位置像素的初始水波高度值;
所述右移指定位一般是在1~9位间选择一个进行右移,可以根据实际效果进行选择;
例如,以图3中的像素X0为例,可以取当前帧图像像素X1、X2、X3、X4的水波高度值的和,然后右移指定位,再减去前一帧图像像素点X0的水波高度值,得到下一帧图像像素点X0的水波高度值,以此类推,可以得到下一帧图像所有像素点的水波高度值,将得到的下一帧图像的水波高度值进行记录;其中,上述进行水波高度值求和的像素点还可以包括X5、X6、X7、X8,或者X5、X6、X7、X8、Y0、Y1、Y2、Y3;
本步骤还可以分配两个指定的位置,分别记录当前帧图像和前一帧图像各像素的水波高度值,当得到下一帧图像各像素的水波高度值时,用下一帧图像各像素的水波高度值覆盖前一帧图像各像素的水波高度值;这样,将原来的当前帧图像各像素的水波高度值设置为前一帧图像各像素的水波高度值,刚记录的下一帧图像各像素的水波高度值设置为当前帧图像各像素的水波高度值;
其中,在没有投石时,两个位置保存的各像素的水波高度值均为0,在得到第一个下一帧图像各像素的水波高度值时,用得到的水波高度值覆盖任意一个位置的初始水波高度值;这样,在下一时刻,就会有一个保存的是当前帧图像各像素的水波高度值,另一个保存的是前一帧图像各像素的水波高度值;
本步骤进一步包括:为了产生水波蔓延的衰减效果,可以对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数,这样水波高度值会不断减小,产生水波蔓延的衰减效果,如:乘以1-2-n等,其中,n的值越大,衰减的越慢,当所有像素的水波高度值都为0时,停止产生下一帧驱动消息。
本步骤中,为了不阻塞点击事件的处理,下一帧驱动消息的优先级要低于或等于点击事件的优先级;所述下一帧驱动消息可以是定时器定时触发的消息。
步骤205:根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示所述下一帧图像;
所述像素偏移量分为水平偏移量和垂直偏移量,分别对应像素坐标的横坐标与纵坐标;
具体的,在每次获得下一帧图像各像素的水波高度值时,根据下一帧图像各像素的水波高度值,将每个像素的左右两个像素的水波高度值的差值右移指定位,作为水平偏移量,上下两个像素的水波高度值的差值右移指定位,作为垂直偏移量,下一帧图像中,每个像素都由该像素坐标加上相应的水平偏移量和垂直偏移量后,所对应的原图像上的像素填充,在得到下一帧图像后,显示所述下一帧图像到界面;
例如:将原图像的所有像素在界面上的横坐标减去left,纵坐标减去top,得到在矩形区域内的坐标,以原图像上的某一像素为例,在矩形区域内,该像素的坐标设为(m,n),将坐标为(m-1,n)和(m+1,n)的两个像素的水波高度值的差值右移指定位,作为水平偏移量dx;将坐标为(m,n+1)和(m,n-1)的两个像素的水波高度值的差值右移指定位,作为垂直偏移量dy,下一帧图像中,坐标为(m,n)的像素由原图像坐标为(m+dx,n+dy)的像素填充;依此类推,下一帧图像中每个像素按上述方法填充;
其中,所述坐标为(m-1,n)、(m+l,n)、(m,n+1)、(m,n-1)中的任意一个超出矩形区域时,即下一帧图像中,坐标为(m,n)的像素是矩形区域边界上的像素,则用原图像上坐标为(m,n)的像素填充。
进一步的,本步骤在获取像素偏移量之前还包括:设置帧计数器和跳帧条件,帧计数器用于对下一帧驱动消息进行计数,根据帧计数器对下一帧驱动消息的计数值,在满足跳帧条件时,跳过此次的下一帧驱动消息;如:跳帧条件为当前帧数不为N的整数倍时跳过,N可以为2~9的整数,则当帧计数器的计数值不为N的整数倍时,跳过此次下一帧驱动消息,等待下一次的下一帧驱动消息;即:当有下一帧驱动消息时,帧计数器的计数值加1,并判断计数值是否为N的整数倍,如果不为N的整数倍,不向下执行,等待下一次下一帧驱动消息;如果为N的整数倍,则继续向下执行;这样会为处理速度较慢的处理器减小负担;
进一步的,本步骤中,当水波纹正在进行的同时,又有投石点出现时,将当前帧图像各像素的水波高度值作为初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理,这样前后两个投石点产生的水波纹将产生相互干涉的效果;
本发明所述方法进一步包括:为了产生水波在边沿处弹回的效果,可以在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充;例如:将原图像的坐标为(m+dx,n+dy)的像素排列到下一帧图像的坐标(m,n)处时,假设是横坐标超出范围,即m+dx>图宽或m+dx<0,若m+dx>图宽,则取m+dx对m得余数做横坐标,若m+dx<0,则取图宽加上m+dx对m得余数做横坐标,使其在原图像的范围内,将新得到的坐标对应原图像的像素填充到下一帧图像的(m,n)处;
本发明所述方法进一步包括:设置控制按键,如:开启、暂停、继续、退出等,当开启按键按下时,开启水波纹的特效;当暂停按键按下时,暂停产生下一帧驱动消息;当继续按键按下时,继续产生下一帧驱动消息;当退出按键按下时,关闭水波纹的特效;
进一步的,所述控制按键还包括:衰减按键、雨点按键;当衰减按键按下时,对每次生成的下一帧图像中水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数;
当雨点按键按下时,每隔一定的帧数随机选取界面上的一个像素位置作为投石点。
基于上述的方法,本发明还提供一种实现水波纹特效的装置,如图4所示,该装置包括:初始设置模块41、投石点模块42、投石处理模块43、驱动消息模块44、显示模块45、存储模块46;其中,
初始设置模块41,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;
投石点模块42,用于获取界面上被点击的像素位置作为投石点,通知投石处理模块43和驱动消息模块44;
所述界面一般为移动终端的触摸界面;
投石处理模块43,用于获得下一帧图像各像素的水波高度值,并通知存储模块46;
所述投石处理模块43获得下一帧图像各像素的水波高度值,具体为:在第一次下一帧驱动消息产生时,根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波高度值仍为初始水波高度值;
在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素,取其周围的4个或4个以上像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度值;
驱动消息模块44,用于周期性产生下一帧驱动消息并发送到显示模块45,可以是定时器定时触发的消息;
其中,为了不阻塞点击事件的处理,所述驱动消息模块44还用于将下一帧驱动消息的优先级设置为低于或等于点击事件的优先级;
显示模块45,用于通知投石处理模块43,并根据投石处理模块43获得的下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像;将得到的下一帧图像显示到界面;
存储模块46,用于记录投石处理模块43得到的水波高度值;
进一步的,所述存储模块46,用于以两个指定的位置记录当前帧图像和前一帧图像各像素的水波高度值;在收到投石处理模块43的通知时,用投石处理模块43得到的水波高度值覆盖已经记录的前一帧图像各像素的水波高度值;此时,将原来当前的当前帧图像各像素的水波高度值设置为前一帧图像各像素的水波高度值;刚记录的投石处理模块43得到的水波高度值设置为当前帧图像各像素的水波高度值;
所述投石处理模块43,进一步用于当有石头投入时,根据石头的大小,判断石头是否砸到边界,如果砸到矩形区域的边界,则通过对投石点坐标的加减运算调整投石点的位置,使石头边缘紧邻矩形区域的边界;
所述投石处理模块43,进一步用于当水波纹正在进行的同时,又收到投石点模块42通知的投石点、且收到显示模块45的通知时,将当前帧图像各像素的水波高度值作为各像素的初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理;
所述投石处理模块43,进一步用于产生水波蔓延的衰减效果,即:对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数后,通知存储模块46;
所述显示模块45进一步用于产生水波在边沿处弹回的效果,即:在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充;
该装置进一步包括控制模块47,用于提供开启、暂停、继续、退出等按键,其中,
开启按键,用于开启所有模块;
暂停按键,用于通知驱动消息模块44暂停产生下一帧驱动消息;
继续按键,用于通知驱动消息模块44继续产生下一帧驱动消息;
退出按键,用于关闭所有模块;
所述控制模块47,进一步的包括:衰减按键、雨点按键;其中,
衰减按键,用于通知投石处理模块43产生水波蔓延的衰减效果;
雨点按键,用于通知投石点模块42每隔一定的帧数随机选取界面上的一个像素位置作为投石点;
相应的,所述投石点模块43进一步用于每隔一定的帧数随机选取界面上的一个像素位置作为投石点,通知投石处理模块43;
所述装置进一步包括跳帧模块48、帧计数器49,其中,
跳帧模块48,用于设置跳帧条件,并根据帧计数器的计数值,判断是否满足跳帧条件,如果满足,则通知显示模块45跳过此次的下一帧驱动消息;所述跳过此次的下一帧驱动消息,即:显示模块45在通知投石处理模块43之后,结束操作;
所述显示模块45,进一步用于在获取像素偏移量之前,通知跳帧模块48,并在收到跳帧模块48通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;
帧计数器49,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块48。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种实现水波纹特效的方法,其特征在于,该方法包括:
在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;
在移动终端的界面上有点击发生时,以被点击的像素位置作为投石点,周期性产生下一帧驱动消息,在每次下一帧驱动消息产生时,获得下一帧图像各像素的水波高度值并记录;
根据下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,并显示。
2.根据权利要求1所述的方法,其特征在于,所述获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像,具体为:将每个像素的左右两个像素的水波高度值的差值右移指定位,作为水平偏移量,上下两个像素的水波高度值的差值右移指定位,作为垂直偏移量,下一帧图像中,每个像素都由该像素的坐标加上相应的水平偏移量和垂直偏移量后,所对应的原图像上的像素填充。
3.根据权利要求1所述的方法,其特征在于,所述获得下一帧图像各像素的水波高度值并记录具体为:在第一次下一帧驱动消息产生时,根据投石点及设置的石头的大小,在石头覆盖范围内的像素的水波高度值由初始水波高度值与根据石头重量产生的水波高度值相加得到,其他像素的水波高度值仍为初始水波高度值,记录各像素的水波高度值;
在第一次以后的每次下一帧驱动消息产生时,对于当前帧图像每个位置的像素,取其周围的多个像素的水波高度值的和,右移指定位后,减去前一帧图像所述位置的像素的水波高度值,将得到的结果作为下一帧图像相应位置像素的水波高度值,并记录下一帧图像各像素的水波高度值。
4.根据权利要求3所述的方法,其特征在于,当水波纹正在进行的同时,又有投石点出现时,该方法进一步包括:将当前帧图像各像素的水波高度值作为初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括:设置帧计数器和跳帧条件,根据帧计数器对下一帧驱动消息的计数值,在满足跳帧条件时,跳过此次的下一帧驱动消息。
6.根据权利要求5所述的方法,其特征在于,该方法进一步包括:产生水波蔓延的衰减效果,具体为:对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数。
7.根据权利要求6所述的方法,其特征在于,该方法进一步包括:产生水波在边沿处弹回的效果,具体为:在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充。
8.一种实现水波纹特效的装置,其特征在于,该装置包括:初始设置模块、投石处理模块、驱动消息模块、显示模块、存储模块、投石点模块;其中,
初始设置模块,用于在界面设定水波纹特效的矩形区域,获取所述矩形区域内的图像作为原图像;设置原图像所有像素的初始水波高度值及石头的参数;
投石点模块,用于获取移动终端界面上被点击的像素位置作为投石点,通知投石处理模块和驱动消息模块;
投石处理模块,用于获得下一帧图像各像素的水波高度值,并通知存储模块;
驱动消息模块,用于周期性产生下一帧驱动消息给显示模块;
显示模块,用于通知投石处理模块,并根据投石处理模块获得的下一帧图像各像素的水波高度值,获取像素偏移量,将原图像各像素按照像素偏移量重新进行位置排列得到下一帧图像;将得到的下一帧图像显示到界面;
存储模块,用于记录投石处理模块得到的水波高度值。
9.根据权利要求8所述的装置,其特征在于,所述投石处理模块,进一步用于当水波纹正在进行的同时,又收到投石点模块通知的投石点、且收到显示模块的通知时,将当前帧图像各像素的水波高度值作为各像素的初始水波高度值,重新从第一次下一帧驱动消息产生时进行处理;
和/或,所述投石处理模块,进一步用于产生水波蔓延的衰减效果,具体的:对每次得到的水波高度值不为0的像素对应的水波高度值都乘以一个小于1的系数后,通知存储模块;
和/或,所述显示模块,进一步用于产生水波在边沿处弹回的效果,具体的:在将原图像各像素按照像素偏移量重新进行位置排列时,将加上像素偏移量后,超出矩形区域的坐标映射到矩形区域内,下一帧图像的相应位置的像素由映射到矩形区域内的坐标所对应的原图像的像素填充。
10.根据权利要求8或9所述的装置,其特征在于,所述装置进一步包括跳帧模块、帧计数器,其中,
跳帧模块,用于设置跳帧条件,并根据帧计数器的计数值,在满足跳帧条件时,通知显示模块跳过此次的下一帧驱动消息;
所述显示模块,进一步用于在获取像素偏移量之前,通知跳帧模块,并在收到跳帧模块通知跳过此次的下一帧驱动消息时,跳过此次的下一帧驱动消息;
帧计数器,用于对下一帧驱动消息进行计数,并把计数值通知跳帧模块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010159883 CN101814006A (zh) | 2010-04-28 | 2010-04-28 | 一种实现水波纹特效的方法和装置 |
PCT/CN2011/071294 WO2011134306A1 (zh) | 2010-04-28 | 2011-02-25 | 一种实现水波纹特效的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010159883 CN101814006A (zh) | 2010-04-28 | 2010-04-28 | 一种实现水波纹特效的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101814006A true CN101814006A (zh) | 2010-08-25 |
Family
ID=42621272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010159883 Pending CN101814006A (zh) | 2010-04-28 | 2010-04-28 | 一种实现水波纹特效的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101814006A (zh) |
WO (1) | WO2011134306A1 (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222362A (zh) * | 2011-06-28 | 2011-10-19 | Tcl集团股份有限公司 | 一种水波特效产生方法、装置及电子设备 |
WO2011134306A1 (zh) * | 2010-04-28 | 2011-11-03 | 中兴通讯股份有限公司 | 一种实现水波纹特效的方法和装置 |
CN102568015A (zh) * | 2011-12-29 | 2012-07-11 | 深圳市万兴软件有限公司 | 一种实现水滴荡漾特效的方法和装置 |
CN102592296A (zh) * | 2011-12-29 | 2012-07-18 | 深圳市万兴软件有限公司 | 一种实现水波纹荡漾特效的方法和装置 |
CN102592297A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种基于2d网格的实时水波纹理处理方法 |
CN102724419A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的振幅方式变形方法及系统 |
CN102724422A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种利用增量实现动态二维字幕的方法及系统 |
CN102724444A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的四方物方式变形方法及系统 |
CN102752520A (zh) * | 2011-05-17 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的多边形方式变形方法及系统 |
CN102855076A (zh) * | 2011-07-01 | 2013-01-02 | 上海博泰悦臻电子设备制造有限公司 | 触摸屏的控制方法及装置、移动终端设备 |
CN102855648A (zh) * | 2012-08-09 | 2013-01-02 | 北京小米科技有限责任公司 | 一种图像处理方法及装置 |
CN103294394A (zh) * | 2012-02-24 | 2013-09-11 | 三星电子株式会社 | 具有屏幕操作的移动终端及其操作方法 |
CN103677419A (zh) * | 2013-12-16 | 2014-03-26 | 深圳市东信时代信息技术有限公司 | 触屏电子装置及其屏幕保护方法 |
CN107526504A (zh) * | 2017-08-10 | 2017-12-29 | 广州酷狗计算机科技有限公司 | 图像显示的方法及装置、终端及存储介质 |
CN109509162A (zh) * | 2017-09-14 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 图像采集方法、终端、存储介质及处理器 |
CN110866967A (zh) * | 2019-11-15 | 2020-03-06 | 深圳市瑞立视多媒体科技有限公司 | 水波纹渲染方法、装置、设备及存储介质 |
CN111008937A (zh) * | 2019-11-22 | 2020-04-14 | 珠海豹趣科技有限公司 | 图片显示方法、装置及设备 |
CN112214187A (zh) * | 2019-07-11 | 2021-01-12 | 北京字节跳动网络技术有限公司 | 水波纹图像实现方法及装置 |
WO2021031846A1 (zh) * | 2019-08-16 | 2021-02-25 | 北京字节跳动网络技术有限公司 | 水波纹效果实现方法、装置、电子设备和计算机可读存储介质 |
CN113434223A (zh) * | 2020-03-23 | 2021-09-24 | 北京字节跳动网络技术有限公司 | 特效处理方法及装置 |
CN113645414A (zh) * | 2020-04-27 | 2021-11-12 | 北京达佳互联信息技术有限公司 | 水波纹特效视频生成方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060064142A (ko) * | 2004-12-08 | 2006-06-13 | 김종현 | 범프 매핑과 실시간 비디오 텍스쳐를 이용한 인터랙티브 물 효과 |
CN101226643A (zh) * | 2007-01-17 | 2008-07-23 | 财团法人资讯工业策进会 | 可依水面实际高度绘制3d水面的装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4223447B2 (ja) * | 2004-08-03 | 2009-02-12 | 富士通株式会社 | 映像生成装置 |
CN1750047A (zh) * | 2005-10-20 | 2006-03-22 | 浙江大学 | 一种卡通流水动画自动生成方法 |
CN100541538C (zh) * | 2006-07-14 | 2009-09-16 | 杭州国芯科技有限公司 | 一种显示动画效果的方法 |
CN101814006A (zh) * | 2010-04-28 | 2010-08-25 | 中兴通讯股份有限公司 | 一种实现水波纹特效的方法和装置 |
-
2010
- 2010-04-28 CN CN 201010159883 patent/CN101814006A/zh active Pending
-
2011
- 2011-02-25 WO PCT/CN2011/071294 patent/WO2011134306A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060064142A (ko) * | 2004-12-08 | 2006-06-13 | 김종현 | 범프 매핑과 실시간 비디오 텍스쳐를 이용한 인터랙티브 물 효과 |
CN101226643A (zh) * | 2007-01-17 | 2008-07-23 | 财团法人资讯工业策进会 | 可依水面实际高度绘制3d水面的装置及方法 |
Non-Patent Citations (2)
Title |
---|
《VC++ 2008专题应用程序开发实例精讲》 20081001 张忠帅 《VC++ 2008专题应用程序开发实例精讲》 电子工业出版社 1-10 , * |
《计算机应用研究》 20051231 陈和平,王早 水波特效模拟原理及其快速实现方法 252-255 1-10 , * |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011134306A1 (zh) * | 2010-04-28 | 2011-11-03 | 中兴通讯股份有限公司 | 一种实现水波纹特效的方法和装置 |
CN102724444A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的四方物方式变形方法及系统 |
CN102724444B (zh) * | 2011-05-17 | 2015-04-22 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的四方物方式变形方法及系统 |
CN102724419B (zh) * | 2011-05-17 | 2014-12-10 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的振幅方式变形方法及系统 |
CN102752520A (zh) * | 2011-05-17 | 2012-10-24 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的多边形方式变形方法及系统 |
CN102724419A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种二维字幕的振幅方式变形方法及系统 |
CN102724422A (zh) * | 2011-05-17 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种利用增量实现动态二维字幕的方法及系统 |
CN102222362B (zh) * | 2011-06-28 | 2014-12-10 | Tcl集团股份有限公司 | 一种水波特效产生方法、装置及电子设备 |
CN102222362A (zh) * | 2011-06-28 | 2011-10-19 | Tcl集团股份有限公司 | 一种水波特效产生方法、装置及电子设备 |
CN102855076A (zh) * | 2011-07-01 | 2013-01-02 | 上海博泰悦臻电子设备制造有限公司 | 触摸屏的控制方法及装置、移动终端设备 |
CN102592297A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种基于2d网格的实时水波纹理处理方法 |
CN102592296A (zh) * | 2011-12-29 | 2012-07-18 | 深圳市万兴软件有限公司 | 一种实现水波纹荡漾特效的方法和装置 |
CN102568015A (zh) * | 2011-12-29 | 2012-07-11 | 深圳市万兴软件有限公司 | 一种实现水滴荡漾特效的方法和装置 |
RU2635358C2 (ru) * | 2012-02-24 | 2017-11-13 | Самсунг Электроникс Ко., Лтд. | Мобильный терминал с возможностью осуществления операции с экранным изображением и способ функционирования |
CN103294394A (zh) * | 2012-02-24 | 2013-09-11 | 三星电子株式会社 | 具有屏幕操作的移动终端及其操作方法 |
US9772738B2 (en) | 2012-02-24 | 2017-09-26 | Samsung Electronics Co., Ltd. | Mobile terminal having a screen operation and operation method thereof |
CN103294394B (zh) * | 2012-02-24 | 2018-05-29 | 三星电子株式会社 | 具有屏幕操作的移动终端及其操作方法 |
CN102855648B (zh) * | 2012-08-09 | 2016-06-08 | 小米科技有限责任公司 | 一种图像处理方法及装置 |
CN102855648A (zh) * | 2012-08-09 | 2013-01-02 | 北京小米科技有限责任公司 | 一种图像处理方法及装置 |
CN103677419A (zh) * | 2013-12-16 | 2014-03-26 | 深圳市东信时代信息技术有限公司 | 触屏电子装置及其屏幕保护方法 |
CN107526504A (zh) * | 2017-08-10 | 2017-12-29 | 广州酷狗计算机科技有限公司 | 图像显示的方法及装置、终端及存储介质 |
CN109509162A (zh) * | 2017-09-14 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 图像采集方法、终端、存储介质及处理器 |
CN112214187A (zh) * | 2019-07-11 | 2021-01-12 | 北京字节跳动网络技术有限公司 | 水波纹图像实现方法及装置 |
WO2021004171A1 (zh) * | 2019-07-11 | 2021-01-14 | 北京字节跳动网络技术有限公司 | 水波纹图像实现方法及装置 |
WO2021031846A1 (zh) * | 2019-08-16 | 2021-02-25 | 北京字节跳动网络技术有限公司 | 水波纹效果实现方法、装置、电子设备和计算机可读存储介质 |
US11854121B2 (en) | 2019-08-16 | 2023-12-26 | Beijing Bytedance Network Technology Co., Ltd. | Water ripple effect implementing method and apparatus, electronic device, and computer readable storage medium |
CN110866967A (zh) * | 2019-11-15 | 2020-03-06 | 深圳市瑞立视多媒体科技有限公司 | 水波纹渲染方法、装置、设备及存储介质 |
CN111008937A (zh) * | 2019-11-22 | 2020-04-14 | 珠海豹趣科技有限公司 | 图片显示方法、装置及设备 |
CN113434223A (zh) * | 2020-03-23 | 2021-09-24 | 北京字节跳动网络技术有限公司 | 特效处理方法及装置 |
CN113645414A (zh) * | 2020-04-27 | 2021-11-12 | 北京达佳互联信息技术有限公司 | 水波纹特效视频生成方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2011134306A1 (zh) | 2011-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101814006A (zh) | 一种实现水波纹特效的方法和装置 | |
CN106127673B (zh) | 一种视频处理方法、装置及计算机设备 | |
JP7230055B2 (ja) | アプリケーションプログラムの表示適応方法及びその装置、端末、記憶媒体、並びにコンピュータプログラム | |
EP4161079A1 (en) | Live broadcast interaction method and apparatus, and readable medium and electronic device | |
JP5794877B2 (ja) | 電子機器 | |
CN113766129B (zh) | 录像方法、装置、电子设备及介质 | |
JP6267405B2 (ja) | アプリケーションプログラムをアンインストールする方法と装置 | |
CN103325332B (zh) | 页面刷新方法、装置及设备 | |
RU2654135C2 (ru) | Способ и устройство для отображения контента | |
CN101895634A (zh) | 一种实现移动终端界面动态切换的方法和装置 | |
CN108764000B (zh) | 二维码快速解码方法 | |
CN109598775B (zh) | 一种动态图像合成方法、装置、终端和存储介质 | |
CN105763919A (zh) | 显示与视频同步的方法及装置 | |
CN111008928B (zh) | 一种实现图像雨滴滴落、划动波纹特效的方法及系统 | |
CN110933496A (zh) | 图像数据插帧处理方法、装置、电子设备及存储介质 | |
CN112954212B (zh) | 视频生成方法、装置及设备 | |
US20210042980A1 (en) | Method and electronic device for displaying animation | |
JP7338041B2 (ja) | 画像処理方法、装置、電子機器及びコンピュータ可読型記憶媒体 | |
US9996699B2 (en) | Method, electronic device and computer program product for screen shield | |
CN103970290A (zh) | 一种基于云游戏的鼠标信号处理装置及方法 | |
CN112148405A (zh) | 桌面布局方法、装置和电子设备 | |
CN107450841A (zh) | 交互对象控制方法及装置 | |
CN105573603A (zh) | 终端灭屏时间的调整方法及装置 | |
CN102592296A (zh) | 一种实现水波纹荡漾特效的方法和装置 | |
CN109753199B (zh) | 一种应用页面展示方法及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100825 |