游戏角色染色方法、装置、设备及存储介质与流程

文档序号:21844186发布日期:2020-08-14 16:51阅读:326来源:国知局
游戏角色染色方法、装置、设备及存储介质与流程

本申请实施例涉及游戏领域,尤其涉及一种游戏角色染色方法、装置、设备及存储介质。



背景技术:

对于当前的游戏来说,无论是运行在个人电脑上的电脑端游戏,还是运行在手机上的移动游戏,游戏角色的个性化定制都已经是不可或缺的功能,而染色系统是实现玩家自定义游戏角色的重要途径之一。

目前提供的染色系统,在游戏客户端(比如电脑端或移动端)渲染技术中经常会用到矩阵、向量运算,通过各种矩阵变换,最终将输入的顶点、颜色、纹理等数据渲染成游戏每一帧的画面。在这个过程中,经常需要对变换矩阵进行求解或者推导。

目前的技术方案中,在对游戏角色染色时,求解传统的变换矩阵方案是通过列出相关方程,再进行方程求解,最终得到所需矩阵数据。然而,在该技术方案中,方程计算过程繁琐复杂,容易出错,导致染色(或渲染)时间过长或是染色不成功。因此,现有技术中无法便捷有效地实现对游戏角色的染色,进而影响用户体验。



技术实现要素:

本申请实施例提供一种游戏角色染色方法、装置、设备及存储介质,以克服现有技术中无法便捷有效地实现对游戏角色的染色,进而影响用户体验的问题。

第一方面,本申请实施例提供一种游戏角色染色方法,包括:

响应于用于指示游戏角色染色的触发请求,获取游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;

根据预设步长,分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,所述预设变换矩阵为当前待调整的变换矩阵;

根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵,所述目标矩阵用于表示对游戏角色当前颜色染色时,将所述原始向量变换成所述目标向量的变换矩阵;

根据所述目标矩阵,对所述游戏角色当前颜色进行染色。

在一种可能的设计中,所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵,包括:

通过矩阵乘法,将所述原始向量分别与各个所述第一变换矩阵相乘,得到相应的各个第一向量;

根据各个所述第一向量和所述目标向量,确定目标矩阵。

在一种可能的设计中,所述根据各个所述第一向量和所述目标向量,确定目标矩阵,包括:

将各个所述第一向量分别与所述目标向量进行差异值计算,得到相应的各个第一差异值;

将各个所述第一差异值中的最小值作为第一最小差异值,若所述第一最小差异值小于初始差异值,则对所述预设步长按照预设比例进行衰减,得到新的第一步长,所述初始差异值是由所述原始向量、所述预设变换矩阵以及所述目标向量得到的;

将所述第一最小差异值对应的第一变换矩阵作为第一目标变换矩阵;

若所述新的第一步长小于或等于预设步长极限值,则确定所述第一目标变换矩阵为所述目标矩阵。

在一种可能的设计中,若所述新的第一步长大于所述预设步长极限值,所述方法还包括:

将所述第一目标变换矩阵作为当前待调整的变换矩阵;

将所述第一最小差异值对应的第一向量作为所述原始向量;

将所述第一最小差异值作为初始差异值;

根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵;

继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。

在一种可能的设计中,所述将各个所述第一向量分别与所述目标向量进行差异值计算,得到相应的各个第一差异值,包括:

针对每个所述第一向量,将所述第一向量中的每项和所述目标向量中相对应位置的每项分别进行差值计算;

确定计算得到的各个差值的绝对值之和;

将所述绝对值之和作为所述第一差异值。

在一种可能的设计中,所述根据所述目标矩阵,对所述游戏角色当前颜色进行染色,包括:

根据所述目标矩阵,生成变换参数;

根据所述变换参数,将所述游戏角色当前颜色切换为目标颜色,所述目标颜色为对游戏角色当前颜色染色后的颜色。

在一种可能的设计中,若所述第一最小差异值大于或等于初始差异值,所述方法还包括:

对所述预设步长按照预设比例进行衰减,得到新的第二步长;

若所述新的第二步长小于或等于预设步长极限值,则将所述预设变换矩阵作为目标矩阵;

若所述新的第二步长大于预设步长极限值,则将所述新的第二步长作为所述新的第一步长;

继续执行所述根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵的操作。

第二方面,本申请实施例提供一种游戏角色染色装置,包括:

第一获取模块,用于响应于用于指示游戏角色染色的触发请求,获取游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;

变换矩阵调整模块,用于根据预设步长,分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,所述预设变换矩阵为当前待调整的变换矩阵;

目标矩阵确定模块,用于根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵,所述目标矩阵用于表示对游戏角色当前颜色染色时,将所述原始向量变换成所述目标向量的变换矩阵;

染色模块,用于根据所述目标矩阵,对所述游戏角色当前颜色进行染色。

第三方面,本申请实施例提供一种游戏角色染色设备,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计中所述的游戏角色染色方法。

第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计中所述的游戏角色染色方法。

本实施例提供的游戏角色染色方法、装置、设备及存储介质,首先响应于用于指示游戏角色染色的触发请求,获取染色信息,这里的染色信息可以包括游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;然后根据预设步长,分别对当前待调整的变换矩阵即预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,然后根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,来确定目标矩阵,进而对游戏角色当前颜色进行染色,通过调整预设转换矩阵使得原始向量能够移动到目标向量,进而能够将原始向量向目标向量移动过程中使用的转换矩阵作为目标矩阵,然后根据目标矩阵实现游戏角色的染色。因此,本申请通过调整预设转换矩阵,假设已经得到所有未知数(即要求解的转换矩阵的元素)的结果,根据每个未知数的结果,结合原始向量和目标向量来确定能够使原始向量变换为目标向量的目标矩阵,通过正向求解,使得该过程比较直观、简单且不容易出错,实现了便捷有效地对游戏角色的染色,进而提高用户体验。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的游戏角色染色方法的场景示意图;

图2为本申请实施例提供的游戏角色染色方法的流程示意图;

图3为本申请又一实施例提供的游戏角色染色方法的流程示意图;

图4为本申请实施例提供的游戏角色染色装置的结构示意图;

图5为本申请实施例提供的游戏角色染色设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

目前的技术方案中,在对游戏角色染色时,求解传统的变换矩阵方案是通过列出相关方程,再进行方程求解,最终得到所需矩阵数据,然而求解一个非常多元的方程组是一个比较繁琐的逆向过程,且扩展性、灵活性不够强。因此,在现有技术方案中,方程计算过程繁琐复杂,容易出错;或者对于某些特殊情况处理繁琐,比如未知数中某些值必须为固定值,或者必须处于一个指定范围内(如图形渲染中某些通道不能使用,必须为0),需要对求解算法进行调整,容易出错,导致染色(或渲染)时间过长或是染色不成功,因此,现有技术无法便捷有效地实现对游戏角色的染色,进而影响用户体验。

为了解决上述问题,本申请的发明构思为:在对游戏角色染色时,先初始化目标矩阵,并设置初始步长。每一回合,对目标矩阵的每一个元素进行指定步长的修正,并计算使用当前目标矩阵变换后的向量与目标向量的差异值,若差异值比修正前更小,则应用该修正到该元素上。回合结束后,步长值按一定比例衰减,在衰减到小于指定值后,得到最终的目标矩阵,基于最终的目标矩阵对游戏角色进行染色,通过正向求解,使得该过程比较直观、简单且不容易出错,且能够便捷有效地实现对游戏角色的染色,进而提高用户体验。

下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

参考图1,图1为本申请实施例提供的游戏角色染色方法的场景示意图。在实际应用中,用户即玩家通过用户终端10(比如电脑端或移动端)在游戏系统20上触发对游戏角色染色的请求,游戏系统中的染色系统30可以让玩家随心所欲地改变自己在游戏中所控制角色的时装、头发乃至皮肤的颜色,从而创造出各种与众不同、极具个性的角色效果。比如,玩家在游戏系统上的触发请求可以是通过点击“换装”按钮等触发,这里的触发按钮或是触发操作不做限定,根据具体的游戏系统设置而定。比如,玩家想对游戏角色服装颜色进行切换,通过触发按钮向游戏系统中的染色系统发送指示游戏角色染色的触发请求,染色系统开始执行染色操作。

具体地,染色系统在接收到用于指示游戏角色染色的触发请求后,首先解析该触发请求,获取染色参数,这里的染色参数可以包括游戏角色当前颜色对应的原始向量(或原始颜色向量)和需要对游戏角色当前颜色染色或是切换颜色后对应的目标向量(或目标颜色向量)。然后通过设定的初始步长(即预设步长),开始对初始变换矩阵(即预设变换矩阵)进行调整,每次调整预设变换矩阵中的一个元素,将所有的元素全部调整一遍或是根据预设规则调整部分或全部元素,则即为一个回合,在一个回合中,针对每次调整,根据调整后的各个变换矩阵、原始向量以及目标向量来确定各个变换矩阵中是否存在目标矩阵,如果不存在,则继续调整第一次调整后的变换矩阵或是预设变换矩阵,直到确定调整后的变换矩阵存在目标矩阵,然后基于目标矩阵,对游戏角色当前颜色进行染色,通过正向求解目标矩阵的过程,使得该过程比较直观、简单且不容易出错,且能够便捷有效地实现对游戏角色的染色,进而提高用户体验。

具体地,如何实现游戏角色染色的,参见图2所示,图2为本申请实施例提供的游戏角色染色方法的流程示意图。

参见图2,所述游戏角色染色方法,包括:

s101、响应于用于指示游戏角色染色的触发请求,获取游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量。

本实施例中,实现游戏角色染色方法的执行主体可以是游戏系统中的染色系统。这里的游戏系统可以适用于电脑端也适用于移动端(即手游),在此不作限定。

其中,原始向量是含有3个元素的(r,g,b),目标向量是(rd,gd,bd)。

在实际应用中,这里的游戏角色可为一个游戏人物、游戏装备或者在游戏中出现的任意物品等,其中,一般的,游戏角色可以包括游戏角色的本体模型(如一个3d模型)和本体模型上的颜色。这里的本体模型上的颜色或游戏角色当前颜色或对游戏角色当前颜色染色后的颜色均可以包括游戏角色的皮肤颜色、头发颜色、衣服颜色等各部位的颜色。

本实施例中,染色系统在接收到玩家通过用户终端在游戏系统上触发的用于指示游戏角色染色的触发请求时,可以通过解析该触发请求,获取染色信息,比如游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量。然后基于原始向量和目标向量开始执行染色操作。

s102、根据预设步长,分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,所述预设变换矩阵为当前待调整的变换矩阵。

本实施例中,为了实现染色操作,需要得到将原始向量转换成目标向量的变换矩阵即目标矩阵,由于现有技术的求解过程是求解一个非常多元的方程组,即是一个比较繁琐的逆向过程,且扩展性、灵活性不够强,因此本实施例中,设置了预设步长和预设变换矩阵,这里的预设变换矩阵可以是初始化的目标矩阵,可以初始化目标矩阵中所有元素均为0,也可以根据预设规则,初始化目标矩阵中的某个元素或某些元素为指定值或是指定范围。无论初始化目标矩阵中的元素是多少,最终都会基于预设步长对初始化的目标矩阵进行调整,直到找到将原始向量转换为目标向量的变化矩阵即最终的目标矩阵,因此,对如何初始化目标矩阵在此不做限定。

其中,该预设步长是个逐渐衰减的值,预设步长可以初始设置为255,然后对预设变换矩阵中的各个元素进行调整,目的是为了能够得到更接近目标向量所对应的变换矩阵的元素,然后确定本次回合需要保存修正的元素。这里的调整可以是加上步长,或者减去步长。具体地,对预设转换矩阵中每一个元素在指定的限制条件下(某些元素为指定值或者有指定范围)尝试以预设步长delta进行修正(加上delta,或者减去delta),并保存当前调整后的变换矩阵为新矩阵即第一变换矩阵,由于预设步长是个转件衰减的值,这里对调整的回合不做限定,需要根据原始向量以及目标向量确定。

s103、根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵,所述目标矩阵用于表示对游戏角色当前颜色染色时,将所述原始向量变换成所述目标向量的变换矩阵。

本实施例中,染色过程中的矩阵转换,是个正向求解目标矩阵的过程,通过调整预设转换矩阵,假设已经得到所有未知数(即要求解的转换矩阵的元素)的结果,根据每个未知数的结果,结合原始向量和目标向量来确定能够使原始向量变换为目标向量的目标矩阵,区别于现有技术的逆向求解过程。

s104、根据所述目标矩阵,对所述游戏角色当前颜色进行染色。

本实施例中,比如,已知游戏角色原有服装的颜色,需要通过染色矩阵变换,使得服装可以切换到任意的颜色。具体地,只需要提供原有角色服装的颜色代码(对应原始向量)和目标颜色代码(对应目标矩阵),染色系统会自动计算中间的变换矩阵,生成变换参数,极大地减少了编辑人员的工作量。

在一种可能的设计中,本实施例在上述实施例的基础上,例如在图2所述的实施例基础上,对s104进行了详细说明。所述根据所述目标矩阵,对所述游戏角色当前颜色进行染色,可以包括以下步骤:

步骤a1、根据所述目标矩阵,生成变换参数。

步骤a2、根据所述变换参数,将所述游戏角色当前颜色切换为目标颜色,所述目标颜色为对游戏角色当前颜色染色后的颜色。

本实施例中,该游戏角色的染色系统在接收到染色参数后,通过对染色参数进行处理,得到将原始向量转换为目标向量的中间转换矩阵即目标矩阵,基于该目标矩阵来确定染色过程中的变换参数,通过该变换参数将输入模型的顶点、颜色、纹理等数据渲染成游戏每一帧的画面,即实现了对游戏角色的染色。

其中,在将游戏角色当前颜色切换为目标颜色之后,在用户终端上通过游戏系统向用户展示染色或是切换颜色后的游戏角色,还可以通过用户终端的游戏系统界面上显示用于提示用户是否确定切换的提示信息,以使玩家可以通过用户终端在游戏系统上进行确认或保存或删除等操作。进而提高了用户体验。

本实施例提供的游戏角色染色方法,通过响应于用于指示游戏角色染色的触发请求,获取染色信息,这里的染色信息可以包括游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;然后根据预设步长,分别对当前待调整的变换矩阵即预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,然后根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,来确定目标矩阵,进而对游戏角色当前颜色进行染色,通过调整预设转换矩阵使得原始向量能够移动到目标向量,进而能够将原始向量向目标向量移动过程中使用的转换矩阵作为目标矩阵,然后根据目标矩阵实现游戏角色的染色。因此,本申请通过调整预设转换矩阵,假设已经得到所有未知数(即要求解的转换矩阵的元素)的结果,根据每个未知数的结果,结合原始向量和目标向量来确定能够使原始向量变换为目标向量的目标矩阵,通过正向求解,使得该过程比较直观、简单且不容易出错,实现了便捷有效地对游戏角色的染色,进而提高用户体验。

在一种可能的设计中,如何基于所述原始向量、各个所述第一变换矩阵以及所述目标向量来确定目标矩阵,本实施例在上述实施例的基础上,进行了详细说明。可以通过以下步骤实现:

步骤b1、通过矩阵乘法,将所述原始向量分别与各个所述第一变换矩阵相乘,得到相应的各个第一向量。

步骤b2、根据各个所述第一向量和所述目标向量,确定目标矩阵。

本实施例中,以ax=b为例,若以第一变换矩阵tmpmatrix作为最终结果(即目标矩阵),代入x。其中,a是原始向量,b是目标向量。在实际应用中,由于不确定各个第一变换矩阵中是否存在目标矩阵,需要将每个第一变换矩阵代入x,a是原始向量,则ax=b1,这里的b1是第一向量,然后根据各个第一向量和目标向量来确定目标矩阵。

其中,调整预设变换矩阵的方式可以为:方式一、确定所有满足衰减条件的步长,然后针对每个步长,分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵;方式二、每次确定一个步长,然后基于该步长分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵。

针对方式一,由于得到了将原始向量转换为目标向量的中间所有转换矩阵,因此,只需通过矩阵乘法,将原始向量依次分别与每个第一变换矩阵相乘,得到每个第一变换矩阵对应的第一向量,然后从各个第一向量中确定与该目标向量一致的向量即可找到在第一变换矩阵中存在的目标矩阵。

针对方式二,这里的第一变换矩阵可以是一回合的调整中得到的,也可以是多回合的调整得到的。

具体地,若通过矩阵乘法,将所述原始向量分别与第一回合调整对应的各个所述第一变换矩阵相乘,得到的各个第一向量均不是与目标向量,则需要进行下一回合变换矩阵的调整,即将预设步长进行衰减,基于衰减后的新步长来调整第一变换矩阵中各个元素,得到新的变换矩阵,将第一变换矩阵更新为新的变换矩阵,然后继续执行通过矩阵乘法,将所述原始向量分别与各个所述第一变换矩阵相乘,确定得到的各个第一向量中是否存在与目标向量相近或一致的第一向量,直到找到最终的第一向量,停止查找,并将该最终的第一向量对应的变换矩阵作为目标矩阵。

在一种可能的设计中,以下实施例可以以上述方式二为例,采用循环查找的方式:

参见图3所示,图3为本申请又一实施例提供的游戏角色染色方法的流程示意图,本实施例在上述实施例的基础上,对如何确定目标向量进行了详细说明。所述根据各个所述第一向量和所述目标向量,确定目标矩阵,可以包括:

s201、将各个所述第一向量分别与所述目标向量进行差异值计算,得到相应的各个第一差异值。

s202、将各个所述第一差异值中的最小值作为第一最小差异值,若所述第一最小差异值小于初始差异值,则对所述预设步长按照预设比例进行衰减,得到新的第一步长,所述初始差异值是由所述原始向量、所述预设变换矩阵以及所述目标向量得到的。

s203、将所述第一最小差异值对应的第一变换矩阵作为第一目标变换矩阵。

s204、若所述新的第一步长小于或等于预设步长极限值,则确定所述第一目标变换矩阵为所述目标矩阵。

本实施例中,将各个所述第一向量分别与所述目标向量进行差异值计算,可以通过以下方式实现:

步骤c1、针对每个所述第一向量,将所述第一向量中的每项和所述目标向量中相对应位置的每项分别进行差值计算。

步骤c2、确定计算得到的各个差值的绝对值之和。

步骤c3、将所述绝对值之和作为所述第一差异值。

具体地,根据得到的各个第一向量,首先将每个第一向量与目标向量进行差值计算。其中,第一向量和目标向量中的元素一一对应。比如第一向量为[m1,m2,m3],目标向量为[n1,n2,n3],将所述第一向量中的每项和所述目标向量中相对应位置的每项分别进行差值计算为:m1-n1、m2-n2、m3-n3。然后计算各个差值的绝对值之和即|m1-n1|+|m2-n2|+|m3-n3|,将该绝对值之和作为第一向量和目标向量之间的第一差异值。将所有的第一向量分别与目标向量之间的第一差异值得到后,取其中第一差异值中最小值,作为本回合或是本轮调整对应的第一最小差异值。

为了确定本轮调整是否有效,可以将第一最小差异值与初始差异值进行比对。其中,初始差异值是由原始向量通过矩阵乘法与未调整的预设变换矩阵相乘得到的初始向量,然后通过初始向量与目标向量做差异值计算得到的。

具体地,若所述第一最小差异值小于初始差异值,则说明本轮调整预设变换矩阵使得原始向量转换为目标向量为有效调整,则记录当前调整后的变换矩阵,更新本轮得到的第一最小差异值即将第一最小差异值作为下轮比较差异值的初始差异值。如果有效,则对预设步长按照预设比例进行衰减,然后得到新的第一步长,再基于新的第一步长确定是否结束或是继续调整变换矩阵。这里的预设比例可以是衰减因子,可以设为0.95。

若新的第一步长小于或等于预设步长极限值,则将本轮调整变换矩阵后得到的第一最小差异值对应的第一变换矩阵即第一目标变换矩阵确定为目标变换矩阵。

在一种可能的设计中,若所述新的第一步长大于所述预设步长极限值,则可以通过以下步骤实现目标矩阵的确定:

步骤d1、将所述第一目标变换矩阵作为当前待调整的变换矩阵.

步骤d2、将所述第一最小差异值对应的第一向量作为所述原始向量。

步骤d3、将所述第一最小差异值作为初始差异值。

步骤d4、根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵.

步骤d5、继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。

具体地,若所述新的第一步长大于所述预设步长极限值,则继续调整上一轮记录的新矩阵tmpmatrix即第一目标变换矩阵。首先,更新数据:将预设变换矩阵matrixanswer即当前待调整的变换矩阵更新为第一目标变换矩阵作为本轮的预设变换矩阵,将上轮第一最小差异值对应的第一向量curvector作为本轮的原始向量,将第一最小差异值作为本轮的初始差异值。其中,将所述第一目标变换矩阵作为当前待调整的变换矩阵可以理解将预设变换矩阵更新为第一目标变换矩阵,即更新matrixanswer=tmpmatrix。将所述第一最小差异值mindiff对应的第一向量curvector作为所述原始向量可以理解为将原始向量更新为第一向量curvector,即更新原始向量=curvector。将所述第一最小差异值作为初始差异值可以理解为将初始差异值curdiff(如果是第二轮或是及以上,curdiff还可以表示上轮得到的第一最小差异值)更新为第一最小差异值mindiff即curdiff=mindiff。

然后根据新的第一步长,分别对本轮的第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,更新第一变换矩阵为第二变换矩阵。继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。其中,根据所述原始向量、各个所述第一变换矩阵以及所述目标向量来确定目标矩阵的操作,可以包括:

通过矩阵乘法,将所述原始向量分别与各个所述第一变换矩阵相乘,得到相应的各个第一向量;将各个所述第一向量分别与所述目标向量进行差异值计算,得到相应的各个第一差异值;将各个所述第一差异值中的最小值作为第一最小差异值,若所述第一最小差异值小于初始差异值,则对所述预设步长按照预设比例进行衰减,得到新的第一步长,所述初始差异值是由所述原始向量、所述预设变换矩阵以及所述目标向量得到的;将所述第一最小差异值对应的第一变换矩阵作为第一目标变换矩阵;若所述新的第一步长小于或等于预设步长极限值,则确定所述第一目标变换矩阵为所述目标矩阵。若所述新的第一步长大于所述预设步长极限值,将所述第一目标变换矩阵作为当前待调整的变换矩阵;将所述第一最小差异值对应的第一向量作为所述原始向量;将所述第一最小差异值作为初始差异值;根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵;继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。依次通过衰减预设步长来调整变换矩阵,直到找到目标矩阵。

具体地,如何根据所述原始向量、各个所述第一变换矩阵以及所述目标向量来确定目标矩阵的操作,可以参见上述实施例的步骤,在此不再赘述。

在一种可能的设计中,如果第一最小差异值大于或等于初始差异值,则说明本轮调整无效,需要继续衰减预设步长,使得原始向量转换目标向量的中间变换矩阵靠近目标矩阵。本实施例在上述实施例的基础上,对游戏角色染色方法进行了详细说明。所述游戏角色染色方法还可以通过以下步骤实现:

步骤e1、若所述第一最小差异值大于或等于初始差异值,对所述预设步长按照预设比例进行衰减,得到新的第二步长。

步骤e2、若所述新的第二步长小于或等于预设步长极限值,则将所述预设变换矩阵作为目标矩阵。

步骤e3、若所述新的第二步长大于预设步长极限值,则将所述新的第二步长作为所述新的第一步长。

步骤e4、继续执行所述根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵的操作。

本实施例中,若所述第一最小差异值大于或等于初始差异值,则说明上轮调整无效,则不更新预设变换矩阵或是不更新上轮调整后的变换矩阵。继续按照以衰减因子设为0.95的比例对预设步长进行衰减,得到新的第二步长,如果该新的第二步小于或等于预设步长极限值,则将上轮调整前的变换矩阵(如果本轮是第二轮,则上轮调整前的变换矩阵为第一轮中的预设变换矩阵,如果本轮是第三轮,则上轮调整前的变换矩阵为第一轮中更新后的变换矩阵(即已经在第一轮结束后,第二轮开始后更新预设变换矩阵为第一目标变换矩阵)或是第二轮中未调整前的矩阵)作为新的变换矩阵,更新预设变换矩阵,然后继续执行确定目标矩阵的操作。

具体地,首先判断新的第二步长与预设步长极限值的大小,若所述新的第二步长小于或等于预设步长极限值,则说明该预设变换矩阵即为目标矩阵;若所述新的第二步长大于预设步长极限值,则将所述新的第二步长作为所述新的第一步长,然后继续执行步骤d1至d5。即根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵;继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。

在实际应用中,游戏角色染色方法的执行步骤可以包括:

步骤1、初始化步长参数delta,初始化原始解matrixanswer(即预设转换矩阵),本实施例中默认预设转换矩阵所有元素为0。

步骤2、当步长参数delta大于极限值limit时,执行下面步骤,否则结束算法,返回matrixanswer作为结果。

步骤3、(当步长参数delta小于或等于极限值limit时)以当前matrixanswer为基准,对该矩阵中每一个元素在指定的限制条件下(某些元素为指定值,或者有指定范围)尝试以delta进行修正(加上delta,或者减去delta),并保存为一个新矩阵tmpmatrix。以tmpmatrix为结果计算出变换后的向量tmpvector(即本轮的变换后的向量),并与目标向量destvector进行差异值计算(本实施例中,差异值简单地计算两个向量每一项的差的绝对值的和,也可以是平方差之和等,不做具体限定,本实施例以两个向量每一项的差的绝对值的和为例),若差异值diff小于本轮最小差异值mindiff,则更新mindiff,并记录下对应的新矩阵tmpmatrix。

步骤4、计算以matrixanswer(原始解)变换出的向量curvector(即上一轮的变换后的向量),并计算与destvector的差异值curdiff。若mindiff小于curdiff,则更新curdiff=mindiff,更新matrixanswer=tmpmatrix。

步骤5、令delta按指定比例衰减,本实施例中的衰减因子设为0.95。

步骤6、重复步骤2。

本实施例中,一轮是指步骤2~6的一次执行。每一轮会尝试调整一个元素的值,并生成新的diff值,每轮取最小的diff作为本轮mindiff。如调整a元素后,产生了diffa,调整b元素后,产生了diffb,则mindiff=min(diffa,diffb)。在记录时,可以通过用一个临时变量记录。

具体地,每一轮会对所有元素都尝试去修正一下,对于每个元素的修正都会产生一个新的diff值,即diff1,diff2,diff3…,这些diff值中最小的那个就是本轮的mindiff,再拿这个mindiff和上一回合的curdiff比较。

其中,mindiff<curdiff,说明经过上述的修正,距离目标向量更“近”了,所以要更新matrixanswer为tmpmatrix;若mindiff>=curdiff,则不更新curdiff,直接跳到步骤5;使得每一次循环,都更加逼近目标向量。

本申请,在实现对游戏角色染色或渲染过程中,由于中间变换矩阵十分简便直观,而且能轻松适应各种条件限制,而不需要做大的算法改动。而且算法是正向逼近求解,思路清晰,不易出错,进而能够方便、快速地确定染色参数的参数变量即变换参数,然后实现对游戏角色的染色过程。因此,通过便捷准确、有效地得到目标矩阵,基于目标矩阵对游戏角色进行染色,利用正向求解过程,使得该过程比较直观、简单且不容易出错,且能够便捷有效地实现对游戏角色的染色,进而提高用户体验。

为了实现所述游戏角色染色方法,本实施例提供了一种游戏角色染色装置。参见图4,图4为本申请实施例提供的游戏角色染色装置的结构示意图;所述游戏角色染色装置40,包括:第一获取模块401、变换矩阵调整模块402、目标矩阵确定模块403以及染色模块404;第一获取模块401,用于响应于用于指示游戏角色染色的触发请求,获取游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;变换矩阵调整模块402,用于根据预设步长,分别对预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,所述预设变换矩阵为当前待调整的变换矩阵;目标矩阵确定模块403,用于根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵,所述目标矩阵用于表示对游戏角色当前颜色染色时,将所述原始向量变换成所述目标向量的变换矩阵;404,用于根据所述目标矩阵,对所述游戏角色当前颜色进行染色。

本实施例通过设置变换矩阵调整模块402、目标矩阵确定模块403以及染色模块404,用于响应于用于指示游戏角色染色的触发请求,获取染色信息,这里的染色信息可以包括游戏角色当前颜色对应的原始向量和对游戏角色当前颜色染色后对应的目标向量;然后根据预设步长,分别对当前待调整的变换矩阵即预设变换矩阵中的各个元素进行调整,得到相应的各个第一变换矩阵,然后根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,来确定目标矩阵,进而对游戏角色当前颜色进行染色,通过调整预设转换矩阵使得原始向量能够移动到目标向量,进而能够将原始向量向目标向量移动过程中使用的转换矩阵作为目标矩阵,然后根据目标矩阵实现游戏角色的染色。因此,本申请通过调整预设转换矩阵,假设已经得到所有未知数(即要求解的转换矩阵的元素)的结果,根据每个未知数的结果,结合原始向量和目标向量来确定能够使原始向量变换为目标向量的目标矩阵,通过正向求解,使得该过程比较直观、简单且不容易出错,实现了便捷有效地对游戏角色的染色,进而提高用户体验。

本实施例提供的装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。

在一种可能的设计中,所述目标矩阵确定模块403,具体用于:通过矩阵乘法,将所述原始向量分别与各个所述第一变换矩阵相乘,得到相应的各个第一向量;根据各个所述第一向量和所述目标向量,确定目标矩阵。

在一种可能的设计中,所述目标矩阵确定模块403,还具体用于:将各个所述第一向量分别与所述目标向量进行差异值计算,得到相应的各个第一差异值;将各个所述第一差异值中的最小值作为第一最小差异值,若所述第一最小差异值小于初始差异值,则对所述预设步长按照预设比例进行衰减,得到新的第一步长,所述初始差异值是由所述原始向量、所述预设变换矩阵以及所述目标向量得到的;将所述第一最小差异值对应的第一变换矩阵作为第一目标变换矩阵;若所述新的第一步长小于或等于预设步长极限值,则确定所述第一目标变换矩阵为所述目标矩阵。

在一种可能的设计中,所述装置还包括:第一处理模块;第一处理模块,用于在所述新的第一步长大于所述预设步长极限值时,将所述第一目标变换矩阵作为当前待调整的变换矩阵;将所述第一最小差异值对应的第一向量作为所述原始向量;将所述第一最小差异值作为初始差异值;根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵;继续执行所述根据所述原始向量、各个所述第一变换矩阵以及所述目标向量,确定目标矩阵的操作。

在一种可能的设计中,所述目标矩阵确定模块,还具体用于:针对每个所述第一向量,将所述第一向量中的每项和所述目标向量中相对应位置的每项分别进行差值计算;确定计算得到的各个差值的绝对值之和;将所述绝对值之和作为所述第一差异值。

在一种可能的设计中,所述染色模块,具体用于:根据所述目标矩阵,生成变换参数;根据所述变换参数,将所述游戏角色当前颜色切换为目标颜色,所述目标颜色为对游戏角色当前颜色染色后的颜色。

在一种可能的设计中,所述装置还包括:第二处理模块;第二处理模块,用于在所述第一最小差异值大于或等于初始差异值时,对所述预设步长按照预设比例进行衰减,得到新的第二步长;若所述新的第二步长小于或等于预设步长极限值,则将所述预设变换矩阵作为目标矩阵;若所述新的第二步长大于预设步长极限值,则将所述新的第二步长作为所述新的第一步长;继续执行所述根据所述新的第一步长,分别对所述第一目标变换矩阵中的各个元素进行调整,得到相应的各个第二变换矩阵,且将所述第二变换矩阵作为所述第一变换矩阵的操作。

为了实现所述游戏角色染色方法,本实施例提供了一种游戏角色染色设备。图5为本申请实施例提供的游戏角色染色设备的结构示意图。如图5所示,本实施例的游戏角色染色设备50包括:处理器501以及存储器502;其中,存储器502,用于存储计算机执行指令;处理器501,用于执行存储器存储的计算机执行指令,以实现上述实施例中所执行的各个步骤。具体可以上述方法实施例中的相关描述。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上述的游戏角色染色方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。应理解,上述处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。总线可以是工业标准体系结构(industrystandardarchitecture,isa)总线、外部设备互连(peripheralcomponent,pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(applicationspecificintegratedcircuits,简称:asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1