对象的渲染方法和装置、存储介质和电子设备与流程
本申请涉及数据处理领域,尤其涉及一种对象的渲染方法和装置、存储介质和电子设备。
背景技术:
对于以颜料和涂鸦为主题的多人在线对战游戏(例如,射击对抗游戏),玩家可以操作虚拟角色控制喷涂道具(例如,道具枪,坐骑等)四处喷洒油漆(或者,其他颜料),油漆喷射到哪里,就能走到哪里;但是,当踩上敌方喷洒的油漆时,就会寸步难行,最终以游戏结束时各方的喷涂面积的多少为胜利标准。
相关技术中,可以通过表面贴图混色的方式实现游戏中的油漆喷洒。表面贴图混色是指:将允许进行油漆喷洒的物体的表面贴图替换成大小、内容完全一致的rendertexture(渲染纹理),并通过blit函数在任意区域刷上颜色,blit函数用于将一个图像(surface,对象)绘制到另一个图像的上方。
然而,上述在游戏场景中进行颜料喷洒的方式,如果要恢复物体原始颜色,需要保留一份原来的贴图。可见,相关技术中在游戏场景中进行颜料喷洒的方式,存在由于需要保留一份原始贴图导致的内存资源占用过大的问题。
技术实现要素:
本申请提供了一种对象的渲染方法和装置、存储介质和电子设备,以至少解决相关技术中在游戏场景中进行颜料喷洒的方式存在由于需要保留一份原始贴图导致的内存资源占用过大的问题。
根据本申请实施例的一个方面,提供了一种对象的渲染方法,包括:获取与目标喷涂对象对应的第一高度贴图,其中,所述第一高度贴图用于表示在喷涂第一喷涂颜料之前所述目标喷涂对象的各个位置上的喷涂颜料的高度值;获取与所述第一喷涂颜料对应的第二高度贴图,其中,所述第二高度贴图用于表示所述第一喷涂颜料在所述目标喷涂对象的各个位置上所喷涂出的高度值;混合所述第一高度贴图和所述第二高度贴图,得到目标高度贴图,其中,所述目标高度贴图用于表示在喷涂所述第一喷涂颜料之后所述目标喷涂对象的各个位置上的喷涂颜料的高度值;根据所述目标高度贴图和目标表面贴图对所述目标喷涂对象进行渲染,其中,所述目标表面贴图为所述目标喷涂对象的表面贴图。
可选地,根据所述目标高度贴图和目标表面贴图对所述目标喷涂对象进行渲染包括:按照所述目标表面贴图对所述目标喷涂对象的第一喷涂区域进行渲染,其中,所述第一喷涂区域为所述目标喷涂对象上的喷涂颜料的高度值小于目标高度阈值的区域,所述第一喷涂区域被渲染为与所述目标表面贴图所对应的颜色;按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染,其中,所述第二喷涂区域为所述目标喷涂对象上喷涂颜料的高度大于或者等于所述目标高度阈值的区域,所述第二喷涂区域被渲染为与所述第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
可选地,按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染包括:将所述第二喷涂区域的第一子区域渲染为第一颜色,其中,所述第一子区域为所述第二喷涂区域中属于第一参与方的喷涂颜料的高度值大于或者等于所述目标高度阈值的区域,所述第一参与方为目标事件的多个参与方中所述第一喷涂颜料所属的参与方,所述第一颜色为与所述第一参与方对应的颜色;将所述第二喷涂区域的第二子区域渲染为第二颜色,其中,所述第二子区域为所述第二喷涂区域中除了所述第一子区域以外的其他区域。
可选地,在按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染之前,所述方法还包括:将所述第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于所述目标高度阈值,其中,所述第二喷涂颜料属于所述多个参与方中的第二参与方,所述第三子区域在所述第二喷涂颜料所喷涂到所述第二喷涂区域的第四子区域中,属于所述第一参与方的喷涂颜料的高度值大于或者等于所述目标高度阈值的区域。
可选地,将第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于所述目标高度阈值包括:以所述目标高度阈值为轴,将所述第四子区域中属于所述第一参与方的喷涂颜料的高度值进行反转;将反转后的高度值与所述第四子区域内属于所述第二参与方的喷涂颜料的高度值中的最小值,确定为属于所述第二参与方的喷涂颜料的高度值。
可选地,按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染包括:将所述目标高度贴图中高度值大于目标噪声贴图上对应位置的高度值的区域,确定为所述第二喷涂区域;将所述第二喷涂区域渲染为与所述第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
可选地,在获取与所述目标喷涂对象对应的目标高度贴图之后,所述方法还包括:按照所述目标高度贴图动态生成与所述目标喷涂对象上的喷涂颜料所对应的第一法线贴图;使用所述第一法线贴图为所述目标喷涂对象上的喷涂颜料生成漫反射阴影。
可选地,在使用所述第一法线贴图为所述目标喷涂对象上的喷涂颜料生成漫反射阴影之后,所述方法还包括:使用目标亮斑贴图为所述目标喷涂对象上所喷涂的喷涂颜料生成反光亮斑。
可选地,在按照所述目标高度贴图动态生成与所述目标喷涂对象上的喷涂颜料所对应的第一法线贴图之后,所述方法还包括:使用第一法线贴图和所述目标喷涂对象的第二法线贴图进行渲染,以控制生成所述目标喷涂对象上所喷涂的喷涂颜料的第一法线与所述目标喷涂对象的第二法线交替出现的动画。
可选地,获取与所述第一喷涂颜料对应的第二高度贴图包括:在检测到所述第一喷涂颜料被喷涂到所述目标喷涂对象上的情况下,获取与所述第一喷涂颜料对应的所述第二高度贴图,其中,所述第一喷涂颜料为目标虚拟角色所喷射的喷涂颜料。
可选地,在检测到所述第一喷涂颜料被喷涂到所述目标喷涂对象上之后,所述方法还包括:确定携带所述第一喷涂颜料的目标喷涂弹药与所述目标喷涂对象的碰撞参数,其中,所述碰撞参数包括:碰撞点,碰撞力度,碰撞方向;根据所述碰撞力度和所述碰撞方向,以所述碰撞点为锚点控制将所述第一喷涂颜料喷涂到所述目标喷涂对象上。
根据本申请实施例的另一个方面,提供了一种对象的渲染装置,包括:第一获取单元,用于获取与目标喷涂对象对应的第一高度贴图,其中,所述第一高度贴图用于表示在喷涂第一喷涂颜料之前所述目标喷涂对象的各个位置上的喷涂颜料的高度值;第二获取单元,用于获取与所述第一喷涂颜料对应的第二高度贴图,其中,所述第二高度贴图用于表示所述第一喷涂颜料在所述目标喷涂对象的各个位置上所喷涂出的高度值;混合单元,用于混合所述第一高度贴图和所述第二高度贴图,得到目标高度贴图,其中,所述目标高度贴图用于表示在喷涂所述第一喷涂颜料之后所述目标喷涂对象的各个位置上的喷涂颜料的高度值;第一渲染单元,用于根据所述目标高度贴图和目标表面贴图对所述目标喷涂对象进行渲染,其中,所述目标表面贴图为所述目标喷涂对象的表面贴图。
可选地,第一渲染单元包括:第一渲染模块,用于按照所述目标表面贴图对所述目标喷涂对象的第一喷涂区域进行渲染,其中,所述第一喷涂区域为所述目标喷涂对象上的喷涂颜料的高度值小于目标高度阈值的区域,所述第一喷涂区域被渲染为与所述目标表面贴图所对应的颜色;第二渲染模块,用于按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染,其中,所述第二喷涂区域为所述目标喷涂对象上喷涂颜料的高度大于或者等于所述目标高度阈值的区域,所述第二喷涂区域被渲染为与所述第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
可选地,所述第二渲染模块包括:第一渲染子模块,用于将所述第二喷涂区域的第一子区域渲染为第一颜色,其中,所述第一子区域为所述第二喷涂区域中属于第一参与方的喷涂颜料的高度值大于或者等于所述目标高度阈值的区域,所述第一参与方为目标事件的多个参与方中所述第一喷涂颜料所属的参与方,所述第一颜色为与所述第一参与方对应的颜色;第二渲染子模块,用于将所述第二喷涂区域的第二子区域渲染为第二颜色,其中,所述第二子区域为所述第二喷涂区域中除了所述第一子区域以外的其他区域。
可选地,所述装置还包括:调整单元,用于在按照所述目标高度贴图对所述目标喷涂对象的第二喷涂区域进行渲染之前,将所述第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于所述目标高度阈值,其中,所述第二喷涂颜料属于所述多个参与方中的第二参与方,所述第三子区域在所述第二喷涂颜料所喷涂到所述第二喷涂区域的第四子区域中,属于所述第一参与方的喷涂颜料的高度值大于或者等于所述目标高度阈值的区域。
可选地,所述调整单元包括:反转模块,用于以所述目标高度阈值为轴,将所述第四子区域中属于所述第一参与方的喷涂颜料的高度值进行反转;确定模块,用于将反转后的高度值与所述第四子区域内属于所述第二参与方的喷涂颜料的高度值中的最小值,确定为属于所述第二参与方的喷涂颜料的高度值。
可选地,所述第二渲染模块包括:确定子模块,用于将所述目标高度贴图中高度值大于目标噪声贴图上对应位置的高度值的区域,确定为所述第二喷涂区域;第三渲染子模块,用于将所述第二喷涂区域渲染为与所述第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
可选地,所述装置还包括:第一生成单元,用于在所述获取与所述目标喷涂对象对应的目标高度贴图之后,按照所述目标高度贴图动态生成与所述目标喷涂对象上的喷涂颜料所对应的第一法线贴图;第二生成单元,用于使用所述第一法线贴图为所述目标喷涂对象上的喷涂颜料生成漫反射阴影。
可选地,该装置还包括:第三生成单元,用于在所述使用所述第一法线贴图为所述目标喷涂对象上的喷涂颜料生成漫反射阴影之后,使用目标亮斑贴图为所述目标喷涂对象上所喷涂的喷涂颜料生成反光亮斑。
可选地,所述装置还包括:第二渲染单元,用于在所述按照所述目标高度贴图动态生成与所述目标喷涂对象上的喷涂颜料所对应的第一法线贴图之后,使用第一法线贴图和所述目标喷涂对象的第二法线贴图进行渲染,以控制生成所述目标喷涂对象上所喷涂的喷涂颜料的第一法线与所述目标喷涂对象的第二法线交替出现的动画。
可选地,所述第二获取单元包括:获取模块,用于在检测到所述第一喷涂颜料被喷涂到所述目标喷涂对象上的情况下,获取与所述第一喷涂颜料对应的所述第二高度贴图,其中,所述第一喷涂颜料为目标虚拟角色所喷射的喷涂颜料。
可选地,所述装置还包括:确定单元,用于在所述检测到所述第一喷涂颜料被喷涂到所述目标喷涂对象上之后,确定携带所述第一喷涂颜料的目标喷涂弹药与所述目标喷涂对象的碰撞参数,其中,所述碰撞参数包括:碰撞点,碰撞力度,碰撞方向;控制单元,用于根据所述碰撞力度和所述碰撞方向,以所述碰撞点为锚点控制将所述第一喷涂颜料喷涂到所述目标喷涂对象上。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用高度贴图和表面贴图相结合的方式,通过获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图,由于根据高度贴图和表面贴图对喷涂对象进行渲染,表面贴图未被实际修改,因此,可以实现无需保存原始贴图的副本即可实现颜料喷涂的目的,并且,渲染质量没有变化,可以达到在不降低渲染质量的同时,降低内存开销的技术效果,进而解决了相关技术中在游戏场景中进行颜料喷洒的方式存在由于需要保留一份原始贴图导致的内存资源占用过大的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的对象的渲染方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的对象的渲染方法的流程示意图;
图3是根据本申请实施例的一种可选的高度图与噪声图叠加的示意图;
图4是根据本申请实施例的另一种可选的高度图与噪声图叠加的示意图;
图5是根据本申请实施例的一种可选的渲染器进行颜色渲染的示意图;
图6是根据本申请实施例的一种可选的喷涂颜料渲染结果的示意图;
图7是根据本申请实施例的一种可选的喷涂颜料叠加显示的示意图;
图8是根据本申请实施例的一种可选的通过高度图生成法线图的示意图;
图9是根据本申请实施例的一种可选的亮斑贴图的示意图;
图10是根据本申请实施例的一种可选的法线融合的示意图;
图11是根据本申请实施例的另一种可选的对象的渲染方法的流程示意图;
图12是根据本申请实施例的一种可选的对象的渲染装置的结构框图;
图13是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种对象的渲染方法。可选地,在本实施例中,上述对象的渲染方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端(例如,游戏客户端)提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,还可以用于处理云服务,上述网络包括但不限于:广域网、城域网或局域网,终端102并不限定于pc(personalcomputer,个人计算机)、手机、平板电脑等。本申请实施例的对象的渲染方法可以由服务器104来执行,也可以由终端102来执行,还可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的对象的渲染方法也可以是由安装在其上的客户端(例如,目标游戏的客户端)来执行。
以由服务器104来执行本实施例中的对象的渲染方法为例,图2是根据本申请实施例的一种可选的对象的渲染方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤s202,获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值。
本实施例中的对象的渲染方法可以应用于在事件场景中向喷涂对象上喷涂颜料的场景,该事件场景可以游戏场景,或者,其他需要向场景中的喷涂对象喷射喷涂颜料的场景,本实施例中的事件场景以游戏场景为例进行说明,对应地,目标事件的多个参与方为游戏场景中的多个对战方。
游戏场景可以是目标游戏的游戏场景(例如,三维游戏场景)。目标游戏可以是单人游戏,也可以是多人游戏;可以是对战游戏(例如,以颜料和涂鸦为主题的多人在线对战游戏),也可以是非对战游戏(例如,经营类游戏);可以是端游,也可以是手游。例如,目标游戏可以是mmo(massivemultiplayeronline,大型多人在线)游戏,ar(augmentedreality,增强现实)游戏,vr(virtualreality,虚拟现实)游戏,或者其他类型的游戏,本实施例中对于游戏类型不作限定。
以多人竞技游戏为例,目标游戏可以是nvn(例如,1v1,4v4,5v5等)的多人对战游戏,多人对战可以具有至少两个对战方,本实施例中以两个对战方为例进行说明。目标游戏可以具有一个或多个模式,不同的游戏模式可以对应于一个或多个对战难度(例如,简单,标准,困难等),每个模式允许的对战人数可以相同,也可以不同。
目标游戏可以具有一个或多个游戏场景,每个游戏场景可以对应于一个或多个游戏模式,还可以对应于一个或多个对战难度。在一个游戏场景中可以分为多条对战路线,多条对战路线可以纵横交错,方便玩家控制游戏场景中的虚拟角色进行灵活对战。
需要说明的是,本实施例中以服务器执行上述对象的渲染方法为例进行说明,对于由服务器和客户端共同执行、或者由客户端单独执行上述对象的渲染方法的情况,本实施例中的对象的渲染方法同样适用。
用户(玩家,对应于一个对象)的终端设备上可以运行有对战游戏应用的客户端,该客户端可以与服务器进行通信连接,上述服务器为对战游戏的后台服务器。用户可以使用帐号和密码、动态密码、关联应用(第三方应用)登录等方式登录到其终端设备上运行的客户端,并通过操作客户端进入到一局对战游戏。
在一局对战游戏中,不同的玩家可以通过其终端设备上运行的对战游戏的客户端控制不同的虚拟角色在游戏场景中执行游戏操作,从而进行多人对战。玩家可以控制对战游戏中的虚拟角色使用喷涂道具将喷涂颜料喷射到喷涂对象上。上述喷涂颜料可以是油漆或者其他可以区分不同参与方的颜料,上述喷涂道具可以是器械类道具,虚拟对象类道具(例如,坐骑)等,上述喷涂对象可以是地面,游戏场景中的物体表面等,本实施例中对此不作限定。
在对战游戏的过程中,玩家所控制的虚拟角色在进入自己或者本方喷洒的颜料中,该虚拟角色可以具有移动加速、恢复弹药的加持,同时可以处于隐藏状态,并可进行攀岩操作等,以此来增加游戏的可玩性。
在一局对战游戏中,如果确定出第一喷涂颜料喷涂到目标喷涂对象上,服务器可以首先获取喷涂第一喷涂颜料之前目标喷涂对象的高度贴图,即,第一高度贴图,第一高度贴图可以用来表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值(表示哪有喷涂颜料,哪没有喷涂颜料)。
目标喷涂对象可以是目标喷涂表面,例如,目标游戏场景中的特定表面,比如,地面,墙面,场景中的目标物体(例如,箱子)的表面等。第一喷涂颜料为在某一次喷涂过程中所喷射的喷涂颜料。
第一高度贴图所表示的可以是各个参与方的喷涂颜料的高度值,上述高度值为喷涂颜料具体的高度值,也可以是通过不同的标识所表示出的有无颜料以及颜料属于哪个参与方。第一高度贴图可以是预先保存在特定的存储空间中,例如,内存,缓存等,本实施例中对此不作限定。
同一参与方的虚拟角色所使用的可以是相同类型的喷涂颜料,例如,颜色相同的喷涂颜料,从而可以方便各个参与方区分同一参与方和不同参与方所喷涂的颜料。
需要说明的是,在本实施例中,高度贴图可以是rg贴图,r通道和g通道分别对应于不同参与方,用于表示不同参与方的喷涂颜料的高度值。
步骤s204,获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值。
在喷涂第一喷涂颜料之后,服务器可以计算出第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值,即,第二高度贴图,例如,根据第一喷涂颜料的喷涂位置和喷涂量等计算出第二高度贴图。
步骤s206,混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值。
在得到第一高度贴图和第二高度贴图之后,服务器可以混合第一高度贴图和第二高度贴图,得到目标高度贴图。不同的高度图可以通过简单叠加的方式进行混合,也可以是通过上述覆盖、抵消等方式进行混合。
同一参与方的喷涂颜料可以具有叠加的效果(高度值在原来的基础上增加),也可以具有保持的效果(高度值保持不变)。不同参与方的喷涂颜料的高度值可以具有覆盖的效果(新的喷涂颜料可以覆盖掉其他参与方的喷涂颜料),也可以具有抵消的效果(新的喷涂颜料可以抵消掉其他参与方的喷涂颜料一定的高度值),还可以具有共存的效果(同一位置可以被不同参与方的喷涂颜料同时喷涂)。
例如,目标喷涂对象的一个位置上,该位置上可以仅允许被一个参与方的喷涂颜料所覆盖,新的喷涂颜料可以抵消(已有颜料消失)或者覆盖(保留新的颜料)掉已有的敌方所喷涂的颜料。该位置上也可以允许被多个参与方的喷涂颜料所覆盖,新的喷涂颜料可以抵消掉部分已有的敌方所喷涂的颜料,或者抵消掉全部已有的敌方所喷涂的颜料并保留部分新的颜料。
步骤s208,根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图。
根据目标高度贴图和目标表面贴图,服务器上的渲染器(shader)可以对目标喷涂对象进行渲染,上述目标表面贴图为目标喷涂对象的表面贴图,用于表示目标喷涂对象的原始颜色。
可选地,在本实施例中,在进行渲染时,基于目标高度贴图,如果一个位置(像素点)的两个高度值(对应于不同的通道,例如,r通道,g通道)均小于一个阈值,表示该位置没有被任何一个参与方的喷涂颜料覆盖,则在该位置显示目标喷涂对象在该位置上的原始颜色;如果一个位置(像素点)的两个高度值中只要有一个高度值高于一个阈值,表示该位置被某一参与方的喷涂颜料覆盖,则在该位置会显示与其对应的颜色。
可选地,可以按照优先级顺序判断某一像素的两个高度值是否满足高度条件(高于一个阈值)时,比如,优先判断r通道,如果r通道和g通道均满足高度条件,由于优先判断r通道,则会显示r通道的颜色。
对于游戏场景,渲染得到的游戏画面可以同步到参与该对战游戏的各个玩家的客户端上,以同步显示同样的游戏画面。
通过上述步骤s202至步骤s208,获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图,解决了相关技术中在游戏场景中进行颜料喷洒的方式存在由于需要保留一份原始贴图导致的内存资源占用过大的问题,在不降低渲染质量的同时,降低了内存资源的占用。
作为一种可选的实施例,获取与第一喷涂颜料对应的第二高度贴图包括:
s11,在检测到第一喷涂颜料被喷涂到目标喷涂对象上的情况下,获取与第一喷涂颜料对应的第二高度贴图,其中,第一喷涂颜料为目标虚拟角色所喷射的喷涂颜料。
获取与第一喷涂颜料对应的第二高度贴图可以是在服务器检测到第一喷涂颜料被喷涂到目标喷涂对象上之后执行的,第一喷涂颜料是目标虚拟角色所喷射的喷涂颜料。
目标对象(对应于目标玩家)可以控制目标虚拟角色执行游戏操作,例如,向目标喷涂对象喷射第一喷涂颜料。目标虚拟角色可以是属于第一参与方的虚拟角色。
该第一喷涂颜料可以是由目标子弹携带的,并在碰撞到目标喷涂对象之后通过爆炸后洒落的方式喷涂在目标喷涂对象上,也可以是通过甩落的方式甩到目标喷涂对象上,本实施例中对此不作限定。
服务器可以检测对战游戏中的虚拟角色所执行的游戏操作,例如,检测到第一喷涂颜料喷涂到目标喷涂对象上,第一喷涂颜料为上述目标虚拟角色所喷射的喷涂颜料。
通过本实施例,通过检测到虚拟对象在事件场景中的操作触发获取喷涂之后的喷涂对象的高度贴图,可以提高获取高度贴图的准确性。
作为一种可选的实施例,在检测到第一喷涂颜料喷涂到目标喷涂对象上之后,上述方法还包括:
s21,确定携带第一喷涂颜料的目标喷涂弹药与目标喷涂对象的碰撞参数,其中,碰撞参数包括:碰撞点,碰撞力度,碰撞方向;
s22,根据碰撞力度和碰撞方向,以碰撞点为锚点控制将第一喷涂颜料喷涂到目标喷涂对象上。
如果第一喷涂颜料喷涂到目标喷涂对象上,可以控制显示第一喷涂颜色喷洒到喷涂对象上的特效,以增强颜料喷涂的真实感。
可选地,在本实施例中,可以首先确定携带第一喷涂颜料的目标喷涂弹药与目标喷涂对象的碰撞参数,上述碰撞参数可以包括:碰撞点,碰撞力度,碰撞方向,还可以包含第一喷涂颜料的喷涂量。
根据碰撞力度和碰撞方向,可以以碰撞点为锚点控制将第一喷涂颜料喷涂到目标喷涂对象上,例如,为了表现流体在空中扩散的效果,对于第一喷涂颜料的各个顶点,可以按照抛物线公式计算各个顶点随时间的位移,从而控制显示第一喷涂颜料在目标喷涂对象的喷涂效果,并确定第一喷涂颜料的喷涂区域。
通过本实施例,按照碰撞力度和碰撞方向,以碰撞点为锚点控制将喷涂颜料喷涂到喷涂对象上,可以增强颜料喷涂的真实感。
作为一种可选的实施例,根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染包括:
s31,按照目标表面贴图对目标喷涂对象的第一喷涂区域进行渲染,其中,第一喷涂区域为目标喷涂对象上的喷涂颜料的高度值小于目标高度阈值的区域,第一喷涂区域被渲染为与目标表面贴图所对应的颜色;
s32,按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染,其中,第二喷涂区域为目标喷涂对象上喷涂颜料的高度大于或者等于目标高度阈值的区域,第二喷涂区域被渲染为与第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
在渲染目标喷涂对象时,可以按照目标高度阈值划分渲染的区域,例如,可以目标喷涂对象上的喷涂颜料的高度值小于目标高度阈值的区域划分为第一喷涂区域,将目标喷涂对象上喷涂颜料的高度大于或者等于目标高度阈值的区域划分为第二喷涂区域。
目标高度阈值可以是某一种喷涂颜料的高度阈值,不同喷涂颜料的高度阈值可以是相同。如果一个像素点上的喷涂颜料有一种,该种喷涂颜料的高度值小于目标高度阈值,则该像素点属于第一喷涂区域,否则,该像素点属于第二喷涂区域。如果一个像素点上的喷涂颜料有多种,如果每种喷涂颜料的高度值均小于目标高度阈值,则该区域属于第一喷涂区域,否则,该像素点属于第二喷涂区域。
对于属于第一喷涂区域的像素点,由于该像素点没有被喷涂颜料所覆盖,或者,覆盖该像素点的喷涂颜料的高度值过小,则可以按照目标表面贴图对该像素点进行渲染,例如,可以渲染为目标表面贴图中该像素点的颜色。
对于属于第二喷涂区域的像素点,由于覆盖该像素点的喷涂颜料的高度值满足高度条件,则可以该像素点渲染为覆盖该像素点的喷涂颜料所对应的颜色。
通过对目标喷涂对象上的不同区域或者不同的像素点进行渲染,可以完成整个目标喷涂对象的渲染。
通过本实施例,通过配置喷涂颜料的高度值的阈值来控制喷涂对象的渲染,可以提高对象喷涂的合理性。
作为一种可选的实施例,按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染包括:
s41,将目标高度贴图中高度值大于目标噪声贴图上对应位置的高度值的区域,确定为第二喷涂区域;
s42,将第二喷涂区域渲染为与第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
为了体现出颜料的流动属性,可以通过在高度图上叠加(混合)噪声图的方式对高度图进行调整。叠加的方式可以是:将目标高度贴图与第一噪声贴图进行叠加,得到叠加后的目标高度贴图。
例如,如图3所示,左侧的高度图的轮廓固定无黏连,与颜料(例如,油漆)的流动属性匹配度较差,通过与噪声图叠加,可以渲染出随机边缘,从而体现出颜料的流动性和黏连性。如图4所示,c1为侧面噪声图,c2为c2'(高度图)的侧面高度图,c为叠加后的高度图。
对于叠加后的目标高度贴图(或者,目标高度贴图),可以将其中高度值大于目标噪声贴图(第二噪声贴图,可以与第一噪声贴图可以是同一噪声贴图,也可以不同的噪声贴图)上对应位置的高度值的区域,确定为第二喷涂区域,并将第二喷涂区域渲染为与第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
例如,如图5所示,对于建筑物的shader(渲染器),如果像素点的高度值大于噪音阈值,显示油漆(喷涂材料的一种示例)颜色,否则,显示建筑物本体颜色。
通过本实施例,结合噪声图进行喷涂对象的渲染,可以提高对象渲染的拟真程度,提升用户的使用体验。
作为一种可选的实施例,按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染包括:
s51,将第二喷涂区域的第一子区域渲染为第一颜色,其中,第一子区域为第二喷涂区域中属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值的区域,第一参与方为目标事件的多个参与方中第一喷涂颜料所属的参与方,第一颜色为与第一参与方对应的颜色;
s52,将第二喷涂区域的第二子区域渲染为第二颜色,其中,第二子区域为第二喷涂区域中除了第一子区域以外的其他区域。
在进行渲染时,对于第二喷涂区域的第一子区域,该第一子区域为第二喷涂区域中属于第一参与方(第一对战方)的喷涂颜料的高度值大于或者等于目标高度阈值的区域,可以将其渲染为与第一参与方对应的颜色,即,第一颜色。第一参与方是目标事件(目标对战游戏)的多个参与方(多个对战方)中第一喷涂颜料所属的参与方。
对于第一子区域中的各个像素点,其可以仅被第一参与方的喷涂颜料所覆盖,也可以被除了第一参与方以外的其他参与方(例如,第二对战方)的喷涂颜料所覆盖,无论其他参与方的喷涂颜料的高度值是否大于或者等于目标高度阈值,只要第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值,即可将该像素点渲染为与第一参与方对应的颜色。
由于第二喷涂区域中的各个像素点上某一个参与方的喷涂颜料的高度值大于或者等于目标高度阈值,因此,对于第二喷涂区域中除了第一子区域以外的其他区域,可以将其渲染为与第一颜色不同的颜色,例如,第二颜色。第二颜色可以与除了第一参与方以外的其他参与方(例如,第二对战方)所对应的颜色,例如,第二参与方。
可选地,为了保证渲染的准确性,可以设定在一个像素点上仅允许一个参与方的喷涂材料的高度值大于或者等于目标高度阈值。因此,在目标高度贴图中,如果一个像素点上属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值,存在两种情况:喷涂第一喷涂颜料之前,该像素点上属于第一参与方的喷涂颜料的高度值已经大于或者等于目标高度阈值;喷涂第一喷涂颜料之前,该像素点上属于第一参与方的喷涂颜料的高度值小于目标高度阈值,喷涂第一喷涂颜料之后,该像素点上属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值,无论是哪种情况,上述渲染方式可以满足颜料覆盖的需求(新的颜料覆盖旧的颜料)。
例如,如图6所示,在进行渲染时,优先按照最新喷涂的喷涂颜料所对应的参与方的喷涂颜料的高度值进行渲染,可以在一种颜色的喷涂颜料中显示点状的其他颜色的喷涂颜料,使得显示的喷涂颜料的拟真程度更高。
通过本实施例,按照属于第一参与方的喷涂颜料的高度值满足阈值需求进行喷涂对象渲染,可以提高喷涂对象渲染的合理性。
作为一种可选的实施例,在按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染之前,上述方法还包括:
s61,将第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于目标高度阈值,其中,第二喷涂颜料属于多个参与方中的第二参与方,第三子区域在第二喷涂颜料所喷涂到第二喷涂区域的第四子区域中,属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值的区域。
除了第一参与方以外的其他参与方包括第二参与方,第二参与方所使用的喷涂颜料为第二喷涂颜料。第二喷涂区域中,第二喷涂颜料所喷涂到的区域为第四子区域。在第四子区域中,部分像素点上属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值,部分像素点上属于第一参与方的喷涂颜料的高度值小于目标高度阈值。
对于第四子区域中属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值的部分,即第三子区域,为了保证满足在一个像素点上仅允许一个参与方的喷涂材料的高度值大于或者等于目标高度阈值的条件(方便渲染器进行渲染),可以将第三子区域内的各个像素点上第二喷涂颜料的高度值调整为小于目标高度阈值。
通过本实施例,通过调整属于第二参与方的喷涂颜料的高度值,可以方便渲染器进行渲染,提高对象渲染的准确性。
作为一种可选的实施例,将第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于目标高度阈值包括:
s71,以目标高度阈值为轴,将第四子区域中属于第一参与方的喷涂颜料的高度值进行反转;
s72,将反转后的高度值与第四子区域内属于第二参与方的喷涂颜料的高度值中的最小值,确定为属于第二参与方的喷涂颜料的高度值。
为了将第三子区域内的第二喷涂颜料的高度值调整为小于目标高度阈值,可以以目标高度阈值为轴,将第四子区域中属于第一参与方的喷涂颜料的高度值进行反转,反转后的高度值可以为大于或者等于零的值,对于小于零的值,可以统一配置为零;将反转后的高度值与第四子区域内属于第二参与方的喷涂颜料的高度值中的最小值,确定为属于第二参与方的喷涂颜料的高度值。
例如,如图7左侧所示,颜色a高度值大于或者等于阈值的显示区域与颜色b高度值大于或者等于阈值的显示区域有重叠。颜色b为最新喷涂的颜料的颜色,为了提高游戏的可玩性,对战中需要新的颜色(颜色b)覆盖旧的颜色(颜色)。如果渲染器的判断逻辑为优先判断颜色a的高度值是否大于阈值,那么,重叠区域会显示颜色a。为了将重叠区域颜色a的高度值调整为小于阈值,可以将颜色b的高度值以阈值为轴反转,得到b',并将min(a,b')作为颜色a的高度值,得到如图7右侧所示的显示效果。
通过本实施例,通过对新喷涂颜料的高度值以阈值为轴反转,将反转后的高度值与另一参与方的喷涂颜料的高度值中的最小值作为另一参与方的喷涂颜料的高度值,可以保证高度值调整的合理性。
需要说明的是,在实际的渲染过程中,可以通过依次渲染的方式对喷涂对象的各个像素点进行渲染,而无需先划分出喷涂区域之后再针对区域进行渲染,最终的渲染结果为渲染出不同的喷涂区域。
作为一种可选的实施例,在获取与目标喷涂对象对应的目标高度贴图之后,上述方法还包括:
s81,按照目标高度贴图动态生成与目标喷涂对象上的喷涂颜料所对应的第一法线贴图;
s82,使用第一法线贴图为目标喷涂对象上的喷涂颜料生成漫反射阴影。
为了增强喷涂颜料的显示效果,提高喷涂颜料显示的真实感,可以使用喷涂颜料的法线贴图(即,第一法线贴图)为目标喷涂对象上的喷涂颜料生成漫反射阴影。
喷涂颜料可以是基于目标高度贴图动态生成的,为了提高法线贴图的效率,可以对高度图中的每个像素点进行两次采样,例如,上方像素点的高度值和右侧像素点的高度值,按照公式(1)计算该像素点的法线值,得到对应的法线贴图:
new_normal=(∆hx,∆hy,1-(∆hx)2+(∆hy)2)(1)
其中,∆hx=(tex(u,v)-tex(u+1,v))*_scale,∆hy=(tex(u,v)-tex(u,v+1))*_scale,new_normal为法线图中对应像素点的值,_scale为特定系数,tex(u,v)为高度图中的像素点(u,v)的高度值,new_normal为法线图中对应像素点的值。
例如,如图8所示,图8的左侧为高度图,图8的右侧为基于左侧的高度图生成的法线图。
对于使用上述方式得到的第一法线贴图,可以使用该第一法线贴图为目标喷涂对象上的喷涂颜料生成漫反射阴影,例如,可以基于该第一法线贴图中的值与场景中的摄像头的距离,为目标喷涂对象上的喷涂颜料生成漫反射阴影。例如,可以通过兰伯特漫反射、半兰伯特漫反射或者其他改进方式为喷涂颜料生成漫反射阴影。
通过本实施例,通过高度贴图为喷涂颜料生成法线贴图,并基于法线贴图为喷涂颜料生成漫反射阴影,可以增强喷涂颜料的显示效果,提高喷涂颜料显示的真实感。
作为一种可选的实施例,在使用第一法线贴图为目标喷涂对象上的喷涂颜料生成漫反射阴影之后,上述方法还包括:
s91,使用目标亮斑贴图为目标喷涂对象上所喷涂的喷涂颜料生成反光亮斑。
为了增强喷涂颜料的显示效果,可以在喷涂颜料上显示用于表征由于光照所产生的反光亮斑。反光亮斑可以是使用亮斑贴图在喷涂颜料上添加的。
例如,如图9所示,亮斑贴图可以为立方体贴图,在立方体上分布有多个亮斑,通过对该立方体贴图进行采样(例如,使用unity提供的texcube函数),为喷涂颜料生成反光亮斑。
通过本实施例,通过为喷涂颜料生成反光亮斑,可以增强喷涂颜料的显示效果,提高喷涂颜料显示的真实感。
作为一种可选的实施例,在按照目标高度贴图动态生成与目标喷涂对象上的喷涂颜料所对应的第一法线贴图之后,上述方法还包括:
s101,使用第一法线贴图和目标喷涂对象的第二法线贴图进行渲染,以控制生成目标喷涂对象上所喷涂的喷涂颜料的第一法线与目标喷涂对象的第二法线交替出现的动画。
除了喷涂颜料的第一法线贴图,目标喷涂对象本身具有一个法线贴图,即,第二法线贴图,可以通过融合两个法线贴图中的法线的方式增加喷涂颜料在喷涂对象上显示的真实性。
可选地,在本实施例中,可以使用第一法线贴图和目标喷涂对象的第二法线贴图进行渲染,以控制生成目标喷涂对象上所喷涂的喷涂颜料的第一法线与目标喷涂对象的第二法线交替出现的动画。
例如,如图10所示,喷洒的油漆具有第一法线,地面具有第二法线,shader(渲染器)中可以控制第一法线和第二法线交替出现,从而生成法线融合动画。
通过本实施例,通过融合喷涂颜料的法线和喷涂对象的法线,可以提高喷涂效果显示的真实性。
下面结合可选示例对本申请实施例中的对象的渲染方法进行解释说明。在本示例中,目标事件为目标对战游戏,喷涂颜料为油漆,目标喷涂对象为地面。
如图11所示,本可选示例中的对象的渲染方法的流程可以包括以下步骤:
步骤s1102,检测到虚拟角色所喷射的油漆喷涂到地面上。
玩家控制虚拟角色向地面发射携带油漆的子弹,客户端可以检测到子弹碰撞到地面上。
步骤s1104,获取喷涂上述油漆之后的高度贴图。
客户端可以获取喷涂上述油漆之后的高度贴图,高度贴图用来表示各个位置上不同对战方所喷涂的油漆的高度值。
步骤s1106,使用地面的表面贴图、法线贴图和高度贴图对目标喷涂对象进行渲染。
客户端可以使用地面的表面贴图、油漆的法线贴图、地面的法线贴图和上述高度贴图对目标喷涂对象进行渲染,以控制显示不同对战方的游戏喷洒到地面上的效果,其中,油漆的法线贴图是通过上述高度贴图动态计算得到的,地面的法线贴图和油漆的法线贴图可以进行法线融合。
通过本示例,可以允许建筑物、地面等恢复原始颜色,提升喷涂颜料轮廓的黏连性,提升对战游戏的可玩性,提高玩家的游戏体验。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read-onlymemory,只读存储器)/ram(randomaccessmemory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述对象的渲染方法的对象的渲染装置。图12是根据本申请实施例的一种可选的对象的渲染装置的示意图,如图12所示,该装置可以包括:
(1)第一获取单元1202,用于获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;
(2)第二获取单元1204,与第一获取单元1202相连,用于获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;
(3)混合单元1206,与第二获取单元1204相连,用于混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;
(4)第一渲染单元1208,与混合单元1206相连,用于根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图。
需要说明的是,该实施例中的第一获取单元1202可以用于执行上述步骤s202,该实施例中的第二获取单元1204可以用于执行上述步骤s204,该实施例中的混合单元1206可以用于执行上述步骤s206,该实施例中的第一渲染单元1208可以用于执行上述步骤s208。
通过上述模块,获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图,解决了相关技术中在游戏场景中进行颜料喷洒的方式存在由于需要保留一份原始贴图导致的内存资源占用过大的问题,减少了内存资源的占用,提高了内存使用的合理性。
作为一个可选的实施例,第一渲染单元1208包括:
第一渲染模块,用于按照目标表面贴图对目标喷涂对象的第一喷涂区域进行渲染,其中,第一喷涂区域为目标喷涂对象上的喷涂颜料的高度值小于目标高度阈值的区域,第一喷涂区域被渲染为与目标表面贴图所对应的颜色;
第二渲染模块,用于按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染,其中,第二喷涂区域为目标喷涂对象上喷涂颜料的高度大于或者等于目标高度阈值的区域,第二喷涂区域被渲染为与第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
作为一个可选的实施例,第二渲染模块包括:
第一渲染子模块,用于将第二喷涂区域的第一子区域渲染为第一颜色,其中,第一子区域为第二喷涂区域中属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值的区域,第一参与方为目标事件的多个参与方中第一喷涂颜料所属的参与方,第一颜色为与第一参与方对应的颜色;
第二渲染子模块,用于将第二喷涂区域的第二子区域渲染为第二颜色,其中,第二子区域为第二喷涂区域中除了第一子区域以外的其他区域。
作为一个可选的实施例,上述装置还包括:
调整单元,用于在按照目标高度贴图对目标喷涂对象的第二喷涂区域进行渲染之前,将第二喷涂区域的第三子区域内的第二喷涂颜料的高度值调整为小于目标高度阈值,其中,第二喷涂颜料属于多个参与方中的第二参与方,第三子区域在第二喷涂颜料所喷涂到第二喷涂区域的第四子区域中,属于第一参与方的喷涂颜料的高度值大于或者等于目标高度阈值的区域。
作为一个可选的实施例,调整单元包括:
反转模块,用于以目标高度阈值为轴,将第四子区域中属于第一参与方的喷涂颜料的高度值进行反转;
确定模块,用于将反转后的高度值与第四子区域内属于第二参与方的喷涂颜料的高度值中的最小值,确定为属于第二参与方的喷涂颜料的高度值。
作为一个可选的实施例,第二渲染模块包括:
确定子模块,用于将目标高度贴图中高度值大于目标噪声贴图上对应位置的高度值的区域,确定为第二喷涂区域;
第三渲染子模块,用于将第二喷涂区域渲染为与第二喷涂区域所喷涂的喷涂颜料所对应的颜色。
作为一个可选的实施例,上述装置还包括:
第一生成单元,用于在获取与目标喷涂对象对应的目标高度贴图之后,按照目标高度贴图动态生成与目标喷涂对象上的喷涂颜料所对应的第一法线贴图;
第二生成单元,用于使用第一法线贴图为目标喷涂对象上的喷涂颜料生成漫反射阴影。
作为一个可选的实施例,上述装置还包括:
第三生成单元,用于在使用第一法线贴图为目标喷涂对象上的喷涂颜料生成漫反射阴影之后,使用目标亮斑贴图为目标喷涂对象上所喷涂的喷涂颜料生成反光亮斑。
作为一个可选的实施例,上述装置还包括:
第二渲染单元,用于在按照目标高度贴图动态生成与目标喷涂对象上的喷涂颜料所对应的第一法线贴图之后,使用第一法线贴图和目标喷涂对象的第二法线贴图进行渲染,以控制生成目标喷涂对象上所喷涂的喷涂颜料的第一法线与目标喷涂对象的第二法线交替出现的动画。
作为一个可选的实施例,第二获取单元1204包括:
获取模块,用于在检测到第一喷涂颜料被喷涂到目标喷涂对象上的情况下,获取与第一喷涂颜料对应的第二高度贴图,其中,第一喷涂颜料为目标虚拟角色所喷射的喷涂颜料。
作为一个可选的实施例,上述装置还包括:
确定单元,用于在检测到第一喷涂颜料被喷涂到目标喷涂对象上之后,确定携带第一喷涂颜料的目标喷涂弹药与目标喷涂对象的碰撞参数,其中,碰撞参数包括:碰撞点,碰撞力度,碰撞方向;
控制单元,用于根据碰撞力度和碰撞方向,以碰撞点为锚点控制将第一喷涂颜料喷涂到目标喷涂对象上。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述对象的渲染方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
图13是根据本申请实施例的一种可选的电子设备的结构框图,如图13所示,包括处理器1302、通信接口1304、存储器1306和通信总线1308,其中,处理器1302、通信接口1304和存储器1306通过通信总线1308完成相互间的通信,其中,
存储器1306,用于存储计算机程序;
处理器1302,用于执行存储器1306上所存放的计算机程序时,实现如下步骤:
s1,获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;
s2,获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;
s3,混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;
s4,根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图。
可选地,在本实施例中,上述的通信总线可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线、或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括ram,也可以包括非易失性存储器(non-volatilememory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器1302中可以但不限于包括上述对象的渲染装置中的第一获取单元1202、第二获取单元1204、混合单元1206以及第一渲染单元1206。此外,还可以包括但不限于上述对象的渲染装置中的其他模块,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图13所示的结构仅为示意,实施上述对象的渲染方法的设备可以是终端设备,该终端设备可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图13其并不对上述电子装置的结构造成限定。例如,终端设备还可包括比图13中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图13所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、rom、ram、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项对象的渲染方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
s1,获取与目标喷涂对象对应的第一高度贴图,其中,第一高度贴图用于表示在喷涂第一喷涂颜料之前目标喷涂对象的各个位置上的喷涂颜料的高度值;
s2,获取与第一喷涂颜料对应的第二高度贴图,其中,第二高度贴图用于表示第一喷涂颜料在目标喷涂对象的各个位置上所喷涂出的高度值;
s3,混合第一高度贴图和第二高度贴图,得到目标高度贴图,其中,目标高度贴图用于表示在喷涂第一喷涂颜料之后目标喷涂对象的各个位置上的喷涂颜料的高度值;
s4,根据目标高度贴图和目标表面贴图对目标喷涂对象进行渲染,其中,目标表面贴图为目标喷涂对象的表面贴图。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除