图片处理的方法和装置的制造方法

文档序号:10553641阅读:1014来源:国知局
图片处理的方法和装置的制造方法
【专利摘要】本发明公开了一种图片处理的方法和装置。其中,该方法包括:获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,第二对象中的目标对象位于交互区域内;生成与交互区域对应的水波动画的法线贴图,其中,法线贴图中显示有多条波纹;利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置。本发明解决了现有技术中第一对象和第二对象发生交互时,第二对象的显示效果比较差的技术问题。
【专利说明】
图片处理的方法和装置
技术领域
[0001]本发明涉及图片处理领域,具体而言,涉及一种图片处理的方法和装置。
【背景技术】
[0002]在网络游戏中,游戏玩家往往会关注游戏主界面中显示出的游戏玩家与游资场景的交互效果。例如,游戏玩家在草地中行走时,如果在草地中出现摇摆以及拖尾的动画效果时,可以增加游戏玩家的游戏乐趣。其中,网络游戏的游戏场景中草的可交互渲染是游戏渲染中非常重要的一部分,如果草不能被交互的话会给人死气沉沉的感觉;玩家走过草丛或者放技能时,如果草能出现逼真的交互效果(即上述摆动以及拖尾)会给游戏玩家很强的反馈,让游戏玩家觉得这个游戏世界是受自己影响的,会提高玩家的沉浸感。
[0003]在网络游戏《FarCry》和《九阴真经》等游戏中,可以实现玩家在移动的时候,草出现交互的动画效果,但是,出现交互效果的草的交互规模非常小,最多只支持几个游戏玩家的交互,而且效果非常生硬,无法表现玩家从草丛中移动带来的拖尾。
[0004]目前,在网络游戏中存在的实现草的交互效果的主要方法是采用CPU对玩家和草的实体进行相交检测,然后根据检测的结果,将受到交互影响的草记录下来,然后LockVertexBuffer,然后再将交互影响的草逐个清染。
[0005]现有技术方案的缺点主要表现在两个方面:效率不够高,因此无法胜任大规模交互;并且在观感方面草的摇摆动画表现的不够自然,因此无法模拟游戏玩家移动时形成的拖尾的动画效果。
[0006]效率不够高表现在当游戏玩家和草的数量较多时(例如,200个游戏玩家),此时,上述方案就不能流畅并逼真的实现草与游戏玩家交互的动画效果。例如,假设游戏玩家的数量为N,草的数量为M,这样首先需要N*M次相交检测,该操作在游戏玩家较多的时候会消耗很多性能;对于交互的每颗草都需要有对应的顶点流,这无疑会带来不少的显存开销;每一帧都需要对于受交互的草的顶点流经过加锁来更新,这也会带来不少的CHJ开销;每一颗受交互影响的草的顶点信息是不完全一样的,因此没有办法通过Instancing的方法一次绘制完,只能逐个绘制,这会增加DrawCal I数目,从而会降低性能。
[0007]针对上述的问题,目前尚未提出有效的解决方案。

【发明内容】

[0008]本发明实施例提供了一种图片处理的方法和装置,以至少解决现有技术中第一对象和第二对象发生交互时,第二对象的显示效果比较差的技术问题。
[0009]根据本发明实施例的一个方面,提供了一种图片处理的方法,包括:获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,所述第二对象中的目标对象位于所述交互区域内;生成与所述交互区域对应的水波动画的法线贴图,其中,所述法线贴图中显示有多条波纹;利用所述多条波纹中的第一目标波纹将目标对象移动到所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置,其中,所述第一目标波纹与所述目标对象相对应。
[0010]根据本发明实施例的另一方面,还提供了一种图片处理的装置,包括:第一获取单元,用于获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,所述第二对象中的目标对象位于所述交互区域内;生成单元,用于生成与所述交互区域对应的水波动画的法线贴图,其中,所述法线贴图中显示有多条波纹;移动单元,用于利用所述多条波纹中的第一目标波纹将目标对象移动到所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置,其中,所述第一目标波纹与所述目标对象相对应。
[0011]在本发明实施例中,采用获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,所述第二对象中的目标对象位于所述交互区域内;生成与所述交互区域对应的水波动画的法线贴图,其中,所述法线贴图中显示有多条波纹;移动单元,用于利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,其中,第一目标波纹与所述目标对象相对应的方式,通过在第一对象和第二对象发生交互时,生成与交互区域相对应的水波动画的法线贴图,并根据该与目标对象对应的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,达到了通过法线贴图调整目标对象的位置的目的,从而实现了第二对象的位置可以随水波动画的法线贴图发生改变的技术效果,进而解决了现有技术中第一对象和第二对象发生交互时,第二对象的显示效果比较差的技术问题。
【附图说明】
[0012]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0013]图1是根据本发明实施例的硬件结构的架构图;
[0014]图2是根据本发明实施例的一种图片处理的方法的流程图;
[0015]图3是根据本发明实施例的一种可选的游戏玩家的交互空间的示意图;
[0016]图4是根据本发明实施例的一种可选的第一图像帧水波高度图的示意图;
[0017]图5是根据本发明实施例的一种可选的像素扩散的示意图;
[0018]图6是根据本发明实施例的一种可选的第一图像帧水波动画的法线贴图的示意图;
[0019]图7是根据本发明实施例的一种图片处理的装置的示意图;以及
[0020]图8是根据本发明实施例的终端的硬件结构图。
【具体实施方式】
[0021]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0022]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0023]专业术语解释
[0024]GPU:显卡,英文全称Graphic Process Unit。
[0025]可交互渲染:玩家可以通过对游戏世界中的一些元素进行交互来改变这些元素的外形和观感,让玩家感觉游戏世界是可以被他改变或者影响的。
[0026I Vertex Buffer:模型的顶点信息流,包括位置,纹理坐标,切线空间向量等数据。
[0027]DrawCall:绘制调用,当引擎准备数据并通知GPU的过程称为一次DrawCal I。
[0028]Instancing渲染:GPU将场景中模型数据相同的多个模型实例一次绘制完成。
[0029]水波动画模型:交互对高度图产生影响,然后将高度图衰减后扩散到周围,生成真实的水波动画。
[0030]Vertex Texture Fetch:允许在Vertex Shader中读取纹理贴图的数据。
[0031]顶点扰动:通过顶点纹理或者随机的方式对模型顶点进行偏移,从而使模型顶看起来是可以动态变化的。
[0032]实施例1
[0033]根据本发明实施例,提供了一种图片处理的方法。
[0034]可选地,在本实施例中,上述的图片处理的方法可以应用于如图1所示的服务器104和终端102所构成的硬件环境中。图1是根据本发明实施例的硬件环境的示意图,如图1所示,服务器104通过网络与终端102进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端102并不限定于计算机、手机、平板电脑等。
[0035]图2是根据本发明实施例的图片处理的方法的流程图。如图2所示,该图片处理的方法包括以下步骤:
[0036]步骤S202,获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,第二对象中的目标对象位于交互区域内。
[0037]具体地,第一对象可以为游戏中的游戏玩家,游戏技能和游戏特效等,第二对象可以为草、花和雾等形态容易受到第一对象影响的对象;第一平面为第二对象所在的平面,例如,草所在的地面。
[0038]在网络游戏中需要交互的Actor (即,上述第一对象)需要绑定一个交互节点,交互节点根据不同的配置可以产生大小和范围不同的交互空间,如图3所示,图3中白色球体即为交互空间。玩家和非游戏角色(Non-Play Character,简称NPC)都会默认添加一个交互节点,游戏技能和游戏特效根据需求进行配置交互节点。当第一对象的交互空间和草所在的地面相交时会形成一个交互区域。其中,在交互空间为一个球体时,该交互空间与第一平面相交得到一个圆形切面。
[0039]步骤S204,生成与交互区域对应的水波动画的法线贴图,其中,法线贴图中显示有多条波纹。
[0040]具体地,可以根据该交互区域(例如,圆形切面)生成与该圆形切面对应的水波动画的法线贴图,并且该法线贴图中包含多条波纹(即,水波纹)。生成的水波动画的法线贴图可以应用到该圆形切面上,生成的法线贴图中的水波纹的条数是该圆形切面在当前图像帧中需要展示的条数。
[0041]步骤S206,利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,其中,第一目标波纹与目标对象相对应。
[0042]目标对象是在法线贴图的影响下移动的对象,可以为处于交互区域中的部分或者全部草。例如,在交互区域中有两圈草,第一圈草受到第一目标波纹的扰动而移动到当前图像帧中相应位置上,其中,可以通过第一目标波纹在法线贴图中的波纹位置来确定上述相应位置,第二圈草没有受到法线贴图中第一目标波纹的扰动而移动到第一圈草移动之后的位置,第一圈草为目标对象,第一目标波纹为法线贴图的多条波纹中用于对第一圈草进行扰动的波纹。
[0043]在本发明实施例中,通过在第一对象和第二对象发生交互时,生成与交互区域相对应的水波动画的法线贴图,并根据该与目标对象对应的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在所述法线贴图中的波纹位置相对应的位置,达到了通过法线贴图调整目标对象的位置的目的,从而实现了第二对象的位置可以随水波动画的法线贴图发生改变的技术效果,进而解决了现有技术中第一对象和第二对象发生交互时,第二对象的显示效果比较差的技术问题。
[0044]当每个图像帧都采用与该图像帧对应的法线贴图进行调整后,多个调整后的图像帧连续显示时,可以显示出动画效果。例如,在游戏中,游戏人物从草丛中走过时,显示草在游戏人物的扰动下摇摆的效果,并且在游戏人物移动时可以形成类似水波纹向一个方向扩散的拖尾效果。
[0045]在一个具体的实施例中,使用上述图片处理的方法可以应用到《天涯明月刀》等网络游戏中,在《天涯明月刀》的游戏引擎中完成交互区域中目标对象的渲染。例如,游戏人物在《天涯明月刀》中的任意游戏场景中行走,其中,该游戏场景中为草地,当游戏人物在草地中行走时,游戏人物的交互空间(如图3所示的球体)与草地所在的地面(S卩,上述第一平面)相交,得到交互区域。《天涯明月刀》的网络游戏客户端生成与该交互区域对应的水波动画的法线贴图,从而利用该多条波纹中的第一目标波纹,将交互区域中与第一目标波纹相对应的草移动到当前图像帧中的相应位置,其中,该相应位置为与第一目标波纹在法线贴图中的波纹位置相对应的位置。当多个图像帧形成连续的动画时,就可以在网络游戏的显示界面中显示出人走过草地使得草摇摆的效果,或者草被人走过所形成的拖尾效果,使得提高游戏玩家与游戏场景的交互,使得模拟的游戏场景更加真实,从而提高了游戏的乐趣。
[0046]需要说明的是,在本发明实施例中,游戏人物对草的扰动时通过显卡(GPU)在顶点着色引擎(Vertex Shader)中采用水波动画的法线贴图来实现的,而不是通过中央处理器(Central Processing Unit,简称CPU)的来实现游戏人物对草的扰动,提高了处理显示数据的效率。
[0047]在本发明下述实施例中,第一对象以游戏人物、目标对象均以草为例进行说明。
[0048]可选地,利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置步骤:根据水波动画的法线贴图将目标对象从第一形态调整到第二形态,其中,在第二形态中目标对象的顶点位于当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置。
[0049]在本发明实施例中,第一对象与目标对象交互是指第一对象的动作对目标对象的形态产生了影响,例如,游戏人物在草地中行走的过程中与草产生了一个交互,这个交互会导致草出现形态上的变化,具体为前、后、左、右摇摆,或者高低变化。例如,游戏人物在草地中行走,该游戏人物两侧的草由直立(第一形态)变成弯曲(第二形态),也就是由第一形态被调整为第二形态。需要说明的是,第一对象与目标对象的交互并不一定是指与第一对象接触过的对象,因为,当游戏人物在草地中行走时,即使未接触到附近的草,也会影响附近草的形态。
[0050]当游戏人物在水中行走时,或者与水接触时,会在水面产生连续变化的波纹,游戏设计人员联想到当游戏人物在草地中行走或者穿行时,草的形态变化与水面中波纹的变化具有相关性。因此,在本发明实施例中,可以通过水波动画的法线贴图来扰动游戏人物交互的草(B卩,上述目标对象),以使每颗草从第一形态调整至第二形态,从而使得一片草呈现类似水波纹的动态变化的效果。
[0051]可选地,根据水波动画的法线贴图将目标对象从第一形态调整到第二形态具体为:获取法线贴图中多条波纹的第一分量和第二分量的取值范围,其中,第一分量为法线贴图X轴方向上的分量,第二分量为法线贴图y轴方向上的分量;获取目标对象在法线贴图的Z轴方向上的第三分量;根据第一分量和第二分量确定目标对象的顶点坐标的在X轴和y轴所在平面上的第一偏移距离和第一偏移方向,并且根据第三分量确定目标对象在z轴上的第二偏移距离和第二偏移方向,第一偏移距离处于取值范围内;控制目标对象的顶点坐标在第一偏移方向上偏移第一偏移距离,在第二偏移方向上偏移第二偏移距离。
[0052]在本发明实施例中,可以采用显卡(GPU)生成的水波动画的法线贴图的相关贴图信息对草的顶点进行扰动,进而,使得草由第一形态变化至第二形态。具体地,可以先获取法线贴图中包含的多条波纹在X轴方向上的分量(S卩,上述第一分量)的取值范围和y轴方向上的分量(即,上述第二分量)的取值范围,以及获取草在z轴方向上的投影高度(即,第三分量);进而根据上述X轴方向上的分量、y轴方向上的分量确定X轴和y轴所在平面上的第一偏移距离和第一偏移方向,即确定草此时是向左、右偏移,还是向前、后偏移,以及向左、右偏移的距离和向前、后偏移的距离,并确定每颗草在z轴上的投影高度,以确定每颗草在z轴上的第二偏移距离和第二偏移方向,其中,如果草在z轴上的投影高度较低,则表明法线贴图对草的扰动较小,也即草的第一偏移距离和第二偏移距离较小,也就是说草的偏移幅度较小;如果草在z轴上的投影高度较高,则表明法线贴图对草的扰动较大,也即草的第一偏移距离和第二偏移距离较大,也就是说草的偏移幅度较大。具体可以理解为,当草的长度较长时,容易受环境的影响发生较大幅度的摆动,当草的长度较低时,反而并不容易受环境的影响发生较大的摆动。本发明采用上述方法将草由第一形态调整到第二形态,可以更加真实地显示出草随游戏人物移动而发生偏移的动态效果。
[0053]在确定对草的扰动大小之后(S卩,上述第一偏移距离、第二偏移距离、第一偏移方向和第二偏移方向),控制目标对象的顶点坐标在第一偏移方向上偏移第一偏移距离,在第二偏移方向上偏移第二偏移距离。当多个图像帧连续在网络游戏界面中显示时,由于水波动画具有动画属性,因此,通过水波动画的法线贴图对草进行扰动时也可以使草也具有与水波动画向类似的动画效果,可以逼真显示草在游戏人物的扰动下摇摆的效果,并且在游戏界面中显示出草被人走过所形成的拖尾效果。
[0054]需要说明的是,上述第一分量的取值范围可以为[_1,1],第二分量的取值范围同样可以为[-1,I],将上述第一分量和第二分量的取值范围设定为[-1,I]可以保证草能够向左、右、前、后四个方向摆动。
[0055]可选地,获取法线贴图中多条波纹的第一分量和第二分量的取值范围具体为:获取法线贴图中多条波纹中最外层的波纹在X轴方向上的最大值和最小值,以及最外层的波纹在y轴方向上的最大值和最小值;调整多条波纹中每条波纹在X轴和y轴上的坐标,以使X轴方向上的最大值和最小值为预设数值,并且y轴方向上的最大值和最小值处于预设数值;将预设数值所指示的范围作为取值范围。
[0056]通过上述描述可知,第一分量的取值范围可以为[-1,1],第二分量的取值范围同样可以选取为[-1,I]。具体地,将上述第一分量和第二分量的取值范围设定为[-1,I]的方式可以为先获取水波动画的法线贴图中最外层波纹在X轴方向和y轴方向上的最大值和最小值;然后调整每条波纹在X轴和在y轴上的坐标的取值,以使每条波纹在X轴上最大值的取值不大于预设数值(例如,数值I ),每条波纹在X轴上最小值的取值不小于预设数值(例如,数值-1),以及每条波纹在y轴上最大值的取值不大于预设数值(例如,数值I),每条波纹在y轴上最小值的取值不小于预设数值(例如,数值-1)。
[0057]当多个图像帧连续在游戏界面上显示时,由于生成的水波动画具有动画特性,因此,用生成的水波动画的法线贴图来驱动草的顶点坐标也会生成与水波动画相类似的动画效果,使得游戏模拟效果更加真实,能够逼真的显示出草在受到游戏人物的扰动时的摇摆效果以及游戏人物移动时形成的草的拖尾效果。
[0058]需要说明的是,当该网络游戏中由多个游戏人物或者特技等与草进行交互时,通过本发明提供的方法可以通过Instancing渲染的方式将多个游戏人物或者特技所扰动的草进行处理,同时将多个游戏人物或者特技所扰动的草的第一形态调整为第二形态。通过本发明提供的方法可以支持200个玩家与草同时交互,并同时完成与该200个玩家交互的草的形态的处理。并且在本发明实施例中,游戏场景中所有的草都是用同一个顶点缓冲区(VertexBuffer),在VertexBuffer中,记录了每颗草的顶点坐标,每颗草的位置信息等信息。
[0059]可选地,生成与交互区域对应的水波动画的法线贴图具体包括:基于与当前图像帧对应的第一图像帧的前一个图像帧的水波动画高度图确定第一图像帧的水波动画高度图的水面高度,其中,第一图像帧为水波动画中的一个图像帧,水面高度为第一图像帧的水波动画高度图中多条波纹的最高水面高度;根据水面高度生成当前图像帧的水波动画高度图;根据当前图像帧的水波动画高度图生成水波动画的法线贴图。
[0060]在本发明实施例中,采用水波交互算法生成水波动画的法线贴图,进而,通过生成的水波动画的法线贴图将目标对象从第一形态调整到第二形态,其中,上述水波交互算法是通过GPU来实现的,因为,通过GPU来实现水波交互算法的实现可以提高水波交互效率,实现起来更加直接,避免了通过(PU的大量计算导致的交互效率低下的问题。
[0061]具体地,水波交互算法一共分为四个步骤,分别是:步骤一、复制前一个图像帧的水波动画高度图,并将该高度图作为第一图像帧的水波高度图的初始高度;步骤二、根据交互节点生成第一图像帧的水波高度图的高度数据;步骤三、扩散和衰减;步骤四、计算法线。下面对上述步骤一至步骤四进行详细描述。
[0062]步骤一:将第一图像帧的前一个图像帧的水波动画高度图进行全屏复制,复制到第一图像帧水波动画的高度图中,作为第一图像帧的水波动画高度图中的起始高度,其中,第一图像帧中水波动画的波纹条数与当前图像帧中水波动画的法线贴图的波纹条数相对应。
[0063]步骤二:将游戏人物、技能或者特效作为交互节点,根据交互节点的配置参数的大小来影响第一图像帧的水面高度,这样就完成了第一图像帧的水面高度数据的生成。进而就可以根据该水面高度得到第一图像帧的水波动画的高度图,其中,如图4所示的为第一图像帧的水波动画的高度图。其中,该配置参数可以设置为默认值,还可以通过技术人员来设置。
[0064]步骤三:以水面高度所在的第二目标波纹为中心,向外扩散第二目标波纹,得到扩散后的多条波纹,其中,扩散后的多条波纹的高度由中心向外逐渐降低。上述水面高度为第一图像帧的水波动画高度图中多条波纹的最高水面高度,当水波动画中的水波纹向外扩散时,均以最高水面高度所在的水波纹(即,第二目标波纹)开始向外扩散第二目标波纹,并且多条波纹的高度以最高水面高度所在的水波纹(即,第二目标波纹)开始向外逐渐降低。
[0065]需要说明的是,向外扩散第二目标波纹可以具体为第二目标波纹中的每一个像素会扩散到周围邻域的像素,具体扩散的分布如图5所示,(i,j)表示当前要处理的像素,以该像素点开始,向并扩散到邻近的像素,例如,和(i+l,j)等像素。
[0066]在本发明实施例中,计算第一图像帧中像素(i,j)的高度可以通过下述公式进行计算,其中,像素(i,j)为第一图像帧中的任意一个像素点:
[0067]H(i, j) = (H(1-1,j-1)+H(1-1,j+i)+H(i+i,j+i)+H(1-1,j)+H(i+i, j)+H(i,j+i))/8_H’ (i, j)
[0068]其中,!1’(^为第一图像帧的前一个图像帧中的像素(1,」)的高度,!1(^为第一图像帧中像素(i,j)的高度,Η+υ-υ为第一图像帧中像素(1-l,j-l)的高度,为第一图像帧中像素(i_l,j+l)的高度,H(i+1,j+1)为第一图像帧中像素(i+l,j+l)的高度,H(im为第一图像帧中像素(i_l,j)的高度,H(i+i,j)为第一图像帧中像素(i+1,j)的高度,H(i,j+i)为第一图像帧中像素(i,j+l)的高度。
[0069]通过上述方法得到扩散后的多条波纹之后,扩散后的多条波纹的高度可以由中心向外逐渐降低,即每条波纹的高度由中心向外逐渐降低。
[0070]步骤四:对衰减后的第一图像帧的水波动画高度图生成法线贴图,其中,如果将该法线贴图和水面的法线进行混合后再作用到水面上,就可以产生真实的水波动画。如图6所示的即为第一图像帧的水波动画的法线贴图,在图6中,可以看出具有明显的水波波纹,如果当多个图像帧进行连续播放时,就可以实现水波的动画特征。
[0071]在一个具体的实施例中,游戏设计人员设置游戏人物或者技能、特技等与草的交互范围为30m,且像素为256 X 256。游戏设计人员在型号为NV GTX 560Ti的显卡上进行了测试,测试了当200个游戏人物与草进行交互时的处理速率,经过测试可知,200人与草交互时,对得到草的动画效果总共消耗不到0.2ms,能够快速实现游戏人物、技能或者特技与草的交互渲染,并且可以胜任大规模的交互。
[0072]本发明中提出的图片处理的方法是完全基于GPU,每一个图像帧将交互信息作为水波高度图渲染到一张贴图中,并将水波动画高度图衰减后扩散到周围邻域,然后生成其对应的法线贴图;在草的Vertex Shader中访问这张法线贴图,用法线图的x分量和y分量对草的顶点位置进行扰动。由于生成的水波是具有动画特性,用其来驱动草的顶点也会生成相应的动画,该动画视觉感较高,在模拟草的摇摆动画和玩家移动时形成的拖尾方面表现的非常出色。
[0073]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0074]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如R0M/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
[0075]实施例2
[0076]根据本发明实施例,还提供了一种用于实施上述图片处理的方法的图片处理的装置,该图片处理的装置主要用于执行本发明实施例上述内容所提供的图片处理的方法,以下对本发明实施例所提供的图片处理的装置做具体介绍:
[0077]图7是根据本发明实施例的图片处理的装置的示意图,如图7所示,该图片处理的装置主要包括:
[0078]第一获取单元71,用于获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,第二对象中的目标对象位于交互区域内。
[0079]具体地,第一对象可以为游戏中的游戏玩家,游戏技能和游戏特效等,第二对象可以为草、花和雾等形态容易受到第一对象影响的对象;第一平面为第二对象所在的平面,例如,草所在的地面。
[0080]在网络游戏中需要交互的Actor (即,上述第一对象)需要绑定一个交互节点,交互节点根据不同的配置可以产生大小和范围不同的交互空间,如图3所示,图3中白色球体即为交互空间。玩家和非游戏角色(Non-Play Character,简称NPC)都会默认添加一个交互节点,游戏技能和游戏特效根据需求进行配置交互节点。当第一对象的交互空间和草所在的地面相交时会形成一个交互区域。其中,在交互空间为一个球体时,该交互空间与第一平面相交得到一个圆形切面。
[0081]生成单元73,用于生成与交互区域对应的水波动画的法线贴图,其中,法线贴图中显示有多条波纹。
[0082]具体地,可以根据该交互区域(例如,圆形切面)生成与该圆形切面对应的水波动画的法线贴图,并且该法线贴图中包含多条波纹(即,水波纹)。生成的水波动画的法线贴图可以应用到该圆形切面上,生成的法线贴图中的水波纹的条数是该圆形切面在当前图像帧中需要展示的条数。
[0083]移动单元75,利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,其中,第一目标波纹与目标对象相对应。
[0084]目标对象是在法线贴图的影响下移动的对象,可以为处于交互区域中的部分或者全部草。例如,在交互区域中有两圈草,第一圈草受到第一目标波纹的扰动而移动到当前图像帧中相应位置上,其中,可以通过第一目标波纹在法线贴图中的波纹位置来确定上述相应位置,第二圈草没有受到法线贴图中第一目标波纹的扰动而移动到第一圈草移动之后的位置,第一圈草为目标对象,第一目标波纹为法线贴图的多条波纹中用于对第一圈草进行扰动的波纹。
[0085]在本发明实施例中,通过在第一对象和第二对象发生交互时,生成与交互区域相对应的水波动画的法线贴图,并根据该与目标对象对应的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在所述法线贴图中的波纹位置相对应的位置,达到了通过法线贴图调整目标对象的位置的目的,从而实现了第二对象的位置可以随水波动画的法线贴图发生改变的技术效果,进而解决了现有技术中第一对象和第二对象发生交互时,第二对象的显示效果比较差的技术问题。
[0086]可选地,移动单元包括:调整子单元,用于根据水波动画的法线贴图将目标对象从第一形态调整到第二形态,其中,在第二形态中目标对象的顶点位于当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置。
[0087]可选地,调整子单元包括:第一获取模块,用于获取法线贴图中多条波纹的第一分量和第二分量的取值范围,其中,第一分量为法线贴图X轴方向上的分量,第二分量为法线贴图y轴方向上的分量;第二获取模块,用于获取目标对象在法线贴图的z轴方向上的第三分量;第一确定模块,用于根据第一分量和第二分量确定目标对象的顶点坐标的在X轴和y轴所在平面上的第一偏移距离和第一偏移方向,并且根据第三分量确定目标对象在z轴上的第二偏移距离和第二偏移方向,第一偏移距离处于取值范围内;控制模块,用于控制目标对象的顶点坐标在第一偏移方向上偏移第一偏移距离,在第二偏移方向上偏移第二偏移距离。
[0088]可选地,第一获取模块包括:获取子模块,用于获取法线贴图中多条波纹中最外层的波纹在X轴方向上的最大值和最小值,以及最外层的波纹在y轴方向上的最大值和最小值;调整子模块,用于调整多条波纹中每条波纹在X轴和y轴上的坐标,以使X轴方向上的最大值和最小值为预设数值,并且y轴方向上的最大值和最小值处于预设数值;确定子模块,用于将预设数值所指示的范围作为取值范围。
[0089]可选地,生成单元包括:第二确定模块,用于基于与当前图像帧对应的第一图像帧的前一个图像帧的水波动画高度图确定第一图像帧的水波动画高度图的水面高度,其中,第一图像帧为水波动画中的一个图像帧,水面高度为第一图像帧的水波动画高度图中多条波纹的最高水面高度;第一生成模块,用于根据水面高度生成当前图像帧的水波动画高度图;第二生成模块,用于根据当前图像帧的水波动画高度图生成水波动画的法线贴图。
[0090]可选地,第一生成模块包括:扩散衰减子模块,用于以水面高度所在的第二目标波纹为中心,向外扩散第二目标波纹,得到扩散后的多条波纹,其中,扩散后的多条波纹的高度由中心向外逐渐降低。
[0091]实施例3
[0092]根据本发明实施例,还提供了一种用于实施上述图片处理的方法的移动终端,如图8所示,该移动终端主要包括处理器401、显示器402、数据接口 403、存储器404和网络接口405,其中:
[0093]显示器402主要用于显示游戏界面,其中,该游戏界面包括游戏人物以及与游戏人物交互的草地。
[0094]数据接口403则主要通过数据传输的方式将用户输入的对游戏的控制指令传输给处理器401。
[0095]存储器404主要用于存储游戏中的具有水波动画效果的草地,以及用户的游戏进度等信息。
[0096]网络接口405主要用于与处理器401进行网络通信,为图片的交互渲染提供数据支持。
[0097]处理器401主要用于执行如下操作:
[0098]获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,第二对象中的目标对象位于交互区域内;生成与交互区域对应的水波动画的法线贴图,其中,法线贴图中显示有多条波纹;利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,其中,第一目标波纹与目标对象相对应。
[0099]处理器401还用于根据水波动画的法线贴图将目标对象从第一形态调整到第二形态,其中,在第二形态中目标对象的顶点位于当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置。
[0100]处理器401还用于获取法线贴图中多条波纹的第一分量和第二分量的取值范围,其中,第一分量为法线贴图X轴方向上的分量,第二分量为法线贴图y轴方向上的分量;获取目标对象在法线贴图的z轴方向上的第三分量;根据第一分量和第二分量确定目标对象的顶点坐标的在X轴和y轴所在平面上的第一偏移距离和第一偏移方向,并且根据第三分量确定目标对象在z轴上的第二偏移距离和第二偏移方向,第一偏移距离处于取值范围内;控制目标对象的顶点坐标在第一偏移方向上偏移第一偏移距尚,在第二偏移方向上偏移第二偏移距离。
[0101]处理器401还用于获取法线贴图中多条波纹中最外层的波纹在X轴方向上的最大值和最小值,以及最外层的波纹在y轴方向上的最大值和最小值;调整多条波纹中每条波纹在X轴和y轴上的坐标,以使X轴方向上的最大值和最小值为预设数值,并且y轴方向上的最大值和最小值处于预设数值;将预设数值所指示的范围作为取值范围。
[0102]处理器401还用于基于与当前图像帧对应的第一图像帧的前一个图像帧的水波动画高度图确定第一图像帧的水波动画高度图的水面高度,其中,第一图像帧为水波动画中的一个图像帧,水面高度为第一图像帧的水波动画高度图中多条波纹的最高水面高度;根据水面高度生成当前图像帧的水波动画高度图;根据当前图像帧的水波动画高度图生成水波动画的法线贴图。
[0103]处理器401还用于以水面高度所在的第二目标波纹为中心,向外扩散第二目标波纹,得到扩散后的多条波纹,其中,扩散后的多条波纹的高度由中心向外逐渐降低。
[0104]实施例4
[0105]本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的图片处理的方法的程序代码。
[0106]可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
[0107]可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
[0108]SI,获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,第二对象中的目标对象位于交互区域内;
[0109]S2,生成与交互区域对应的水波动画的法线贴图,其中,法线贴图中显示有多条波纹;
[0110]S3,利用多条波纹中的第一目标波纹将目标对象移动到当前图像帧中与第一目标波纹在法线贴图中的波纹位置相对应的位置,其中,第一目标波纹与目标对象相对应。
[0111]可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(R0M,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0112]可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(R0M,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0113]可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
[0114]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0115]上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
[0116]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0117]在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0118]作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0119]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0120]以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种图片处理的方法,其特征在于,包括: 获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,所述第二对象中的目标对象位于所述交互区域内; 生成与所述交互区域对应的水波动画的法线贴图,其中,所述法线贴图中显示有多条波纹; 利用所述多条波纹中的第一目标波纹将目标对象移动到所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置,其中,所述第一目标波纹与所述目标对象相对应。2.根据权利要求1所述的方法,其特征在于,利用所述多条波纹中的第一目标波纹将目标对象移动到所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置包括: 根据所述水波动画的法线贴图将所述目标对象从第一形态调整到第二形态,其中,在所述第二形态中所述目标对象的顶点位于所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置。3.根据权利要求2所述的方法,其特征在于,根据所述水波动画的法线贴图将所述目标对象从第一形态调整到第二形态包括: 获取所述法线贴图中多条波纹的第一分量和第二分量的取值范围,其中,所述第一分量为所述法线贴图X轴方向上的分量,所述第二分量为所述法线贴图y轴方向上的分量; 获取所述目标对象在所述法线贴图的z轴方向上的第三分量; 根据所述第一分量和所述第二分量确定所述目标对象的顶点坐标的在所述X轴和所述y轴所在平面上的第一偏移距离和第一偏移方向,并且根据所述第三分量确定所述目标对象在所述z轴上的第二偏移距离和第二偏移方向,所述第一偏移距离处于所述取值范围内; 控制所述目标对象的顶点坐标在所述第一偏移方向上偏移所述第一偏移距离,在所述第二偏移方向上偏移所述第二偏移距尚。4.根据权利要求3所述的方法,其特征在于,获取所述法线贴图中多条波纹的第一分量和所述第二分量的取值范围包括: 获取所述法线贴图中多条波纹中最外层的波纹在所述X轴方向上的最大值和最小值,以及所述最外层的波纹在所述y轴方向上的最大值和最小值; 调整所述多条波纹中每条波纹在所述X轴和所述y轴上的坐标,以使所述X轴方向上的最大值和最小值为预设数值,并且所述y轴方向上的最大值和最小值处于所述预设数值; 将所述预设数值所指示的范围作为所述取值范围。5.根据权利要求1所述的方法,其特征在于,生成与所述交互区域对应的水波动画的法线贴图包括: 基于与所述当前图像帧对应的第一图像帧的前一个图像帧的水波动画高度图确定所述第一图像帧的水波动画高度图的水面高度,其中,所述第一图像帧为所述水波动画中的一个图像帧,所述水面高度为所述第一图像帧的水波动画高度图中多条波纹的最高水面高度; 根据所述水面高度生成所述当前图像帧的水波动画高度图; 根据所述当前图像帧的水波动画高度图生成所述水波动画的法线贴图。6.根据权利要求5所述的方法,其特征在于,根据所述水面高度生成所述当前图像帧的水波动画高度图包括: 以所述水面高度所在的第二目标波纹为中心,向外扩散所述第二目标波纹,得到扩散后的所述多条波纹,其中,扩散后的所述多条波纹的高度由所述中心向外逐渐降低。7.—种图片处理的装置,其特征在于,包括: 第一获取单元,用于获取当前图像帧中第一对象的交互空间与第二对象所在的第一平面相交的交互区域,其中,所述第二对象中的目标对象位于所述交互区域内; 生成单元,用于生成与所述交互区域对应的水波动画的法线贴图,其中,所述法线贴图中显示有多条波纹; 移动单元,用于利用所述多条波纹中的第一目标波纹将目标对象移动到所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置,其中,所述第一目标波纹与所述目标对象相对应。8.根据权利要求7所述的装置,其特征在于,所述移动单元包括: 调整子单元,用于根据所述水波动画的法线贴图将所述目标对象从第一形态调整到第二形态,其中,在所述第二形态中所述目标对象的顶点位于所述当前图像帧中与所述第一目标波纹在所述法线贴图中的波纹位置相对应的位置。9.根据权利要求8所述的装置,其特征在于,所述调整子单元包括: 第一获取模块,用于获取所述法线贴图中多条波纹的第一分量和第二分量的取值范围,其中,所述第一分量为所述法线贴图X轴方向上的分量,所述第二分量为所述法线贴图y轴方向上的分量; 第二获取模块,用于获取所述目标对象在所述法线贴图的z轴方向上的第三分量; 第一确定模块,用于根据所述第一分量和所述第二分量确定所述目标对象的顶点坐标的在所述X轴和所述y轴所在平面上的第一偏移距离和第一偏移方向,并且根据所述第三分量确定所述目标对象在所述z轴上的第二偏移距离和第二偏移方向,所述第一偏移距离处于所述取值范围内; 控制模块,用于控制所述目标对象的顶点坐标在所述第一偏移方向上偏移所述第一偏移距离,在所述第二偏移方向上偏移所述第二偏移距离。10.根据权利要求9所述的装置,其特征在于,所述第一获取模块包括: 获取子模块,用于获取所述法线贴图中多条波纹中最外层的波纹在所述X轴方向上的最大值和最小值,以及所述最外层的波纹在所述y轴方向上的最大值和最小值; 调整子模块,用于调整所述多条波纹中每条波纹在所述X轴和所述y轴上的坐标,以使所述X轴方向上的最大值和最小值为预设数值,并且所述y轴方向上的最大值和最小值处于所述预设数值; 确定子模块,用于将所述预设数值所指示的范围作为所述取值范围。11.根据权利要求7所述的装置,其特征在于,所述生成单元包括: 第二确定模块,用于基于与所述当前图像帧对应的第一图像帧的前一个图像帧的水波动画高度图确定所述第一图像帧的水波动画高度图的水面高度,其中,所述第一图像帧为所述水波动画中的一个图像帧,所述水面高度为所述第一图像帧的水波动画高度图中多条波纹的最1?水面1?度; 第一生成模块,用于根据所述水面高度生成所述当前图像帧的水波动画高度图; 第二生成模块,用于根据所述当前图像帧的水波动画高度图生成所述水波动画的法线贴图。12.根据权利要求11所述的装置,其特征在于,所述第一生成模块包括: 扩散衰减子模块,用于以所述水面高度所在的第二目标波纹为中心,向外扩散所述第二目标波纹,得到扩散后的所述多条波纹,其中,扩散后的所述多条波纹的高度由所述中心向外逐渐降低。
【文档编号】G06T15/00GK105913471SQ201610209641
【公开日】2016年8月31日
【申请日】2016年4月6日
【发明人】解卫博
【申请人】腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1