游戏角色渲染方法、装置及设备

文档序号:1880852 发布日期:2021-11-26 浏览:44次 >En<

阅读说明:本技术 游戏角色渲染方法、装置及设备 (Game role rendering method, device and equipment ) 是由 华树程 于 2021-08-13 设计创作,主要内容包括:本申请公开了一种游戏角色渲染方法、装置及设备,涉及3D渲染技术领域,整个渲染过程以预设阈值将统一材质的两个部分分成两个渲染命令来执行,使得头发渲染时不透明和半透明之间的渲染队列不会存在渲染断层问题,便于美术制作和参数调节操作。其中方法包括:获取游戏角色中的半透明材质,所述半透明材质属于游戏角色中不同部位的材质;若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪;针对不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分形成针对半透明材质的渲染队列;以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染。(The application discloses a game role rendering method, a game role rendering device and game role rendering equipment, and relates to the technical field of 3D rendering, wherein two parts made of uniform materials are divided into two rendering commands to be executed in the whole rendering process through a preset threshold value, so that the problem of rendering faults of rendering queues between opaque and semi-transparent parts can be avoided during hair rendering, and the art manufacturing and parameter adjusting operation are facilitated. The method comprises the following steps: obtaining semitransparent materials in game roles, wherein the semitransparent materials belong to materials of different parts in the game roles; if the semitransparent material belongs to the hair material of the hair part in the game role, cutting the hair material by using a preset threshold value; for the hair material part with the opacity larger than the preset threshold value, writing depth, and combining the rest hair material parts to form a rendering queue for semitransparent materials; and with the preset threshold value as a separation, performing rendering on the hair materials in the rendering queue aiming at the semitransparent materials in a grading manner.)

游戏角色渲染方法、装置及设备

技术领域

本申请涉及3D渲染技术领域,尤其是涉及到一种游戏角色渲染方法、装置及设备。

背景技术

随着游戏行业的兴起,为了适应玩家需求,游戏的内容日渐丰富,种类日趋繁多,游戏的情节也越来越复杂,图像也越来越逼真。游戏中包含了游戏场景和游戏角色,通过计算机软件的渲染功能来实现游戏场景、游戏角色的可视化。

相关技术中,游戏角色的渲染功能涉及到针对游戏角色不同部位的渲染,包括布料渲染、头发渲染以及皮肤渲染。真实世界的毛发主要由纤维构造,也可分为多层结构,有中心的发髓、内部的皮脂和表皮的角质层构成,其中角质层放大后,可见坑坑洼洼的微表面,是构造高光和反射的介质,此外光线照射毛皮表面还会发生透射和次反射,毛发微表面的坑洼具有较统一的指向性,由根部指向根尾。考虑到真实世界毛发构成及特性,具体在针对头发渲染过程中,虚幻引擎默认使用基于物理的毛发着色模型,该毛发着色模型是一个基于头发发射属性测量而得到的模型,能够考虑头发生长方向对高光的影响。通常头发渲染过程毛发着色模型会形成两个子网格,一个子网格用作掩模渲染,另一个子网格用作半透明渲染,然而,不透明和半透明之间的渲染队列会存在细微的渲染效果差别,使得真实阴影光照以及基于图像的光照等渲染结果在两个渲染队列计算模式上有些许不同,容易造成头发渲染时不透明和半透明之间的渲染队列存在渲染断层问题,同时分成两个头发材质渲染不便于美术制作和参数调节操作,影响游戏角色的渲染效果。

发明内容

有鉴于此,本申请提供了一种游戏角色渲染方法、装置及设备,主要目的在于解决现有技术中分成两个头发材质渲染不便于美术制作和参数调节操作,影响游戏角色的渲染效果的问题。

根据本申请的第一个方面,提供了一种游戏角色渲染方法,包括:

获取游戏角色中的半透明材质,所述半透明材质属于游戏角色中不同部位的材质;

若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪;

将不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列;

以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染。

进一步地,在所述获取游戏角色中的半透明材质之前,所述方法还包括:

响应于制作头发材质球的触发指令,开启针对半透明材质的深度写入;

针对电脑端,在加入针对半透明材质的渲染队列的同时,更改半透明材质通道以及外部自定义通道之间顺序;

针对移动端,在加入针对半透明材质的渲染队列的同时,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至片内显存,所述预设渲染通道在开始渲染通道和结束渲染通道中。

进一步地,在所述针对移动端,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至显存之后,所述方法还包括:

响应于切换至预设渲染通道的指令,将所述深度纹理信息从显存中更改至片外显存,并利用所述片外显存执行深度纹理信息的回读操作。

进一步地,所述以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染,具体包括:

以所述预设阈值作为分隔,将所述针对半透明材质的渲染队列中头发材质划分为不透明度大于所述预设阈值的头发材质部分和剩余头发材质部分;

优先对所述不透明度大于所述预设阈值的头发材质部分进行标准渲染,再对所述剩余头发材质部分进行深景渲染。

进一步地,所述方法还包括:

获取头发材质中涉及到投射阴影的半透明材质部分,当接收到半透明投射阴影的指令时,将所述半透明材质部分作为实体来进行阴影投射。

进一步地,在所述获取游戏角色中的半透明材质之后,所述方法还包括:

若所述半透明材质属于游戏角色中布料部位的布料材质,增加具有控制渲染顺序的着色模型;

利用所述着色模型更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染,所述布料材质对应顶点部分的网格数据构成一个子网格。

进一步地,所述利用所述着色模型更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染,具体包括:

利用所述着色模型确定布料材质创建顺序所形成的材质标识码;

通过对所述材质标识码进行排序,更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染。

进一步地,在所述获取游戏角色中的半透明材质之后,所述方法还包括:

若所述半透明材质属于游戏角色中皮肤部位的次表面散射材质,对所述次表面散射材质强度的贴图进行弱化处理,以减小所述次表面散射材质对应的次表面散射效果;

利用弱化处理后的贴图对所述次表面散射材质进行渲染。

根据本申请的第二个方面,提供了一种游戏角色渲染装置,包括:

获取单元,用于获取游戏角色中的半透明材质,所述半透明材质属于游戏角色中不同部位的材质;

裁剪单元,用于若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪;

写入单元,用于将不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列;

第一渲染单元,用于以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染。

进一步地,所述装置还包括:

开启单元,用于在所述获取游戏角色中的半透明材质之前,响应于制作头发材质球的触发指令,开启针对半透明材质的深度写入;

更改单元,用于针对电脑端,在加入针对半透明材质的渲染队列的同时,更改半透明材质通道以及外部自定义通道之间顺序;

生成单元,用于针对移动端,在加入针对半透明材质的渲染队列的同时,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至片内显存,所述预设渲染通道在开始渲染通道和结束渲染通道中。

进一步地,所述装置还包括:

执行单元,用于在所述针对移动端,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至显存之后,响应于切换至预设渲染通道的指令,将所述深度纹理信息从显存中更改至片外显存,并利用所述片外显存执行深度纹理信息的回读操作。

进一步地,所述第一渲染单元包括:

划分模块,用于以所述预设阈值作为分隔,将所述针对半透明材质的渲染队列中头发材质划分为不透明度大于所述预设阈值的头发材质部分和剩余头发材质部分;

渲染模块,用于优先对所述不透明度大于所述预设阈值的头发材质部分进行标准渲染,再对所述剩余头发材质部分进行深景渲染。

进一步地,所述装置还包括:

投射单元,用于获取头发材质中涉及到投射阴影的半透明材质部分,当接收到半透明投射阴影的指令时,将所述半透明材质部分作为实体来进行阴影投射。

进一步地,所述装置还包括:

增加单元,用于在所述获取游戏角色中的半透明材质之后,若所述半透明材质属于游戏角色中布料部位的布料材质,增加具有控制渲染顺序的着色模型;

第二渲染单元,用于利用所述着色模型更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染,所述布料材质对应顶点部分的网格数据构成一个子网格。

进一步地,所述第二渲染单元包括:

确定模块,用于利用所述着色模型确定布料材质创建顺序所形成的材质标识码;

排序模块,用于通过对所述材质标识码进行排序,更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染。

进一步地,所述装置还包括:

处理单元,用于在所述获取游戏角色中的半透明材质之后,若所述半透明材质属于游戏角色中皮肤部位的次表面散射材质,对所述次表面散射材质强度的贴图进行弱化处理,以减小所述次表面散射材质对应的次表面散射效果;

第三渲染单元,用于利用弱化处理后的贴图对所述次表面散射材质进行渲染。

根据本申请的第三个方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。

根据本申请的第四个方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。

借由上述技术方案,本申请提供的一种游戏角色渲染方法、装置及设备,与目前现有针对半透明材质在移动端中使用毛发着色模型进行头发渲染受到限制相比,本申请通过获取游戏角色中的半透明材质,若半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对头发材质进行裁剪,进一步将不透明度大于预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列,以预设阈值作为分隔,对半透明材质的渲染队列中的头发材质进行分次渲染,使得在第一遍渲染时,写入深度的发质材质在渲染队列的最前面,在第二遍渲染时主要针对发梢等需要半透明效果的头发材质进行渲染,整个渲染过程以预设阈值将统一材质的两个部分分成两个渲染命令来执行,该过程并未使用毛发着色模型形成的两个子网格执行渲染任务,而是将不同材质的半透明材质合并后进行分次渲染,省去了掩模渲染的过程,也无需统一半透明材质的参数,使得半透明材质能够在移动端中使用毛发着色模型进行头发渲染时,不会存在不透明和半透明之间渲染队列的渲染断层问题,无需对虚幻引擎进行扩展,便于美术制作和参数调节操作,保证头发渲染过程中材质统一,并且都是在半透渲染队列中进行处理,提高游戏角色的渲染效果。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的

具体实施方式

附图说明

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

图1示出了本申请实施例提供的一种游戏角色渲染方法的流程示意图;

图2示出了本申请实施例提供的另一种游戏角色渲染方法的流程示意图;

图3示出了本申请实施例提供的一种游戏角色渲染装置的结构示意图;

图4示出了本申请实施例提供的另一种游戏角色渲染装置的结构示意图;

图5示出了本发明实施例提供的一种计算机设备的装置结构示意图。

具体实施方式

现在将参照若干示例性实施例来论述本发明的内容。应当理解,论述了这些实施例仅是为了使得本领域普通技术人员能够更好地理解且因此实现本发明的内容,而不是暗示对本发明的范围的任何限制。

如本文中所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实施例”和“一种实施例”要被解读为“至少一个实施例”。术语“另一个实施例”要被解读为“至少一个其他实施例”。

在游戏角色渲染场景中,涉及到游戏角色不同部位的渲染,例如,头发部位、布料部位以及皮肤部位。针对头发部位,虚幻引擎中默认使用头发着色模型进行渲染,头发着色模型相比经验模型具有更好的渲染效果,但是虚幻引引擎只在电脑端的不透明材质中实现渲染功能,如果想要在半透明材质中使用头发着色模型,需要对引擎进行扩展,而在移动端实现半透明材质中使用头发着色模型需要简化着色算法,以使得用作间接光的漫反射只是计算了散射项,而用作直接光的头发着色模型没有投射项。通常头发渲染过程毛发着色模型会形成两个子网格,一个子网格用作掩模渲染,另一个子网格用作半透明渲染,然而,不透明和半透明之间的渲染队列会存在细微的渲染效果差别,使得真实阴影光照以及基于图像的光照等渲染结果在两个渲染队列计算模式上有些许不同,容易造成头发渲染时不透明和半透明之间的渲染队列存在渲染断层问题,同时分成两个头发材质渲染不便于美术制作和参数调节操作,影响游戏角色的渲染效果。

为了解决该问题,本实施例提供了一种游戏角色渲染方法,如图1所示,该方法应用于游戏角色渲染工具的客户端,包括如下步骤:

101、获取游戏角色中的半透明材质。

游戏角色渲染是游戏制作过程中的一个重要环节,具体涉及到游戏角色不同部位的渲染,例如,头发部位、布料部位、皮肤部位、指甲部位等,这里半透明材质可以属于游戏角色中不同部位的材质。

102、若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪。

由于头发材质会存在两个不同的材质,此时针对半透明材质的渲染,一个材质是在不透明渲染队列中渲染,另一个才是是在半透明渲染队列中渲染,而半透明渲染队列中渲染的最大问题是没有自遮挡,容易造成渲染乱序,所以需要在渲染之前将头发材质进行裁剪,以优化头发材质的渲染流程。

其中,预设阈值为制作头发材质球时自定义设置的数值,目的是将头发材质基于透明程度划分为两部分,针对半透明效果较弱的头发材质部分需要加入深度后在最前边渲染,针对半透明效果较强的头发材质部分需要正常渲染,两次渲染都是在半透明渲染队列中进行处理,保证渲染效果是统一的。

对于本实施例的执行主体可以为游戏角色渲染装置或设备,可以配置在游戏角色渲染工具的客户端,游戏角色模型在建立好后,需要针对游戏角色模型上不同部位进行渲染,由于游戏角色中头发部位的头发材质涉及两种材质,这里针对头发材质的半透明渲染并未使用两个子网格进行渲染,而是使用单一半透明材质,扩展引擎,以将头发材质根据预设阈值分为两次渲染,两次渲染均在半透明渲染队列中进行,保证渲染的效果完全一致。

103、将不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列。

可以理解的是,不透明度能够表征头发材质的透明程度,通过调整不透明度的值可以改变头发的不透明度,也就是说,降低不透明度可以增加头发的透明度,有时可以让头发显得更加柔顺,但容易增加渲染时间,这里不透明度大于预设阈值的头发材质部分对应的头发透明度较低,剩余头发材质部分对应的头发透明度较高。

具体在针对头发材质渲染过程中,当头发材质中既有不透明部分,又有半透明部分时,头发材质的渲染时会优先渲染不透明部分,然后在渲染半透明部分,在进行不透明部分渲染时,需要开启深度缓冲区,进行深度写入操作,以保证头发材质中的不透明部分间有正常的深度关系。也就是说,针对头发透明度较低的头发材质部分需要写入深度,这样才能保证透明度较低的头发材质部分优先被渲染。

104、以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染。

对于存储深度信息的头发材质部分,相当于渲染队列中不透明部分,每个像素都会存储一个深度值,这样屏幕上每个显示的像素点都会进行深度排序,在渲染过程根据深度信息进行渲染,以保证渲染的遮挡关系正确。而对于未存储深度新的头发材质部分,相当于渲染队列中的透明部分,不会写入深度信息,通常采用从后向前的方法进行渲染,以保证头发着色过程中半透明渲染正确。

具体在对针对半透明材质的渲染队列中的头发材质进行分次渲染的应用场景中,两次渲染过程可以包括标准渲染和景深渲染,第一次渲染过程是在StandarTranslucenyPass内渲染,渲染顺序存储有深度信息的材质部分保持在渲染队列的最前面,第二次渲染过程是在TranslucencyAfterDOF内渲染,渲染顺序保持正常。

本申请实施例提供的游戏角色渲染方法,与目前现有针对半透明材质在移动端中使用毛发着色模型进行头发渲染受到限制相比,本申请通过获取游戏角色中的半透明材质,若半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对头发材质进行裁剪,进一步将不透明度大于预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列,以预设阈值作为分隔,对半透明材质的渲染队列中的头发材质进行分次渲染,使得在第一遍渲染时,写入深度的发质材质在渲染队列的最前面,在第二遍渲染时主要针对发梢等需要半透明效果的头发材质进行渲染,整个渲染过程以预设阈值将统一材质的两个部分分成两个渲染命令来执行,该过程并未使用毛发着色模型形成的两个子网格执行渲染任务,而是将不同材质的半透明材质合并后进行分次渲染,省去了掩模渲染的过程,也无需统一半透明材质的参数,使得半透明材质能够在移动端中使用毛发着色模型进行头发渲染时,不会存在不透明和半透明之间渲染队列的渲染断层问题,无需对虚幻引擎进行扩展,便于美术制作和参数调节操作,保证头发渲染过程中材质统一,并且都是在半透渲染队列中进行处理,提高游戏角色的渲染效果。

进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,本实施例提供了另一种游戏角色渲染方法,如图2所示,该方法包括:

201、响应于制作头发材质球的触发指令,开启针对半透明材质的深度写入。

通常情况下,渲染状态决定了不透明物体全部先于半透明物体渲染,并存入深度,然后在实例中着色中第一个通道开启深度写入,写入深度值,也就是说,由于半透明物体的片元渲染并将深度写入缓存会导致其后面的同一屏幕坐标但深度值更大的片元通过不了深度测试而渲染失败,而这个片元本身是需要渲染的,半透明物体在渲染过程中需要关闭深度写入。而本申请实施例半透明材质的渲染流程之前,开启针对半透明材质的深度写入,并针对半透明材质的渲染流程进行优化。

202、针对电脑端,在加入针对半透明材质的渲染队列的同时,更改半透明材质通道以及外部自定义通道之间顺序。

虚幻引擎可以在电脑端中针对不透明材质实现头发渲染,但是如果想要针对半透明材质实现头发渲染,需要对虚拟引擎进行扩展。为了实现在电脑端针对半透明材质的渲染流程,这里可以通过加入针对半透明材质的渲染队列,该渲染队列能够自定义渲染顺序,并且为了保证渲染结果同意,需要更改半透明材质通道以及外部自定义通道之间的顺序。

具体地,可以在PC端加入PreTransluncentDepth的MeshPass,并且更改官方的半透明Pass,OutVelocityPass的顺序。

203、针对移动端,在加入针对半透明材质的渲染队列的同时,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至片内显存。

虚幻引擎如果想要在移动端针对半透明材质实现头发渲染,需要对虚拟引擎进行扩展,为了实现移动端针对半透明材质的渲染流程,这里可以通过加入针对半透明材质的渲染队列,该渲染队列能够自定义渲染顺序,并放置每帧渲染需要的模型和材质等数据,进而对每帧数据进行渲染。然而,由于毛发着色模型中子网格的存在,默认深度纹理信息并没有回读至显存,而是存储至片内显存上,所以半透明材质的渲染队列没有办法进行深度测试,进一步当针对半透明材质写入深度时,生成预设渲染通道,该预设渲染通道在开始渲染通道和结束渲染通道中,并利用深度保存目录将深度纹理信息存储至片内显存。

204、响应于切换至预设渲染通道的指令,将所述深度纹理信息从显存中更改至片外显存,并利用所述片外显存执行深度纹理信息的回读操作。

在移动端,切换预设渲染通道会导致深度缓存无法使用片内显存,需要将片内显存更改为片外显存,才能够执行深度纹理信息的回读操作。

可以理解的是,预设渲染通道相对独立,并不依赖于其他渲染组件,是在渲染层的基础上进行通道分类的,一个渲染层只能分离所包含物体的一个属性,而渲染通道则可将一个渲染层中的物体进行多个属性分离。也就是说,一个渲染层中可以建立无数个渲染通道,以简单的渲染设置完成大量图层的渲染。

具体地,可以在Mobile端加入MobileTransluncentDepthMeshPass,生成另一个RenderPass,该RenderPass需要在BeginRenderPass和EndRenderPass中,并且KeepDepthContent将DepthTexture保存在显存里。

205、获取游戏角色中的半透明材质。

206、若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪。

具体地,可以根据预设阈值ClipMaskValue进行裁剪,将头发材质划分为不透明度大于预设阈值的头发材质部分以及不透明度不大于预设阈值的剩余头发材质部分,这两个部分涉及到不同透明程度的头发材质,需要在半透明材质渲染过程中使用不同的渲染方式。

207、将不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列。

对于不透明度大于预设阈值的头发材质部分,说明头发材质遮挡度比较高,需要写入深度以保证在渲染过程中优先被渲染,并保持在渲染队列的最前面,对于剩余头发材质部分,说明头发遮挡度比较低,主要为发梢等需要半透明效果较强的头发部分,无需写入深度正常排序进行渲染,从而保证材质统一,并且都在半透明渲染通道中进行处理,提高渲染效果。

208、以所述预设阈值作为分隔,将所述针对半透明材质的渲染队列中头发材质划分为不透明度大于所述预设阈值的头发材质部分和剩余头发材质部分。

209、优先对所述不透明度大于所述预设阈值的头发材质部分进行标准渲染,再对所述剩余头发材质部分进行深景渲染。

在实际应用场景中,首先在PreTranslucencyDepthPass将不透明度大于预设阈值的头发材质部分写入深度,然后在StandardTranslucencyPass中绘制不透明度大于预设阈值的头发材质部分,第一遍渲染时总是保证其在整个渲染队列的最前边渲染,然后在TranslucencyAfterDOF内渲染,第二遍渲染时渲染不透明度小于预设阈值的头发材质部分,从而保证针对半透明材质渲染流程准确,尤其是针对头发渲染过程中。

由于这里在半透明材质的渲染过程写入深度,虚幻引擎还提供了额外的功能,可以将TranslucencyAfterDOF的渲染顺序移动到了DOF之前,不再是独立的RT,这样写入深度的半透明材质可以被DOF、TAA以及MotionBlur等正确影响。

210、获取头发材质中涉及到投射阴影的半透明材质部分,当接收到半透明投射阴影的指令时,将所述半透明材质部分作为实体来进行阴影投射。

可以理解的是,头发材质的渲染涉及到半透明投射阴影的功能,但虚幻引擎中存在半透明投射阴影的漏洞,母材质可以正确的投射半透明阴影,但当材质实例时,确无法正确渲染阴影。

由虚幻引擎没有材质实例中重写GetCastDynamicShadowAsMasked,只需要对其进行相应处理即可解决半透明投射阴影功能存在的问题,虚幻引擎还可加入TranslucentShadowOpacityMaskScale的值方便单独控制投射阴影时的不透明蒙版。具体可以在半透明投射阴影时将半透明当作实体来进行阴影投射,和不透明蒙版投射在投射阴影上没有区别。

进一步地,游戏角色的布料部位使用了自扩展的各项异性着色模型,虚幻引擎中也加入了各向异性着色模型,但由于只有u方向和v方向的高光导致各向异性的复杂和可控制性较差,很难渲染出符合游戏需求的布料材质效果。通常情况下,同一个着色模型不同子网格的渲染顺序依赖于着色模型的创建顺序,可控性较差,但是半透明的渲染指令需要严格按照渲染排序,本申请可以虚幻引擎中加入根据布料材质标识排序的功能,更改着色模型子网格对应布料材质标识即可保证布料材质的渲染效果。

具体在使用布料材质进行渲染的过程中,首先针对游戏角色中布料部位的布料材质,增加具有控制渲染顺序的着色模型,进一步利用着色模型更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对布料材质进行渲染,该布料材质对应顶点部分的网格数据构成一个子网格。在更改子网格渲染顺序时具体可以利用着色模型确定布料材质创建顺序所形成的材质标识码,通过对材质标识码进行排序,更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染。例如,在一种应用场景下正确的子模型渲染顺序需要在3dsMax等软件中将半透明裙子的材质标识更改至半透明碎花之前,进而针对同一模型不同子网络进行简单渲染排序。

进一步地,游戏角色的皮肤部位使用了虚幻引擎的SSS材质,而SSS材质默认都是全精度,全精度的效果虽然更精确,但是因为采样次数不足会有噪点,提高采样次数的方式则会带来性能问题,而HalfRes的SSS不存在早点问题,但当SSS材质与其他材质进行交互时,会因为分辨率的原因导致边缘不精确,使得计算出现错误。本申请可以虚幻引擎中加入针对皮肤材质强度贴图弱化的处理,使其不产生次表面散射的效果。

具体在使用皮肤材质进行渲染的过程中,首先针对游戏角色中皮肤部位的次表面散射材质,对次表面散射材质强度的贴图进行弱化处理,以减小所述次表面散射材质对应的次表面散射效果,然后利用弱化处理后的贴图对次表面散射材质进行渲染,从而保证皮肤渲染效果。例如,对SSSIntensity的贴图进行处理,并将Intensity设置为0,不使用次表面散射的效果。

进一步的,作为图1和图2方法的具体实现,本申请实施例提供了一种游戏角色渲染装置,如图3所示,该装置包括:获取单元31,裁剪单元32、写入单元33、第一渲染单元34。

获取单元31,可以用于获取游戏角色中的半透明材质,所述半透明材质属于游戏角色中不同部位的材质;

裁剪单元32,可以用于若所述半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对所述头发材质进行裁剪;

写入单元33,可以用于将不透明度大于所述预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列;

第一渲染单元34,可以用于以所述预设阈值作为分隔,对所述针对半透明材质的渲染队列中的头发材质进行分次渲染。

本发明实施例提供的游戏角色渲染装置,与目前现有针对半透明材质在移动端中使用毛发着色模型进行头发渲染受到限制相比,本申请通过获取游戏角色中的半透明材质,若半透明材质属于游戏角色中头发部位的头发材质,利用预设阈值对头发材质进行裁剪,进一步将不透明度大于预设阈值的头发材质部分写入深度,结合剩余头发材质部分组成针对半透明材质的渲染队列,以预设阈值作为分隔,对半透明材质的渲染队列中的头发材质进行分次渲染,使得在第一遍渲染时,写入深度的发质材质在渲染队列的最前面,在第二遍渲染时主要针对发梢等需要半透明效果的头发材质进行渲染,整个渲染过程以预设阈值将统一材质的两个部分分成两个渲染命令来执行,该过程并未使用毛发着色模型形成的两个子网格执行渲染任务,而是将不同材质的半透明材质合并后进行分次渲染,省去了掩模渲染的过程,也无需统一半透明材质的参数,使得半透明材质能够在移动端中使用毛发着色模型进行头发渲染时,不会存在不透明和半透明之间渲染队列的渲染断层问题,无需对虚幻引擎进行扩展,便于美术制作和参数调节操作,保证头发渲染过程中材质统一,并且都是在半透渲染队列中进行处理,提高游戏角色的渲染效果。

在具体的应用场景中,如图4所示,所述装置还包括:

开启单元35,可以用于在所述获取游戏角色中的半透明材质之前,响应于制作头发材质球的触发指令,开启针对半透明材质的深度写入;

更改单元36,可以用于针对电脑端,在加入针对半透明材质的渲染队列的同时,更改半透明材质通道以及外部自定义通道之间顺序;

生成单元37,可以用于针对移动端,在加入针对半透明材质的渲染队列的同时,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至片内显存,所述预设渲染通道在开始渲染通道和结束渲染通道中。

在具体的应用场景中,如图4所示,所述装置还包括:

执行单元38,用于在所述针对移动端,当针对半透明材质部分写入深度时,生成预设渲染通道,并利用深度保存目录将深度纹理信息存储至显存之后,响应于切换至预设渲染通道的指令,将所述深度纹理信息从显存中更改至片外显存,并利用所述片外显存执行深度纹理信息的回读操作。

在具体的应用场景中,如图4所示,所述第一渲染单元34包括:

划分模块341,可以用于以所述预设阈值作为分隔,将所述针对半透明材质的渲染队列中头发材质划分为不透明度大于所述预设阈值的头发材质部分和剩余头发材质部分;

渲染模块342,可以用于优先对所述不透明度大于所述预设阈值的头发材质部分进行标准渲染,再对所述剩余头发材质部分进行深景渲染。

在具体的应用场景中,如图4所示,所述装置还包括:

投射单元39,可以用于获取头发材质中涉及到投射阴影的半透明材质部分,当接收到半透明投射阴影的指令时,将所述半透明材质部分作为实体来进行阴影投射。

在具体的应用场景中,所述装置还包括:

增加单元,可以用于在所述获取游戏角色中的半透明材质之后,若所述半透明材质属于游戏角色中布料部位的布料材质,增加具有控制渲染顺序的着色模型;

第二渲染单元,可以用于利用所述着色模型更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染,所述布料材质对应顶点部分的网格数据构成一个子网格。

在具体的应用场景中,如图5所示,所述第二渲染单元包括:

确定模块,可以用于利用所述着色模型确定布料材质创建顺序所形成的材质标识码;

排序模块,可以用于通过对所述材质标识码进行排序,更改针对布料材质所形成网格数据中子网格的渲染顺序,并按照更改后的渲染顺序对所述布料材质进行渲染。

在具体的应用场景中,所述装置还包括:

处理单元,可以用于在所述获取游戏角色中的半透明材质之后,若所述半透明材质属于游戏角色中皮肤部位的次表面散射材质,对所述次表面散射材质强度的贴图进行弱化处理,以减小所述次表面散射材质对应的次表面散射效果;

第三渲染单元,可以用于利用弱化处理后的贴图对所述次表面散射材质进行渲染。

需要说明的是,本实施例提供的一种游戏角色渲染装置所涉及各功能单元的其它相应描述,可以参考图1-图2中的对应描述,在此不再赘述。

基于上述如图1-图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1-图2所示的游戏角色渲染方法。

基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。

基于上述如图1-图2所示的方法,以及图3-图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种游戏角色渲染的实体设备,具体可以为计算机,智能手机,平板电脑,智能手表,服务器,或者网络设备等,该实体设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1-图2所示的游戏角色渲染方法。

可选的,该实体设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等。

在示例性实施例中,参见图5,上述实体设备包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的画作挂载方法。

本领域技术人员可以理解,本实施例提供的一种游戏角色渲染的实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。

存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述店铺搜索信息处理的实体设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,与目前现有方式相比,本申请中整个渲染过程以预设阈值将统一材质的两个部分分成两个渲染命令来执行,该过程并未使用毛发着色模型形成的两个子网格执行渲染任务,而是将不同材质的半透明材质合并后进行分次渲染,省去了掩模渲染的过程,也无需统一半透明材质的参数,使得半透明材质能够在移动端中使用毛发着色模型进行头发渲染,无需对虚幻引擎进行扩展,保证头发渲染过程中材质统一,并且都是在半透渲染队列中进行处理,提高游戏角色的渲染效果。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

18页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:虚拟角色控制方法、装置及电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类