虚拟角色模型的边缘处理方法和装置与流程

文档序号:20569111发布日期:2020-04-29 00:39阅读:360来源:国知局
虚拟角色模型的边缘处理方法和装置与流程

本申请涉及计算机图形处理领域,具体而言,涉及一种虚拟角色模型的边缘处理方法和装置。



背景技术:

对虚拟角色模型进行描边处理后,模型周围会有一层勾边,这层勾边会使模型更加立体突出且生动逼真。所以,大部分游戏场景中都有针对虚拟角色模型进行描边的功能,以提高用户体验。

相关技术中,虚拟角色模型的边缘处理方法通常需要绘制两遍模型,一种为法线放大算法,即在第一遍绘制的时候沿法向方向放大模型,并用描边色渲染,第二遍正常渲染模型;另一种为模板测试法,即第一遍绘制原模型并写入模板值,第二遍绘制的时候将模型按法向方向扩大,再以描边色来渲染,这样写入模板值的原模型部分不能通过模板测试,能通过的部分即为模型的边缘,从而也可以实现描边的效果。

虽然上述方法可以对虚拟角色模型进行描边,但是在场景中有很多模型都需要描边的情况下,绘制消耗是非常大的,因为每个模型都被多画了一遍,整个模型的绘制消耗为描边前的两倍。在游戏本身消耗计算机资源比较大的情况下,额外的模型绘制消耗无疑会影响游戏的响应速度,进而影响用户体验。

针对相关技术中虚拟角色模型的描边处理需要绘制两遍模型,导致模型的绘制消耗加倍的技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种虚拟角色模型的边缘处理方法和装置,以至少解决相关技术中虚拟角色模型的描边处理需要绘制两遍模型,导致模型的绘制消耗加倍的技术问题。

根据本发明实施例的一个方面,提供了一种虚拟角色模型的边缘处理方法,包括:将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;对边缘像素进行描边处理。

可选地,在将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中之前,上述方法还包括:向虚拟角色模型的阿尔法通道写入第一透明度值。

可选地,在向虚拟角色模型的阿尔法通道写入第一透明度值之前,上述方法还包括:生成第一透明度值,其中,第一透明度值为预设区间内的随机数。

可选地,基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素,包括:确定候选边缘像素对应的像素集,其中,像素集至少包括候选边缘像素的前、后、左、右四个像素;比较候选边缘像素与像素集中像素的透明度值,以判断候选边缘像素是否为目标边缘像素;遍历目标纹理中的所有候选边缘像素,从而确定出虚拟角色模型的所有目标边缘像素。

可选地,如果像素集中任意一个像素与候选边缘像素的透明度值不同,确定候选边缘像素为目标边缘像素。

可选地,在对边缘像素进行描边处理之后,上述方法还包括:将第二部分游戏资源模型渲染至目标纹理中,其中,第二部分游戏资源模型的第三透明度值小于第二透明度值。

可选地,在对边缘像素进行描边处理之后,上述方法还包括:将组件模型渲染至目标纹理中。

根据本发明实施例的另一方面,还提供了一种虚拟角色模型的边缘处理装置,包括:第一渲染模块,用于将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;确定模块,用于基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;描边模块,用于对边缘像素进行描边处理。

根据本发明实施例的另一方面,还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行上述任意一种虚拟角色模型的边缘处理方法。

根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器和存储器;其中,存储器存储有计算机程序,计算机程序适于由处理器加载并执行上述任意一种虚拟角色模型的边缘处理方法。

在本发明实施例中,采用以下步骤:将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;对边缘像素进行描边处理。与相关技术相比,本申请通过设置虚拟角色模型的第一透明度,使之区分于第一部分游戏资源模型的第二透明度,进而通过比较目标纹理中像素的透明度值差异确定出虚拟角色模型的边缘,解决了相关技术中虚拟角色模型的描边处理需要绘制两遍模型,导致模型的绘制消耗加倍的技术问题,达到了绘制一遍虚拟角色模型即可对模型进行描边的目的,节省了模型的绘制消耗。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本发明实施例1的一种可选的虚拟角色模型的边缘处理方法的流程图;

图2是根据本发明实施例1的一种可选的虚拟角色模型的边缘处理方法的完整流程图;

图3是根据本发明实施例1的一种可选的虚拟角色模型的边缘处理效果图;以及

图4是根据本发明实施例2的一种可选的虚拟角色模型的边缘处理装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的各实施例及实施例中的特征可以相互组合。为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

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

实施例1

本实施例提供了一种虚拟角色模型的边缘处理方法。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的虚拟角色模型的边缘处理方法的流程图,如图1所示,该方法包括如下步骤:

步骤s102,将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值。

一种可选方案中,上述虚拟角色模型可以为游戏场景中的角色,例如英雄人物、小兵、精灵、动物等;也可以为虚拟现实场景或工业设计场景中需要重点突出的角色模型,例如汽车、桥梁等,在此不做限定;上述第一部分游戏资源模型可以为非透明的背景;上述目标纹理可以为一张2d图片。

以游戏场景为例,如果虚拟角色模型为三维游戏场景中的人物角色,相应地上述第一部分游戏资源模型可以为背景,如地面、石头、树木等。

需要说明的是,虚拟角色模型与第一部分游戏资源模型相比,区别在于虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值。尽管两者的透明度值不一样,由于本申请的方案并未对虚拟角色模型和第一部分游戏资源模型做透明度混合,所以虚拟角色模型和第一部分游戏资源模型均为非透明模型。

上述方案中,将所有非透明的模型,包括虚拟角色模型和第一部分游戏资源模型加入到特定的渲染内容中,例如代码中的数据结构进行绘制,然后将其渲染到一张目标纹理中。由于虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值,所以通过透明度值可以很好地区分虚拟角色模型和第一部分游戏资源模型。

步骤s104,基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素。

一种可选方案中,上述边缘像素可以组成虚拟角色模型的边缘;另外,可以通过比较目标纹理中每一个像素的透明度值与其周围像素的透明度值的差异的方式来确定上述边缘像素。

由于虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值,对于目标纹理中经过渲染的虚拟角色模型和第一部分游戏资源模型,基于两者之间像素的透明度值差异,即可确定出虚拟角色模型在目标纹理中的边缘像素。

步骤s106,对边缘像素进行描边处理。

一种可选方案中,上述描边处理可以为对每一个确定出的边缘像素写入描边色,从而突出虚拟角色模型的边缘,使之立体丰富。

在一个可选的实施例中,游戏场景中的虚拟角色模型包括英雄人物,第一部分资源模型包括石头和树木,且英雄人物、石头和树木均为非透明模型。为了突出英雄人物的立体感,需要对英雄人物进行描边处理,所以如何确定英雄人物的轮廓边缘是关键。采用本申请实施例的方法,首先将英雄人物、石头和树木渲染至一张2d的纹理中,其中,石头和树木的透明度值为1,而英雄人物的透明度值小于1。然后采样纹理中每一个像素的透明度值。由于英雄人物和石头、树木的透明度值不一样,如果某一像素与其周围像素的透明度值不一样,即可判断出该像素为边缘像素。最后向该边缘像素写入描边色,达到了绘制一遍模型就能确定出模型边缘的目的,节省了绘制消耗。

基于本申请上述实施例提供的方案,将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;对边缘像素进行描边处理。与相关技术相比,本申请通过设置虚拟角色模型的第一透明度,使之区分于第一部分游戏资源模型的第二透明度,进而通过比较目标纹理中像素的透明度值差异确定出虚拟角色模型的边缘,解决了相关技术中虚拟角色模型的描边处理需要绘制两遍模型,导致模型的绘制消耗加倍的技术问题,达到了绘制一遍虚拟角色模型即可对模型进行描边的目的,节省了模型的绘制消耗。

下面对该实施例的上述步骤进行进一步地说明。

可选地,在执行步骤s102将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中之前,上述方法还可以包括:

步骤s101,向虚拟角色模型的阿尔法通道写入第一透明度值。

所谓阿尔法通道(αchannel或alphachannel),是指一张图片的透明度。

例如,一个使用32个比特存储的位图,每8个比特表示红绿蓝和阿尔法通道。在这种情况下,阿尔法通道就不光可以表示透明还是不透明,还可以表示256级的半透明度,因为阿尔法通道有8个比特,可以有256种不同的数据表示可能性。

需要说明的是,每一个虚拟角色模型的第一透明度值均不一样,如此,可以将不同的虚拟角色模型区分出来,即使是两个虚拟角色模型交叠的时候也可以识别出每一个虚拟角色模型的边缘。显然,本申请的阿尔法通道可以有8个比特,以便为多个虚拟角色模型设置不同的第一透明度。

可选地,在执行步骤s102向虚拟角色模型的阿尔法通道写入第一透明度值之前,上述方法还可以包括:

步骤s100,生成第一透明度值,其中,第一透明度值为预设区间内的随机数。

一种可选方案中,上述第一透明度值可以通过随机函数生成,例如基于时间随机的随机函数;上述预设区间可以为开区间(0,1)。

为了确保写入每一个虚拟角色模型阿尔法通道的第一透明度值不同,可以使用基于时间随机的随机函数生成第一透明度值。

由于透明模型的阿尔法通道值为0,非透明模型的阿尔法通道值为1,为了便于区分,写入虚拟角色模型阿尔法通道的第一透明度值设置在开区间(0,1)。

在一个可选的实施例中,步骤s102基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素,具体可以包括如下步骤:

步骤s1021,确定候选边缘像素对应的像素集,其中,像素集至少包括候选边缘像素的前、后、左、右四个像素。

一种可选方案中,上述候选边缘像素可以为目标纹理中的任何一个像素。

每比较一个候选边缘像素,对应的像素集便跟着改变。该像素集至少包括候选边缘像素的前、后、左、右四个像素,当然也可以包括以候选边缘像素的西北、东北、西南和东南四个像素。

步骤s1022,比较候选边缘像素与像素集中像素的透明度值,以判断候选边缘像素是否为目标边缘像素。

由于同一个虚拟角色模型中像素的透明度值是相同的,该虚拟角色模型以外的像素透明度值与其不同,并且非描边模型的阿尔法通道值为1,所以通过比较候选边缘像素与像素集中像素的透明度值差异,就可以判断候选边缘像素是否为目标边缘像素。

步骤s1023,遍历目标纹理中的所有候选边缘像素,从而确定出虚拟角色模型的所有目标边缘像素。

一种可选方案中,上述目标边缘像素可以为组成虚拟角色模型边缘的像素。

对于目标纹理来说,每一个像素都是候选边缘像素,通过遍历目标纹理中的所有像素,可以确定出虚拟角色模型在目标纹理中的所有目标边缘像素,所有目标边缘像素构成了该虚拟角色模型的边缘。

容易注意到,上述方法在需要描边的虚拟角色模型正常绘制的时候,对其进行透明度值的写入,但不进行透明度混合操作,从而使模型只绘制一遍,就能选取出目标边缘像素,实现描边的效果。

本发明实施例的方法不需要再对模型进行法向放大,而是利用模型的阿尔法通道来存储信息,使模型在绘制一遍的情况下能根据阿尔法通道值来对模型和周围场景进行区分,选取边缘并进行描边色填充,然后将最终的渲染结果绘制到屏幕上。这种方法只需要向阿尔法通道写入一个预设区间内的随机值,即可得到和法向放大算法一样的描边效果。

可选地,如果像素集中任意一个像素与候选边缘像素的透明度值不同,确定候选边缘像素为目标边缘像素。

如前所述,同一个虚拟角色模型中像素的透明度值是相同的,该虚拟角色模型以外的像素透明度值与其不同,并且非描边模型的阿尔法通道值为1,所以如果像素集中任意一个像素与候选边缘像素的透明度值不同,该候选边缘像素便为虚拟角色模型的目标边缘像素。

可选地,在执行步骤s106对边缘像素进行描边处理之后,上述方法还可以包括:

步骤s1061,将第二部分游戏资源模型渲染至目标纹理中,其中,第二部分游戏资源模型的第三透明度值小于第二透明度值。

一种可选方案中,上述第二部分游戏资源模型可以包括游戏场景中半透明的物体,即原本透明度介于0-1之间的模型,例如流水、特效等这些看起来透明的模型。

可选地,在执行步骤s106对边缘像素进行描边处理之后,上述方法还可以包括:

步骤s1062,将组件模型渲染至目标纹理中。

一种可选方案中,上述组件模型可以包括按钮、头顶的血条等组件。

在对虚拟角色模型的边缘像素进行描边处理之后,就可以继续将第二部分游戏资源模型和/或组件模型渲染至目标纹理中,使整个画面帧丰富而完整。

图2示出了一种可选的虚拟角色模型的边缘处理方法的完整流程图。如图2所示,首先给需要描边的虚拟角色模型的阿尔法通道传入随机值,然后将虚拟角色模型和第一部游戏资源模型加入到特定的渲染内容中进行渲染,渲染至目标纹理中。通过比较目标纹理中每一个像素与其周围像素的透明度值差异,确定出虚拟角色模型的边缘像素,写入描边色,实现角色描边的目的。最后继续渲染剩余的第二部分游戏资源模型和组件模型。

图3示出了采用本发明实施例的方法对虚拟角色模型进行边缘处理效果图。由图3可以看出,虚拟角色模型的边缘被很好的进行了着色,使之与背景区分开来,增强了虚拟角色模型的立体感和逼真度,达到了和法线放大算法一样的描边效果,节省了绘制消耗。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本申请实施例,提供了一种虚拟角色模型的边缘处理装置,需要说明的是,本申请实施例的一种虚拟角色模型的边缘处理装置可以用于执行本申请实施例所提供的虚拟角色模型的边缘处理方法。以下对本申请实施例提供的一种虚拟角色模型的边缘处理装置进行介绍。

图4是根据本申请实施例的虚拟角色模型的边缘处理装置示意图。如图4所示,该装置400包括第一渲染模块402、确定模块404和描边模块406。

其中,第一渲染模块402,用于将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;确定模块404,用于基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;描边模块406,用于对边缘像素进行描边处理。

可选地,上述装置还可以包括:写入模块,用于在将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中之前,向虚拟角色模型的阿尔法通道写入第一透明度值。

可选地,上述装置还可以包括:生成模块,用于在向虚拟角色模型的阿尔法通道写入第一透明度值之前,生成第一透明度值,其中,第一透明度值为预设区间内的随机数。

可选地,确定模块包括:确定子模块,用于确定候选边缘像素对应的像素集,其中,像素集至少包括候选边缘像素的前、后、左、右四个像素;比较模块,用于比较候选边缘像素与像素集中像素的透明度值,以判断候选边缘像素是否为目标边缘像素;遍历模块,用于遍历目标纹理中的所有候选边缘像素,从而确定出虚拟角色模型的所有目标边缘像素。

可选地,如果像素集中任意一个像素与候选边缘像素的透明度值不同,确定候选边缘像素为目标边缘像素。

可选地,上述装置还可以包括:第二渲染模块,用于在对边缘像素进行描边处理之后,将第二部分游戏资源模型渲染至目标纹理中,其中,第二部分游戏资源模型的第三透明度值小于第二透明度值。

可选地,上述装置还可以包括:第三渲染模块,用于在对边缘像素进行描边处理之后,将组件模型渲染至目标纹理中。

需要说明的是,上述第一渲染模块402、确定模块404和描边模块406对应于实施例1中的步骤s102至步骤s106,该三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。

实施例3

根据本发明实施例,提供了一种计算机存储介质,计算机存储介质存储有多条指令,这些指令适于由处理器加载并执行实施例1中的虚拟角色模型的边缘处理方法。

实施例4

根据本发明实施例,提供了一种电子设备,包括处理器和存储器;其中,存储器存储有计算机程序,计算机程序适于由处理器加载并执行下述步骤:将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中,其中,虚拟角色模型的第一透明度值小于第一部分游戏资源模型的第二透明度值;基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素;对边缘像素进行描边处理。

可选地,处理器还可以加载并执行下述步骤:在将虚拟角色模型和第一部分游戏资源模型渲染至目标纹理中之前,向虚拟角色模型的阿尔法通道写入第一透明度值。

可选地,处理器还可以加载并执行下述步骤:在向虚拟角色模型的阿尔法通道写入第一透明度值之前,生成第一透明度值,其中,第一透明度值为预设区间内的随机数。

可选地,处理器还可以加载并执行下述步骤:基于虚拟角色模型与第一部分游戏资源模型之间像素的透明度值差异,确定虚拟角色模型在目标纹理中的边缘像素,包括:确定候选边缘像素对应的像素集,其中,像素集至少包括候选边缘像素的前、后、左、右四个像素;比较候选边缘像素与像素集中像素的透明度值,以判断候选边缘像素是否为目标边缘像素;遍历目标纹理中的所有候选边缘像素,从而确定出虚拟角色模型的所有目标边缘像素。

可选地,处理器还可以加载并执行下述步骤:如果像素集中任意一个像素与候选边缘像素的透明度值不同,确定候选边缘像素为目标边缘像素。

可选地,处理器还可以加载并执行下述步骤:在对边缘像素进行描边处理之后,将第二部分游戏资源模型渲染至目标纹理中,其中,第二部分游戏资源模型的第三透明度值小于第二透明度值。

可选地,处理器还可以加载并执行下述步骤:在对边缘像素进行描边处理之后,将组件模型渲染至目标纹理中。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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