掌桥专利:专业的专利平台
掌桥专利
首页

毛发虚拟模型的渲染方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本申请涉及计算机图像处理技术领域,具体涉及一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质。

背景技术

随着计算机通信技术的不断发展,智能手机、平板电脑及笔记本电脑等终端的大量普及应用,终端向着多样化、个性化的方向发展,日益成为人们在生活与工作中不可或缺的终端,为了满足人们对精神生活的追求,能够在终端上操作的娱乐游戏应运而生,涌现出越来越多的终端游戏。终端游戏已经成为不可缺少生活娱乐方式,为了使用户可以得到更好的游戏体现,很多终端游戏往往都是基于现实人物及场景进行构建,因此,在进行游戏设计时游戏中场景的实现都会希望更接近真实情况。

在实际游戏设计工程中,通常会出现对人物及动物角色进行仿真,例如会对人物及动物角色的毛发进行毛发仿真。在对毛发进行仿真时,为了确保能够毛发能够正常显示,避免出现由于游戏视角变化导致毛发显示错乱的问题,通常会对毛发进行半透明排序渲染以及实现抗锯齿效果,然而,现有技术在实现毛发半透明排序渲染以及实现抗锯齿效果时,会使计算机设备的显存占用急速增加,从而导致毛发渲染的效率低。

发明内容

本申请实施例提供一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质,通过模拟毛发粒子模型,将毛发拆分成毛发粒子后进行渲染,从而降低计算机设备的显存占用,提高毛发渲染的效率;并且,通过对毛发边缘的像素间距进行调整,可以提高毛发渲染时毛发的颜色缓和以及毛发的抗锯齿效果。

本申请实施例提供了一种毛发虚拟模型的渲染方法,包括:

获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;

获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;

基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;

基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

在一些实施例中,在获取所述毛发粒子模型对应的毛发粒子顺序参数之后,还包括:

获取所述毛发粒子模型对应的毛发层粒子数,其中,所述毛发层粒子数用于指示所述毛发粒子模型的每一层毛发层中的毛发粒子数目,所述毛发层基于所述指定参考点对所述毛发粒子模型的模型空间进行分层得到;

基于所述毛发层粒子数和所述毛发粒子顺序确定当前参与渲染的目标毛发粒子。

在一些实施例中,在获取所述毛发粒子模型对应的毛发粒子顺序参数之前,还包括:

基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数;

基于所述相对距离和所述毛发层总数,确定所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数;

基于所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数,确定毛发层粒子数以及毛发粒子顺序参数。

在一些实施例中,所述基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数,包括:

确定所述毛发粒子模型在所述模型空间中与所述指定参考点之间的第一距离值和第二距离值,其中,所述第一距离值为所述毛发粒子模型与所述指定参考点的最近距离,所述第二距离值为所述毛发粒子模型与所述指定参考点的最远距离;

基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数。

在一些实施例中,在基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数之后,还包括:

基于所述第一距离值、所述第二距离值、以及所述毛发粒子对应的目标距离值确定所述毛发粒子所在的毛发层对应的毛发层数,其中,所述目标距离值为所述毛发粒子与所述指定参考点之间的距离值;

根据所述毛发层数生成毛发层标识,并将所述毛发层标识与所述毛发粒子关联;

基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识进行前缀和处理,得到毛发层粒子数。

在一些实施例中,在基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数之后,还包括:

基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识,将所述毛发粒子模型的所有毛发粒子按照与所述指定参考点的距离由近及远排序,生成毛发粒子顺序参数。

在一些实施例中,还包括:

基于所述毛发层粒子数和所述毛发粒子顺序参数对所述毛发粒子模型中所有毛发粒子进行分类处理,得到多个毛发粒子集合,其中,每一个毛发粒子集合中的所有毛发粒子属于同一个毛发层,每一个毛发粒子集合中的所有毛发粒子有序排列在所述毛发粒子集合中;

基于所述多个毛发粒子集合生成毛发粒子排序结果;

根据所述毛发粒子排序结果确定当前参与渲染的目标毛发粒子。

在一些实施例中,所述基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型,包括:

基于所述目标毛发粒子的粒子属性信息获取目标毛发粒子对应的初始毛发宽度;

根据目标毛发粒子与所述指定参考点的距离确定所述初始毛发宽度的宽度调整值;

基于所述宽度调整值对所述初始毛发宽度进行调整,得到调整后毛发宽度;

基于所述调整后毛发宽度确定毛发段渲染区域对应的多个区域渲染顶点;

根据所述多个区域渲染顶点渲染出多个多边形网格;

基于所述多个多边形网格生成毛发虚拟模型。

在一些实施例中,在基于所述多个多边形网格生成毛发虚拟模型之后,还包括:

确定位于所述毛发段渲染区域中的毛发渲染像素;

根据所述毛发粒子的切线确定所述毛发渲染像素与所述切线之间的相对距离,作为像素间距;

根据所述像素间距对所述毛发渲染像素的当前透明度进行调整。

在一些实施例中,所述根据所述像素间距对所述毛发渲染像素的当前透明度进行调整,包括:

基于所述毛发渲染像素的像素宽度、所述像素间距、预设换算比例以及指定常数进行平滑度计算,得到所述毛发渲染像素的透明度调整值;

基于所述透明度调整值对所述毛发渲染像素的当前透明度进行调整,得到调整后的毛发渲染像素。

相应的,本申请实施例还提供了一种毛发虚拟模型的渲染装置,包括:

第一获取单元,用于获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;

第二获取单元,用于获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;

第一确定单元,用于基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;

第二确定单元,用于基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

在一些实施例中,该装置还包括:

第一获取子单元,用于获取所述毛发粒子模型对应的毛发层粒子数,其中,所述毛发层粒子数用于指示所述毛发粒子模型的每一层毛发层中的毛发粒子数目,所述毛发层基于所述指定参考点对所述毛发粒子模型的模型空间进行分层得到;

第一确定子单元,用于基于所述毛发层粒子数和所述毛发粒子顺序确定当前参与渲染的目标毛发粒子。

在一些实施例中,该装置还包括:

第一处理单元,用于基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数;

第二确定子单元,用于基于所述相对距离和所述毛发层总数,确定所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数;

第二确定子单元,还用于基于所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数,确定毛发层粒子数以及毛发粒子顺序参数。

在一些实施例中,该装置还包括:

第三确定子单元,用于确定所述毛发粒子模型在所述模型空间中与所述指定参考点之间的第一距离值和第二距离值,其中,所述第一距离值为所述毛发粒子模型与所述指定参考点的最近距离,所述第二距离值为所述毛发粒子模型与所述指定参考点的最远距离;

第二处理单元,用于基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数。

在一些实施例中,该装置还包括:

第四确定子单元,用于基于所述第一距离值、所述第二距离值、以及所述毛发粒子对应的目标距离值确定所述毛发粒子所在的毛发层对应的毛发层数,其中,所述目标距离值为所述毛发粒子与所述指定参考点之间的距离值;

关联单元,用于根据所述毛发层数生成毛发层标识,并将所述毛发层标识与所述毛发粒子关联;

第三处理单元,用于基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识进行前缀和处理,得到毛发层粒子数。

在一些实施例中,该装置还包括:

第一生成单元,用于基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识,将所述毛发粒子模型的所有毛发粒子按照与所述指定参考点的距离由近及远排序,生成毛发粒子顺序参数。

在一些实施例中,该装置还包括:

第四处理单元,用于基于所述毛发层粒子数和所述毛发粒子顺序参数对所述毛发粒子模型中所有毛发粒子进行分类处理,得到多个毛发粒子集合,其中,每一个毛发粒子集合中的所有毛发粒子属于同一个毛发层,每一个毛发粒子集合中的所有毛发粒子有序排列在所述毛发粒子集合中;

第二生成单元,用于基于所述多个毛发粒子集合生成毛发粒子排序结果;

第五确定子单元,用于根据所述毛发粒子排序结果确定当前参与渲染的目标毛发粒子。

在一些实施例中,该装置还包括:

第二获取子单元,用于基于所述目标毛发粒子的粒子属性信息获取目标毛发粒子对应的初始毛发宽度;

第六确定子单元,用于根据目标毛发粒子与所述指定参考点的距离确定所述初始毛发宽度的宽度调整值;

第一调整单元,用于基于所述宽度调整值对所述初始毛发宽度进行调整,得到调整后毛发宽度;

第六确定子单元,还用于基于所述调整后毛发宽度确定毛发段渲染区域对应的多个区域渲染顶点;

渲染单元,用于根据所述多个区域渲染顶点渲染出多个多边形网格;

第三生成单元,用于基于所述多个多边形网格生成毛发虚拟模型。

在一些实施例中,该装置还包括:

第七确定子单元,用于确定位于所述毛发段渲染区域中的毛发渲染像素;

第七确定子单元,还用于根据所述毛发粒子的切线确定所述毛发渲染像素与所述切线之间的相对距离,作为像素间距;

第二调整单元,用于根据所述像素间距对所述毛发渲染像素的当前透明度进行调整。

在一些实施例中,该装置还包括:

计算单元,用于基于所述毛发渲染像素的像素宽度、所述像素间距、预设换算比例以及指定常数进行平滑度计算,得到所述毛发渲染像素的透明度调整值;

第三调整单元,用于基于所述透明度调整值对所述毛发渲染像素的当前透明度进行调整,得到调整后的毛发渲染像素。

相应的,本申请实施例还提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现毛发虚拟模型的渲染方法任一项的步骤。

相应的,本申请实施例还提供一种存储介质,所述存储介质上存储计算机程序,所述计算机程序被处理器执行时实现毛发虚拟模型的渲染方法任一项的步骤。

本申请实施例提供一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质,通过获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;然后,获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;接着,基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;最后,基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。本申请实施例通过模拟生成一个毛发粒子模型,将毛发拆分成毛发粒子后进行渲染,从而降低计算机设备的显存占用,提高毛发渲染的效率;并且,通过对毛发边缘的像素间距进行调整,可以提高毛发渲染时毛发的颜色缓和以及毛发的抗锯齿效果,从而提高目标毛发的真实性。

附图说明

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

图1为本申请实施例提供的毛发虚拟模型的渲染方法的一种流程示意图。

图2为本申请实施例提供的毛发虚拟模型的渲染方法的一种应用场景示意图。

图3为本申请实施例提供的虚毛发虚拟模型的渲染装置的一种结构示意图。

图4为本申请实施例提供的计算机设备的结构示意图。

具体实施方式

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

本申请实施例提供一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质。具体地,本申请实施例的毛发虚拟模型的渲染方法可以由计算机设备执行,其中,该计算机设备可以为终端设备。该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(PC,Personal Computer)、个人数字助理(Personal Digital Assistant,PDA)等终端设备。

例如,当该毛发虚拟模型的渲染方法运行于终端时,该终端设备将图形用户界面提供给用户的方式可以包括多种,例如,可以渲染显示在终端设备的显示屏上,或者,通过全息投影呈现图形用户界面。例如,终端设备可以包括触控显示屏和处理器,该触控显示屏用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令,该图形用户界面包括显示画面,该处理器用于生成图形用户界面、响应操作指令以及控制图形用户界面在触控显示屏上的显示。

本申请实施例提供一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质,以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

请参阅图1,图1为本申请实施例提供的一种毛发虚拟模型的渲染方法的流程示意图,具体流程可以如下步骤101至步骤104:

101,获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息。

在本申请实施例中,粒子属性信息包括毛发粒子在模型空间中所在的位置、毛发粒子的切线属性。

102,获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序。

在一实施例中,在步骤“获取所述毛发粒子模型对应的毛发粒子顺序参数”之后,方法可以包括:

获取所述毛发粒子模型对应的毛发层粒子数,其中,所述毛发层粒子数用于指示所述毛发粒子模型的每一层毛发层中的毛发粒子数目,所述毛发层基于所述指定参考点对所述毛发粒子模型的模型空间进行分层得到;

基于所述毛发层粒子数和所述毛发粒子顺序确定当前参与渲染的目标毛发粒子。

在另一实施例中,在步骤“获取所述毛发粒子模型对应的毛发粒子顺序参数”之前,方法可以包括:

基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数;

基于所述相对距离和所述毛发层总数,确定所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数;

基于所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数,确定毛发层粒子数以及毛发粒子顺序参数。

具体的,步骤“所述基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数”,方法可以包括:

确定所述毛发粒子模型在所述模型空间中与所述指定参考点之间的第一距离值和第二距离值,其中,所述第一距离值为所述毛发粒子模型与所述指定参考点的最近距离,所述第二距离值为所述毛发粒子模型与所述指定参考点的最远距离;

基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数。

进一步的,在步骤“基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数”之后,方法可以包括:

基于所述第一距离值、所述第二距离值、以及所述毛发粒子对应的目标距离值确定所述毛发粒子所在的毛发层对应的毛发层数,其中,所述目标距离值为所述毛发粒子与所述指定参考点之间的距离值;

根据所述毛发层数生成毛发层标识,并将所述毛发层标识与所述毛发粒子关联;

基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识进行前缀和处理,得到毛发层粒子数。

在另一实施例中,在步骤“基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数”之后,方法可以包括:

基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识,将所述毛发粒子模型的所有毛发粒子按照与所述指定参考点的距离由近及远排序,生成毛发粒子顺序参数。

可选的,本申请实施例中,还可以基于所述毛发层粒子数和所述毛发粒子顺序参数对所述毛发粒子模型中所有毛发粒子进行分类处理,得到多个毛发粒子集合,其中,每一个毛发粒子集合中的所有毛发粒子属于同一个毛发层,每一个毛发粒子集合中的所有毛发粒子有序排列在所述毛发粒子集合中;基于所述多个毛发粒子集合生成毛发粒子排序结果;根据所述毛发粒子排序结果确定当前参与渲染的目标毛发粒子。

103,基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子。

104,基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

为了能够使目标毛发更具有真实感,步骤“基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型”,方法可以包括:

基于所述目标毛发粒子的粒子属性信息获取目标毛发粒子对应的初始毛发宽度;

根据目标毛发粒子与所述指定参考点的距离确定所述初始毛发宽度的宽度调整值;

基于所述宽度调整值对所述初始毛发宽度进行调整,得到调整后毛发宽度;

基于所述调整后毛发宽度确定毛发段渲染区域对应的多个区域渲染顶点;

根据所述多个区域渲染顶点渲染出多个多边形网格;

基于所述多个多边形网格生成毛发虚拟模型。

进一步的,在步骤“基于所述多个多边形网格生成毛发虚拟模型”之后,方法可以包括:

确定位于所述毛发段渲染区域中的毛发渲染像素;

根据所述毛发粒子的切线确定所述毛发渲染像素与所述切线之间的相对距离,作为像素间距;

根据所述像素间距对所述毛发渲染像素的当前透明度进行调整。

为了能够提高目标毛发的抗锯齿效果,步骤“所述根据所述像素间距对所述毛发渲染像素的当前透明度进行调整”,方法可以包括:

基于所述毛发渲染像素的像素宽度、所述像素间距、预设换算比例以及指定常数进行平滑度计算,得到所述毛发渲染像素的透明度调整值;

基于所述透明度调整值对所述毛发渲染像素的当前透明度进行调整,得到调整后的毛发渲染像素。

综上所述,本申请实施例提供一种毛发虚拟模型的渲染方法,一方面,通过获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;然后,获取所述毛发粒子模型对应的毛发粒子顺序参数;基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型等步骤,通过模拟生成一个毛发粒子模型,将毛发拆分成毛发粒子后进行渲染,可以准确的目标毛发的半透明效果;并且,由于本申请实施例无需为每个像素创建一个链表,所以毛发渲染时对计算资源的消耗小,从而降低计算机设备的显存占用,提高毛发渲染的效率。另一方面,本申请实施例还可以对每个毛发粒子沿着垂直于毛发切线的方向进行展开,通过对毛发边缘的像素间距进行调整,以对毛发渲染像素的当前透明度进行调整,可以提高毛发渲染时毛发的颜色缓和以及毛发的抗锯齿效果,从而提高目标毛发的真实性。

具体的,本申请实施例还提供的一种毛发虚拟模型的渲染方法的具体应用方法,具体方法如下所述:

(1)可以在中央处理器(Central Processing Unit,CPU)端估算毛发粒子模型中的毛发粒子离虚拟相机(即指定参考点)的最近距离Min和最远距离Max;然后,将最近距离Min和最远距离Max之间的模型空间切分成指定切分数目(LayerCount)个毛发层(Layer);之后,根据每一个毛发粒子与指定参考点之间的距离将毛发粒子放入不同的Layer中,以实现近似的排序。在本申请实施例中,指定切分数目可以取1024或2048等数值,可以根据实际情况进行调整,例如,通过计算可以得到毛发粒子模型的最近距离Min和最远距离Max分别为20cm和40cm,本申请实施例可以将20cm至40cm之间模型空间切分为1024个毛发层,(40-20)/1024cm即为每一层毛发层的厚度,每一层毛发层代表了一个距离区间。

(2)可以在GPU端构建一个数据存储为LayerCount的空内存(Buffer),并将该空Buffer命名为CounterBuffer,该CounterBuffer用于存储每一层毛发层中有多少毛发粒子;并且,还可以在GPU端构建一个长度为毛发粒子模型的毛发粒子总数(ParticleCount)的Buffer,并将该Buffer命名为RenderKeyBuffer,该RenderKeyBuffer用于记录距离指定参考点由近到远的毛发粒子标识。

(3)可以在GPU端并行的读取毛发粒子i在模型空间中的位置Xi,并计算该毛发粒子与虚拟相机之间的距离后,在根据下列毛发粒子标识计算公式计算出该毛发粒子对应的毛发层数,之后对CounterBuffer[LayerId]进行原子加一。

其中,dis为毛发粒子与虚拟相机之间的距离,min为毛发粒子离虚拟相机(即指定参考点)的最近距离,max和为毛发粒子离虚拟相机(即指定参考点)的最远距离。

(4)在得到毛发粒子模型每个毛发粒子对应的毛发层数后,在GPU端对CounterBuffer进行并行的前缀和计算,以得到每一个毛发层中毛发粒子的总数量。

(5)在得到毛发粒子模型每个毛发粒子对应的毛发层数后,记录CounterBuffer中的[LayerId]为WritingPoint,对CounterBuffer[LayerId]进行原子加一。将RenderKeyBuffer[WritingPoint]设置为i,此时,RenderKeyBuffer里面存储着由近及远的HairParticle的Id。

(6)请参阅图2,在顶点着色器(VertexShader)里面根据渲染的毛发标识读取RenderKeyBuffer中实际需要渲染的目标毛发粒子,再根据目标毛发粒子在模型空间中的位置和切线属性计算得到毛发粒子的每个渲染顶点的位置。接着,在顶点着色器里面根据目标毛发粒子离虚拟相机的距离,计算出该位置对应一个像素宽度(PixelWidth)。将毛发宽度与像素宽度相加得到目标毛发粒子的目标宽度。

(7)在像素着色器中(PixelShader)中,分别确定PixelWidth和像素间距(PixelDistance)。根据平滑度计算公式计算得到毛发对当前像素的覆盖程度用以计算当前像素的透明度值(Alpha)。最后通过GPU硬件对像素进行Alpha混合。

smoothstep(0,1,Pixelwidth-lengthtopixel×(Pixeldistance)+0.5)

其中,LenghtToPixel为当前深度下世界空间长度到像素空间下长度的换算比例;0.5为经验值,可以根据实际情况进行替换。

具体的,对于y=smoothstep(0,1,x),其中,用x替代上述【Pixelwidth-lengthtopixel×(Pixeldistance)+0.5】。若计算得到的x小于0,则平滑度值则为0;若计算得到的x大于等于0或小于等于1,则平滑度值则为3x

为便于更好的实施本申请实施例提供的毛发虚拟模型的渲染方法,本申请实施例还提供一种基于上述毛发虚拟模型的渲染装置。其中名词的含义与上述毛发虚拟模型的渲染方法中相同,具体实现细节可以参考方法实施例中的说明。

请参阅图3,图3为本申请实施例提供的一种毛发虚拟模型的渲染装置的结构示意图,该装置包括:

第一获取单元201,用于获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;

第二获取单元202,用于获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;

第一确定单元203,用于基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;

第二确定单元204,用于基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

在一些实施例中,该装置还包括:

第一获取子单元,用于获取所述毛发粒子模型对应的毛发层粒子数,其中,所述毛发层粒子数用于指示所述毛发粒子模型的每一层毛发层中的毛发粒子数目,所述毛发层基于所述指定参考点对所述毛发粒子模型的模型空间进行分层得到;

第一确定子单元,用于基于所述毛发层粒子数和所述毛发粒子顺序确定当前参与渲染的目标毛发粒子。

在一些实施例中,该装置还包括:

第一处理单元,用于基于所述毛发粒子模型与所述指定参考点之间的相对距离、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数;

第二确定子单元,用于基于所述相对距离和所述毛发层总数,确定所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数;

第二确定子单元,还用于基于所述毛发粒子模型中所有毛发粒子所在的毛发层对应的毛发层数,确定毛发层粒子数以及毛发粒子顺序参数。

在一些实施例中,该装置还包括:

第三确定子单元,用于确定所述毛发粒子模型在所述模型空间中与所述指定参考点之间的第一距离值和第二距离值,其中,所述第一距离值为所述毛发粒子模型与所述指定参考点的最近距离,所述第二距离值为所述毛发粒子模型与所述指定参考点的最远距离;

第二处理单元,用于基于所述第一距离值、所述第二距离值、以及所述模型空间的指定坐标轴对所述模型空间进行分层处理,得到多个毛发层以及所述多个毛发层的毛发层总数。

在一些实施例中,该装置还包括:

第四确定子单元,用于基于所述第一距离值、所述第二距离值、以及所述毛发粒子对应的目标距离值确定所述毛发粒子所在的毛发层对应的毛发层数,其中,所述目标距离值为所述毛发粒子与所述指定参考点之间的距离值;

关联单元,用于根据所述毛发层数生成毛发层标识,并将所述毛发层标识与所述毛发粒子关联;

第三处理单元,用于基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识进行前缀和处理,得到毛发层粒子数。

在一些实施例中,该装置还包括:

第一生成单元,用于基于所述毛发粒子模型的所有毛发粒子对应的毛发层标识,将所述毛发粒子模型的所有毛发粒子按照与所述指定参考点的距离由近及远排序,生成毛发粒子顺序参数。

在一些实施例中,该装置还包括:

第四处理单元,用于基于所述毛发层粒子数和所述毛发粒子顺序参数对所述毛发粒子模型中所有毛发粒子进行分类处理,得到多个毛发粒子集合,其中,每一个毛发粒子集合中的所有毛发粒子属于同一个毛发层,每一个毛发粒子集合中的所有毛发粒子有序排列在所述毛发粒子集合中;

第二生成单元,用于基于所述多个毛发粒子集合生成毛发粒子排序结果;

第五确定子单元,用于根据所述毛发粒子排序结果确定当前参与渲染的目标毛发粒子。

在一些实施例中,该装置还包括:

第二获取子单元,用于基于所述目标毛发粒子的粒子属性信息获取目标毛发粒子对应的初始毛发宽度;

第六确定子单元,用于根据目标毛发粒子与所述指定参考点的距离确定所述初始毛发宽度的宽度调整值;

第一调整单元,用于基于所述宽度调整值对所述初始毛发宽度进行调整,得到调整后毛发宽度;

第六确定子单元,还用于基于所述调整后毛发宽度确定毛发段渲染区域对应的多个区域渲染顶点;

渲染单元,用于根据所述多个区域渲染顶点渲染出多个多边形网格;

第三生成单元,用于基于所述多个多边形网格生成毛发虚拟模型。

在一些实施例中,该装置还包括:

第七确定子单元,用于确定位于所述毛发段渲染区域中的毛发渲染像素;

第七确定子单元,还用于根据所述毛发粒子的切线确定所述毛发渲染像素与所述切线之间的相对距离,作为像素间距;

第二调整单元,用于根据所述像素间距对所述毛发渲染像素的当前透明度进行调整。

在一些实施例中,该装置还包括:

计算单元,用于基于所述毛发渲染像素的像素宽度、所述像素间距、预设换算比例以及指定常数进行平滑度计算,得到所述毛发渲染像素的透明度调整值;

第三调整单元,用于基于所述透明度调整值对所述毛发渲染像素的当前透明度进行调整,得到调整后的毛发渲染像素。

本申请实施例提供一种毛发虚拟模型的渲染装置,通过第一获取单元201获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;第二获取单元202获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;第一确定单元203基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;第二确定单元204基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。本申请实施例一方面通过模拟生成一个毛发粒子模型,将毛发拆分成毛发粒子后进行渲染,可以准确的目标毛发的半透明效果,并且可以有效降低计算机设备的显存占用,提高毛发渲染的效率。另一方面,本申请实施例还可以对每个毛发粒子沿着垂直于毛发切线的方向进行展开,通过对毛发边缘的像素间距进行调整,以对毛发渲染像素的当前透明度进行调整,可以提高毛发渲染时毛发的颜色缓和以及毛发的抗锯齿效果,从而提高目标毛发的真实性。

相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或者服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(PC,Personal Computer)、个人数字助理(Personal Digital Assistant,PDA)等终端设备。如图4所示,图4为本申请实施例提供的计算机设备的结构示意图。该计算机设备300包括有一个或者一个以上处理核心的处理器301、有一个或一个以上计算机可读存储介质的存储器302及存储在存储器302上并可在处理器上运行的计算机程序。其中,处理器301与存储器302电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

处理器301是计算机设备300的控制中心,利用各种接口和线路连接整个计算机设备300的各个部分,通过运行或加载存储在存储器302内的软件程序和/或模块,以及调用存储在存储器302内的数据,执行计算机设备300的各种功能和处理数据,从而对计算机设备300进行整体监控。

在本申请实施例中,计算机设备300中的处理器301会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能:

获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;

获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;

基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;

基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

可选的,如图4所示,计算机设备300还包括:触控显示屏303、射频电路304、音频电路305、输入单元306以及电源307。其中,处理器301分别与触控显示屏303、射频电路304、音频电路305、输入单元306以及电源307电性连接。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

触控显示屏303可用于显示图形玩家界面以及接收玩家作用于图形玩家界面产生的操作指令。触控显示屏303可以包括显示面板和触控面板。其中,显示面板可用于显示由玩家输入的信息或提供给玩家的信息以及计算机设备的各种图形玩家接口,这些图形玩家接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集玩家在其上或附近的触摸操作(比如玩家使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测玩家的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器301,并能接收处理器301发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器301以确定触摸事件的类型,随后处理器301根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏303而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏303也可以作为输入单元306的一部分实现输入功能。

在本申请实施例中,通过处理器301执行游戏应用程序在触控显示屏303上生成图形玩家界面。该触控显示屏303用于呈现图形玩家界面以及接收玩家作用于图形玩家界面产生的操作指令。

射频电路304可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。

音频电路305可以用于通过扬声器、传声器提供玩家与计算机设备之间的音频接口。音频电路305可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路305接收后转换为音频数据,再将音频数据输出处理器301处理后,经射频电路304以发送给比如另一计算机设备,或者将音频数据输出至存储器302以便进一步处理。音频电路305还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。

输入单元306可用于接收输入的数字、字符信息或玩家特征信息(例如指纹、虹膜、面部信息等),以及产生与玩家设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

电源307用于给计算机设备300的各个部件供电。可选的,电源307可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源307还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管图4中未示出,计算机设备300还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。

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

由上可知,本实施例提供的计算机设备,一方面通过模拟生成一个毛发粒子模型,将毛发拆分成毛发粒子后进行渲染,可以准确的目标毛发的半透明效果,并且可以有效降低计算机设备的显存占用,提高毛发渲染的效率。另一方面,本申请实施例还可以对每个毛发粒子沿着垂直于毛发切线的方向进行展开,通过对毛发边缘的像素间距进行调整,以对毛发渲染像素的当前透明度进行调整,可以提高毛发渲染时毛发的颜色缓和以及毛发的抗锯齿效果,从而提高目标毛发的真实性。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种毛发虚拟模型的渲染方法中的步骤。例如,该计算机程序可以执行如下步骤:

获取模拟目标毛发渲染效果的毛发粒子模型中毛发粒子的粒子属性信息;

获取所述毛发粒子模型对应的毛发粒子顺序参数,其中,所述毛发粒子顺序参数用于指示每一个毛发粒子与模型空间中的指定参考点的远近顺序;

基于所述毛发粒子顺序确定当前参与渲染的目标毛发粒子;

基于目标毛发粒子的粒子属性信息,确定目标毛发粒子对应的毛发段渲染区域,对所述毛发段渲染区域进行渲染,得到渲染后的毛发虚拟模型。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种毛发虚拟模型的渲染方法中的步骤,因此,可以实现本申请实施例所提供的任一种毛发虚拟模型的渲染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

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

以上对本申请实施例所提供的一种毛发虚拟模型的渲染方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。

技术分类

06120114703421