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

文档序号:33632545发布日期:2023-03-28 23:29阅读:38来源:国知局
毛发模型的渲染方法、装置、计算机设备及存储介质与流程

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


背景技术:

2.随着计算机通信技术的不断发展,智能手机、平板电脑及笔记本电脑等终端的大量普及应用,终端向着多样化、个性化的方向发展,日益成为人们在生活与工作中不可或缺的终端,为了满足人们对精神生活的追求,能够在终端上操作的娱乐游戏应运而生,涌现出越来越多的终端游戏。终端游戏已经成为不可缺少生活娱乐方式,为了使用户可以得到更好的游戏体现,很多终端游戏往往都是基于现实人物及场景进行构建,因此,在进行游戏设计时游戏中场景的实现都会希望更接近真实情况。
3.在实际游戏设计工程中,通常会出现对人物及动物角色进行仿真,例如会对人物及动物角色的毛发进行毛发仿真。在对毛发进行仿真时,通常是美术人员通过绘画贴图来表现光照效果和材质质感,然后再搭配上最常用的光照模型对游戏模型的毛发效果进行渲染。然而,现有技术无法做到完全物理的效果表现,会发生难以融入不同环境的情况,导致真实性差,从而导致毛发渲染的效率低。


技术实现要素:

4.本技术实施例提供一种毛发模型的渲染方法、装置、计算机设备及存储介质,通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
5.本技术实施例提供了一种毛发模型的渲染方法,包括:
6.获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;
7.基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;
8.根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;
9.基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
10.相应的,本技术实施例还提供了一种毛发模型的渲染装置,该毛发模型的渲染装置包括:
11.获取单元,用于获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;
12.第一处理单元,用于基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;
13.第二处理单元,用于根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;
14.渲染单元,用于基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
15.相应的,本技术实施例还提供一种计算机设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现毛发模型的渲染方法任一项的步骤。
16.相应的,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现毛发模型的渲染方法任一项的步骤。
17.本技术实施例提供一种毛发模型的渲染方法、装置、计算机设备及存储介质,通过获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;然后,基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;接着,根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;最后,基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。本技术实施例通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
附图说明
18.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例提供的毛发模型的渲染方法的一种应用场景示意图。
20.图2为本技术实施例提供的毛发模型的渲染方法的一种流程示意图。
21.图3为本技术实施例提供的毛发模型的渲染装置的一种结构示意图。
22.图4为本技术实施例提供的计算机设备的结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.本技术实施例提供一种毛发模型的渲染方法、装置、计算机设备及存储介质。具体地,本技术实施例的毛发模型的渲染方法可以由计算机设备执行,其中,该计算机设备可以为终端或者服务器等设备。该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(personal computer,pc)、个人数字助理(personal digital assistant,pda)等终端设备,终端还可以包括客户端,该客户端可以是游戏应用客户端、携带有游戏程序的浏览器客户端或即时通信客户端等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
25.例如,当该毛发模型的渲染方法运行于终端时,终端设备存储有游戏应用程序并用于呈现游戏画面中的虚拟场景。终端设备用于通过图形用户界面与用户进行交互,例如通过终端设备下载安装游戏应用程序并运行。该终端设备将图形用户界面提供给用户的方式可以包括多种,例如,可以渲染显示在终端设备的显示屏上,或者,通过全息投影呈现图形用户界面。例如,终端设备可以包括触控显示屏和处理器,该触控显示屏用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面、响应操作指令以及控制图形用户界面在触控显示屏上的显示。
26.例如,当该毛发模型的渲染方法运行于服务器时,可以为云游戏。云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏应用程序的运行主体和游戏画面呈现主体是分离的,毛发模型的渲染方法的储存与运行是在云游戏服务器上完成的。而游戏画面呈现是在云游戏的客户端完成的,云游戏客户端主要用于游戏数据的接收、发送以及游戏画面的呈现,例如,云游戏客户端可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑、个人数字助理等,但是进行游戏数据处理的终端设备为云端的云游戏服务器。在进行游戏时,用户操作云游戏客户端向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网
络返回云游戏客户端,最后,通过云游戏客户端进行解码并输出游戏画面。
27.请参阅图1,图1为本技术实施例提供的一种毛发模型的渲染系统的场景示意图。该系统可以包括至少一个终端,至少一个服务器,至少一个数据库,以及网络。用户持有的终端可以通过网络连接到不同游戏的服务器。终端是具有计算硬件的任何设备,该计算硬件能够支持和执行与游戏对应的软件产品。另外,当系统包括多个终端、多个服务器、多个网络时,不同的终端可以通过不同的网络、通过不同的服务器相互连接。网络可以是无线网络或者有线网络,比如无线网络为无线局域网(wireless local area network,wlan)、局域网(local area network,lan)、蜂窝网络、第二代手机通信技术规格(2-generation wireless telephone technology,2g)网络、第三代移动通信技术(3rd-generation,3g)网络、第四代移动通信技术(the 4th generationmobile communication technology,4g)网络、第五代移动通信技术(5th generation mobile communication technology,5g)网络等。另外,不同的终端之间也可以使用自身的蓝牙网络或者热点网络连接到其他终端或者连接到服务器等。例如,多个用户可以通过不同的终端在线从而通过适当网络连接并且相互同步,以支持多玩家游戏。另外,该系统可以包括多个数据库,多个数据库耦合到不同的服务器,并且可以将与游戏环境有关的信息在不同用户在线进行多玩家游戏时连续地存储于数据库中。
28.需要说明的是,图1所示的毛发模型的渲染系统的场景示意图仅仅是一个示例,本技术实施例描述的毛发模型的渲染系统以及场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
29.基于上述问题,本技术实施例提供一种毛发模型的渲染方法、装置、计算机设备及存储介质,可以提高虚拟模型在游戏中显示的真实性。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
30.请参阅图2,图2为本技术实施例提供的一种毛发模型的渲染方法的流程示意图,该毛发模型的渲染方法的具体流程可以如下步骤101至步骤104所示:
31.101,获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色。
32.在本技术实施例中,每一层毛发子模型用于模拟所述待处理毛发模型渲染的毛发的生长横截面。其中,虚拟模型可以包括猫咪虚拟模型,还可以包括除猫咪虚拟模型之外的,其它包含毛发模型的虚拟模型,例如,犬类虚拟模型、鸟类虚拟模型以及马类虚拟模型等包含毛发模型的虚拟模型。计算机设备可以预先获取一张原始猫咪渲染效果图,美术人员在修图软件(例如ps)中将原始猫咪渲染效果图去色得到灰度图,将原始猫咪渲染效果图抽象为不带颜色的光暗效果。在得到灰度图后美术人员可以手动进行修图,使修出灰度图中的猫咪具有更生动的光影质感,从而可以作为在引擎里构建光照模型的参考图片。
33.其中,预设遮罩贴图又称蒙版,蒙板是对所选区域进行保护,让所选区域免于操作,而对非所选区域非掩盖的地方应用操作。蒙版所蒙住的地方是我们编辑选区时不受影响的地方,在图层上需要显示出来。在本技术实施例中,预设遮罩贴图为设置有毛发区域和非毛发区域的黑白图,白色区域为需要设置毛发的毛发区域,黑色区域为不需要设置毛发
的非毛发区域。另外,漫反射贴图用于在游戏中表现出虚拟模型的物体表面的反射和表面颜色。也即可以表现出虚拟模型的物体表面被光照射到而显出的颜色和强度,漫反射贴图的主要作用就是记录虚拟模型的物体表面的颜色和纹理。
34.102,基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域。
35.上述处理后毛发模型上还设置有所述预设遮罩贴图指示的非毛发区域,为了实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,使得处于暗处的毛发模型也能够具有受光感,步骤“所述基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型”,方法可以包括:
36.基于所述预设遮罩贴图对所述待处理毛发模型进行分区处理,以得到具有毛发区域和非毛发区域的分区后的毛发模型;
37.基于所述预设漫反射贴图对所述非毛发区域的每一层毛发子模型中模型顶点进行颜色设置处理,以对所述分区后的毛发模型上的非毛发区域进行渲染,得到处理后毛发模型。
38.在本技术实施例中,计算机设备可以基于所述预设遮罩贴图对待处理毛发模型进行分区处理,从而得到具有毛发区域和非毛发区域的分区后的毛发模型。然后,采用预设漫反射贴图对所述非毛发区域的每一层毛发子模型中模型顶点设置该预设漫反射贴图中对应的各像素点的颜色值,从而对分区后的毛发模型上的非毛发区域进行渲染,得到处理后毛发模型。
39.具体的,计算机设备可以计算毛发模型中每一毛发子模型毛根与毛尖的亮度。并且,获取每一毛发子模型中模型顶点预先刷上的顶点色,从而区分毛发模型的毛发层次,然后,计算机设备可以通过预设遮罩贴图区分毛发区域和非毛发区域,让猫咪虚拟模型中有毛发生长的地方显示出计算的fur_area,没有毛发生长的地方显示预设漫反射贴图中对应的颜色值即可。最后,计算机设备可以通过光照模型计算用0到1代表由暗面到亮面的过渡,此时,把暗面的模型顶点应用通过光照模型计算的颜色,亮面的模型顶点应用预设漫反射贴图的颜色,中间柔和过渡即可获得具有绒感的毛发效果,即亮部被照亮但仍能看出一点过渡,亮暗面连接处也可以看出毛发被光源照亮均匀渐变的效果,使得猫咪虚拟模型即使处于暗处也能营造整体受光感,从而实现绒感。
40.103,根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
41.在一具体实施例中,步骤“所述根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果”,方法可以包括:
42.计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后
点乘结果;
43.基于所述光源光线、所述预设漫反射贴图以及所述映射后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
44.例如,本技术实施例基于半兰伯特模型为基础,在处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、与虚拟场景中预设光照模型提供的光源光线的点乘的基础上,乘以0.5再加上0.5,将原本所在的区间阈值[-1,1]的生硬光照过渡到[0,1]的柔和光照,从而实现使强烈的光暗对比调整为柔和的光暗过渡;然后,再乘以一个环境因子参数0.62,用来调整猫咪虚拟模型的毛发模型与虚拟场景提供的环境的匹配度,使猫咪虚拟模型更匹配虚拟场景中的光影效果。具体构建光照模型的代码如下所示:
[0045]
mediump float ndotl org_=dot(1ight_dir.xyz,normal world.xyz);
[0046]
mediump float mix ndotl=pow(saturate(ndotl org_*0.5f+0.5f)*0.62f,1f)。
[0047]
为了使虚拟模型的毛发模型的渲染效果更佳符合虚拟场景当前光照产生的效果,在步骤“计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果”之后,还包括:
[0048]
调整所述虚拟模型所需应用的虚拟环境对应的环境因子,以得到多个调整后点乘结果;
[0049]
基于所述光源光线、所述预设漫反射贴图以及所述调整后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0050]
其中,环境因子为调整光照模型与虚拟场景对应的光照环境匹配度的参数,环境因子用于调整虚拟模型的毛发模型与虚拟场景提供的环境的匹配度,使虚拟模型更匹配虚拟场景中的光影效果。具体的,可以根据不同虚拟环境确定不同的环境因子参数,该环境因子是根据虚拟环境的变化进行改变的,本技术实施例中经实际测试确定较为符合虚拟模型与虚拟场景的整体环境效果时,得到的环境因子为0.62,因此选取0.62作为环境因子进行光照模型的调整。
[0051]
104,基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
[0052]
为了提高虚拟模型中毛发子模型渲染效果的真实性,在步骤“基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型”之后,方法可以包括:
[0053]
基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息。
[0054]
本技术实施例中,使用常见的菲涅尔简化函数为基础,然后加入毛发层数的影响,猫咪虚拟模型中毛发模型中的毛发子模型的层数越高,所产生的边缘光越亮。对猫咪虚拟模型进行处理的具体代码如下所示:
[0055]
function fresnerschlick in(mediump float costheta,lowp float3 f0,lowp float2 fresnel)out(mediump float3 f_color)
[0056]
{
[0057]
function sg(1.0f-costheta,1.0f/fresnel.g)out(mediump float ct):
[0058]
out(f_color,(f0+(float3(1.0f)-f0)*float3(ct))*fresnel.r);
[0059]
};
[0060]
在另一实施例中,在步骤“基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息”之后,方法可以包括:
[0061]
基于指定参数和每一调整后毛发子模型中模型顶点的顶点法线与光源光线的点乘结果,确定每一调整后毛发子模型中的暗部区域;
[0062]
对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型。
[0063]
在本技术实施例中,为了营造毛发模型的体积感,使猫咪虚拟模型在暗处的虚拟毛发模型也能产生较弱的边缘光,营造简洁光线透过的效果,可以在上一步骤计算出的菲涅尔效果乘上一个倒着的ndotl,从而获取毛发模型中暗部的区域,调整暗部的强度范围到合理效果即可。对猫咪虚拟模型进行处理的具体代码如下所示:
[0064]
mediump float3 fresnel fake=f_fake*(1.0f-mix_ndotl)*shadow half*diffuse_color*aospecularmerge;
[0065]
为了凸显猫咪虚拟模型的毛发模型在受光情况下的体积感与毛发绒感,在步骤“对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型”之后,还包括:
[0066]
获取所述预设漫反射贴图的散射颜色图;
[0067]
基于所述散射颜色图对多个处理后毛发子模型进行颜色叠加,得到多个目标毛发子模型。
[0068]
其中,计算机设备可以计算一次pbr的dfg项,并配合毛发层次组成了新的高光。该高光通过参数调控后着重表现毛发受光的体积效果,将原本平平无奇暗淡的毛发变为十分有绒感的毛发。在此基础上叠加一个散射颜色,将原来偏黑的毛发叠加上diffuse贴图的散射颜色,从而形成体积散射的毛发效果,使整体质感更偏向毛绒,具体实施代码如下所示:
[0069]
mediump float3 r_schlick-flcat3(pow(1.0fndotv_clamp,5.of)*pow(1.0f-ndotv_clamp,5.0f))*final_sh*occlusion;
[0070]
mcdiump float3 f_fiber-lcrp(f_schlick,float3(0.4f*(1.0fndotv_clamp)),float3(_scatter));
[0071]
mediump float3 d warplight-saturate(ndotl_org_(f1oat3(1.0f)-_scattercolor.rgb+_scattercclor.rgb);
[0072]
mediump float3 scatter=d_warplight*f_fiber*scattercolor.rgb;
[0073]
以及:
[0074]
function g_smith scatter(normalworld.xyz,view dir,light_dir.xyz,_roughness)out(mediump float g_scatter);
[0075]
function fresnerschlick(ndotv,fo,_fresnel scatter)out(mediump float3 f_scatter);
[0076]
float3 nom scatter=_d*f_scatter*g scatter*(fur_offset raw*3f+0.3f)*furflowmask_var.b;
[0077]
float3 specular_scatter=log(nomscatter/max(denom,float3(0.001f))+float3(1f));
[0078]
可选的,在步骤“基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型”之后,方法可以包括:
[0079]
获取每一渲染后毛发子模型的指定阴影参数;
[0080]
将每个指定阴影参数映射到指定数值区间内,得到多个映射后阴影参数;
[0081]
基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型。
[0082]
由于现有技术中猫咪虚拟模型的毛发模型原本的阴影效果是直接投影至毛发模型相应位置,会压住毛发模型原本的颜色,导致毛发模型在阴影下毫无体积感可言,并且受光变化的效果。因此,本技术实施例需要将阴影效果减弱,通过将阴影参数乘以0.5加上0.5,以将该阴影参数的阈值区间从[0,1]区间调整为[0.5,1]区间,从而使得阴影不能完全覆盖掉毛发模型原有的颜色,以实现一个投影与光影的平衡效果,即使毛发模型在阴影之下也能有受光感。
[0083]
进一步的,在步骤“基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型”之后,方法可以包括:
[0084]
接收环境光遮蔽参数;
[0085]
基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型。
[0086]
在一实施例中,在步骤“基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型”之后,方法可以包括:
[0087]
接收阴影参数调整指令,根据所述阴影参数调整指令获取阴影调整参数;
[0088]
基于所述阴影调整参数更新多个调整后的毛发子模型的模型阴影切线,其中,所述模型阴影切线用于渲染所述调整后的毛发子模型的阴影边缘效果。
[0089]
例如,可以为猫咪虚拟模型的毛发模型添加额外的假ao(环境光遮蔽参数),可以给一个指定通道中手动设置物理计算不到的地方的阴影,例如猫咪虚拟模型的脖子下方等部位,通过遮罩的渐变效果营造出立体感,从而增强猫咪虚拟模型的毛发模型整体的层次变化。然后还可以柔化毛发虚拟模型的阴影切线效果,通过修改shadowmap pcf inv tex参数值就能得到过渡更加柔和的阴影切线,从而避免猫咪虚拟模型的毛发模型的阴影边缘为直的一条明显的亮暗分界线。最后,可以为猫咪虚拟模型的毛发模型添加一个制作人员制定的暗部倾向参数,从而可以个性化调整猫咪虚拟模型中暗部毛发模型的颜色、亮暗等显示效果,从而得到更真实的阴影效果。具体实施代码如下所示:
[0090]
mediump float3 dark color=shl*darkcolor.rgb*pow(oneminus(mix_ndotl),5f);
[0091]
float3 lo2=lo1*dark_color;
[0092]
可选的,在步骤“基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型”之后,方法可以包括:
[0093]
获取预设粗糙度贴图;
[0094]
为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型。
[0095]
进一步的,在步骤“为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型”之后,方法可以包括:
[0096]
获取虚拟环境的环境反射光;
[0097]
基于每一处理后毛发子模型的模型顶点的粗糙图信息以及所述环境反射光,确定每一处理后毛发子模型的模型顶点的目标反射光,并叠加至对应的处理后毛发子模型上。
[0098]
在一些实施例中,为了能够为毛发模型添加基于物理渲染(physically based rendering,pbr)材质效果,可以对猫咪虚拟模型上设置有明显材质特征的位置添加pbr材质效果,从而表现出材质本身的质感。首先,可以将原本绘流程贴图上的手绘光影抛弃掉,将贴图抹平成统一的漫反射颜色,然后,通过pbr项计算出高光,配合上制作的粗糙度贴图就能得到最基础的pbr高光效果。之后,为猫咪虚拟模型添加环境反射光,采样作为环境反射贴图(reflectmap)的立方体贴图(cubemap),并根据粗糙度获取反射效果,通过环境brdf模型计算出最终的环境反射光叠加上去,配合上一步计算的高光,就能获取到十分仿真的高光反射效果。本技术实施例中对猫咪虚拟模型进行处理的具体代码如下:
[0099]
mediump float3 r=reflect(-view_dir;normal world.xyz);
[0100]
function sample_dual_cubemap(reflectmap,r;_roughness/0.14f)out(highp float4 envir);
[0101]
function envbrdfapprox(f0,roughness_env,ndotv,1.0f)out(highp float3env_brdf);
[0102]
highp float3 specular env=env_brdf;
[0103]
可选的,还可以在猫咪虚拟模型上添加sss次表面散射效果,使用光源光线反向与模型顶点法线相加得到穿透向量,然后,与视角方向点乘得到穿透区域,最后,乘上次表面散射颜色、漫反射颜色和次表面散射强度值等各项参数就能得到最终的sss次表面散射效果。本技术实施例中对猫咪虚拟模型进行处理的具体代码如下:
[0104]
mediump float3 translightdir=-light dir.xyz+normal world.xyz;
[0105]
mediump float trans dot=pow(saturate(dot(translightdir,view dir))*sss*sss,1.2f):
[0106]
mediump float3 sss_color=trans dot*_subsurfacecolor.rgb*diffuse_color*sss_intensity。
[0107]
综上所述,本技术实施例提供一种毛发模型的渲染方法,通过获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;然后,基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;接着,根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理
后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;最后,基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。本技术实施例通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
[0108]
为便于更好的实施本技术实施例提供的毛发模型的渲染方法,本技术实施例还提供一种基于上述毛发模型的渲染装置。其中名词的含义与上述毛发模型的渲染方法中相同,具体实现细节可以参考方法实施例中的说明。
[0109]
请参阅图3,图3为本技术实施例提供的一种毛发模型的渲染装置的结构示意图,该装置包括:
[0110]
获取单元201,用于获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;
[0111]
第一处理单元202,用于基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;
[0112]
第二处理单元203,用于根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;
[0113]
渲染单元204,用于基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
[0114]
在一些实施例中,该毛发模型的渲染装置包括:
[0115]
第一处理子单元,用于基于所述预设遮罩贴图对所述待处理毛发模型进行分区处理,以得到具有毛发区域和非毛发区域的分区后的毛发模型;
[0116]
第一处理子单元,还用于基于所述预设漫反射贴图对所述非毛发区域的每一层毛发子模型中模型顶点进行颜色设置处理,以对所述分区后的毛发模型上的非毛发区域进行渲染,得到处理后毛发模型。
[0117]
在一些实施例中,该毛发模型的渲染装置包括:
[0118]
第一计算子单元,用于计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果;
[0119]
第一计算子单元,还用于基于所述光源光线、所述预设漫反射贴图以及所述映射后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0120]
在一些实施例中,该毛发模型的渲染装置包括:
[0121]
调整子单元,用于调整所述虚拟模型所需应用的虚拟环境对应的环境因子,以得到多个调整后点乘结果;
[0122]
第二计算子单元,用于基于所述光源光线、所述预设漫反射贴图以及所述调整后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0123]
在一些实施例中,该毛发模型的渲染装置包括:
[0124]
第二处理子单元,用于基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息。
[0125]
在一些实施例中,该毛发模型的渲染装置包括:
[0126]
第一确定子单元,用于基于指定参数和每一调整后毛发子模型中模型顶点的顶点法线与光源光线的点乘结果,确定每一调整后毛发子模型中的暗部区域;
[0127]
第三处理子单元,用于对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型。
[0128]
在一些实施例中,该毛发模型的渲染装置包括:
[0129]
第一获取子单元,用于获取所述预设漫反射贴图的散射颜色图;
[0130]
叠加子单元,用于基于所述散射颜色图对多个处理后毛发子模型进行颜色叠加,得到多个目标毛发子模型。
[0131]
在一些实施例中,该毛发模型的渲染装置包括:
[0132]
第二获取子单元,用于获取每一渲染后毛发子模型的指定阴影参数;
[0133]
映射子单元,用于将每个指定阴影参数映射到指定数值区间内,得到多个映射后阴影参数;
[0134]
第四处理子单元,用于基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型。
[0135]
在一些实施例中,该毛发模型的渲染装置包括:
[0136]
第一接收子单元,用于接收环境光遮蔽参数;
[0137]
第五处理子单元,用于基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型。
[0138]
在一些实施例中,该毛发模型的渲染装置包括:
[0139]
第二接收子单元,用于接收阴影参数调整指令,根据所述阴影参数调整指令获取阴影调整参数;
[0140]
更新子单元,用于基于所述阴影调整参数更新多个调整后的毛发子模型的模型阴影切线,其中,所述模型阴影切线用于渲染所述调整后的毛发子模型的阴影边缘效果。
[0141]
在一些实施例中,该毛发模型的渲染装置包括:
[0142]
第三获取子单元,用于获取预设粗糙度贴图;
[0143]
设置子单元,用于为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型。
[0144]
在一些实施例中,该毛发模型的渲染装置包括:
[0145]
第四获取子单元,用于获取虚拟环境的环境反射光;
[0146]
第二确定子单元,用于基于每一处理后毛发子模型的模型顶点的粗糙图信息以及所述环境反射光,确定每一处理后毛发子模型的模型顶点的目标反射光,并叠加至对应的处理后毛发子模型上。
[0147]
本技术实施例提供一种毛发模型的渲染装置,通过获取单元201获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;第一处理单元202基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;第二处理单元203根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;渲染单元204基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。本技术实施例通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
[0148]
相应的,本技术实施例还提供一种计算机设备,该计算机设备可以为终端或者服务器,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(pc,personal computer)、个人数字助理(personal digital assistant,pda)等终端设备。如图4所示,图4为本技术实施例提供的计算机设备的结构示意图。该计算机设备300包括有一个或者一个以上处理核心的处理器301、有一个或一个以上计算机可读存储介质的存储器302及存储在存储器302上并可在处理器上运行的计算机程序。其中,处理器301与存储器302电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0149]
处理器301是计算机设备300的控制中心,利用各种接口和线路连接整个计算机设备300的各个部分,通过运行或加载存储在存储器302内的软件程序和/或模块,以及调用存储在存储器302内的数据,执行计算机设备300的各种功能和处理数据,从而对计算机设备300进行整体监控。
[0150]
在本技术实施例中,计算机设备300中的处理器301会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能:
[0151]
获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;
[0152]
基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所
述预设遮罩贴图指示的毛发区域;
[0153]
根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;
[0154]
基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
[0155]
在一实施例中,所述处理后毛发模型上还设置有所述预设遮罩贴图指示的非毛发区域,所述基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,包括:
[0156]
基于所述预设遮罩贴图对所述待处理毛发模型进行分区处理,以得到具有毛发区域和非毛发区域的分区后的毛发模型;
[0157]
基于所述预设漫反射贴图对所述非毛发区域的每一层毛发子模型中模型顶点进行颜色设置处理,以对所述分区后的毛发模型上的非毛发区域进行渲染,得到处理后毛发模型。
[0158]
在一实施例中,所述根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果,包括:
[0159]
计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果;
[0160]
基于所述光源光线、所述预设漫反射贴图以及所述映射后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0161]
在一实施例中,在计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果之后,还包括:
[0162]
调整所述虚拟模型所需应用的虚拟环境对应的环境因子,以得到多个调整后点乘结果;
[0163]
基于所述光源光线、所述预设漫反射贴图以及所述调整后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0164]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0165]
基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息。
[0166]
在一实施例中,在基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息之后,还包括:
[0167]
基于指定参数和每一调整后毛发子模型中模型顶点的顶点法线与光源光线的点
乘结果,确定每一调整后毛发子模型中的暗部区域;
[0168]
对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型。
[0169]
在一实施例中,在对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型之后,还包括:
[0170]
获取所述预设漫反射贴图的散射颜色图;
[0171]
基于所述散射颜色图对多个处理后毛发子模型进行颜色叠加,得到多个目标毛发子模型。
[0172]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0173]
获取每一渲染后毛发子模型的指定阴影参数;
[0174]
将每个指定阴影参数映射到指定数值区间内,得到多个映射后阴影参数;
[0175]
基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型。
[0176]
在一实施例中,在基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型之后,还包括:
[0177]
接收环境光遮蔽参数;
[0178]
基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型。
[0179]
在一实施例中,在基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型之后,还包括:
[0180]
接收阴影参数调整指令,根据所述阴影参数调整指令获取阴影调整参数;
[0181]
基于所述阴影调整参数更新多个调整后的毛发子模型的模型阴影切线,其中,所述模型阴影切线用于渲染所述调整后的毛发子模型的阴影边缘效果。
[0182]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0183]
获取预设粗糙度贴图;
[0184]
为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型。
[0185]
在一实施例中,在为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型之后,还包括:
[0186]
获取虚拟环境的环境反射光;
[0187]
基于每一处理后毛发子模型的模型顶点的粗糙图信息以及所述环境反射光,确定每一处理后毛发子模型的模型顶点的目标反射光,并叠加至对应的处理后毛发子模型上。
[0188]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0189]
可选的,如图4所示,计算机设备300还包括:触控显示屏303、射频电路304、音频电路305、输入单元306以及电源307。其中,处理器301分别与触控显示屏303、射频电路304、音频电路305、输入单元306以及电源307电性连接。本领域技术人员可以理解,图4中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组
合某些部件,或者不同的部件布置。
[0190]
触控显示屏303可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏303可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light-emitting diode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器301,并能接收处理器301发来的命令并加以执行。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器301以确定触摸事件的类型,随后处理器301根据触摸事件的类型在显示面板上提供相应的视觉输出。在本技术实施例中,可以将触控面板与显示面板集成到触控显示屏303而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏303也可以作为输入单元306的一部分实现输入功能。
[0191]
在本技术实施例中,通过处理器301执行游戏应用程序在触控显示屏303上生成图形用户界面。该触控显示屏303用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。
[0192]
射频电路304可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
[0193]
音频电路305可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路305可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路305接收后转换为音频数据,再将音频数据输出处理器301处理后,经射频电路304以发送给比如另一计算机设备,或者将音频数据输出至存储器302以便进一步处理。音频电路305还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
[0194]
输入单元306可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0195]
电源307用于给计算机设备300的各个部件供电。可选的,电源307可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源307还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0196]
尽管图4中未示出,计算机设备300还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
[0197]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0198]
由上可知,本实施例提供的计算机设备,通过获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;然后,基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;接着,根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;最后,基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。本技术实施例通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
[0199]
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0200]
为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种毛发模型的渲染方法中的步骤。例如,该计算机程序可以执行如下步骤:
[0201]
获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;
[0202]
基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;
[0203]
根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;
[0204]
基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。
[0205]
在一实施例中,所述处理后毛发模型上还设置有所述预设遮罩贴图指示的非毛发区域,所述基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,包括:
[0206]
基于所述预设遮罩贴图对所述待处理毛发模型进行分区处理,以得到具有毛发区域和非毛发区域的分区后的毛发模型;
[0207]
基于所述预设漫反射贴图对所述非毛发区域的每一层毛发子模型中模型顶点进行颜色设置处理,以对所述分区后的毛发模型上的非毛发区域进行渲染,得到处理后毛发
模型。
[0208]
在一实施例中,所述根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果,包括:
[0209]
计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果;
[0210]
基于所述光源光线、所述预设漫反射贴图以及所述映射后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0211]
在一实施例中,在计算所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线与所述光源光线的点乘结果,将每一点乘结果映射到预设数值区间内,得到多个映射后点乘结果之后,还包括:
[0212]
调整所述虚拟模型所需应用的虚拟环境对应的环境因子,以得到多个调整后点乘结果;
[0213]
基于所述光源光线、所述预设漫反射贴图以及所述调整后点乘结果进行计算,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果。
[0214]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0215]
基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息。
[0216]
在一实施例中,在基于每一渲染后毛发子模型的毛发层数信息和模型顶点信息,对每一渲染后毛发子模型进行边缘光调整处理,以得到多个边缘光调整后毛发子模型,其中,所述模型顶点信息包括法线信息和视线方向信息之后,还包括:
[0217]
基于指定参数和每一调整后毛发子模型中模型顶点的顶点法线与光源光线的点乘结果,确定每一调整后毛发子模型中的暗部区域;
[0218]
对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型。
[0219]
在一实施例中,在对每一调整后毛发子模型中暗部区域的漫反射信息进行调整处理,得到多个处理后毛发子模型之后,还包括:
[0220]
获取所述预设漫反射贴图的散射颜色图;
[0221]
基于所述散射颜色图对多个处理后毛发子模型进行颜色叠加,得到多个目标毛发子模型。
[0222]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0223]
获取每一渲染后毛发子模型的指定阴影参数;
[0224]
将每个指定阴影参数映射到指定数值区间内,得到多个映射后阴影参数;
[0225]
基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新
处理,以得到多个更新后毛发子模型。
[0226]
在一实施例中,在基于多个映射后阴影参数对相应的渲染后毛发子模型的原始阴影参数进行更新处理,以得到多个更新后毛发子模型之后,还包括:
[0227]
接收环境光遮蔽参数;
[0228]
基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型。
[0229]
在一实施例中,在基于所述环境光遮蔽参数对指定位置的更新后毛发子模型进行调整处理,得到多个调整后的毛发子模型之后,还包括:
[0230]
接收阴影参数调整指令,根据所述阴影参数调整指令获取阴影调整参数;
[0231]
基于所述阴影调整参数更新多个调整后的毛发子模型的模型阴影切线,其中,所述模型阴影切线用于渲染所述调整后的毛发子模型的阴影边缘效果。
[0232]
在一实施例中,在基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型之后,还包括:
[0233]
获取预设粗糙度贴图;
[0234]
为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型。
[0235]
在一实施例中,在为所述多个渲染后毛发子模型中各渲染后毛发子模型,设置所述预设粗糙度贴图中对应的粗糙度值,得到多个处理后毛发子模型之后,还包括:
[0236]
获取虚拟环境的环境反射光;
[0237]
基于每一处理后毛发子模型的模型顶点的粗糙图信息以及所述环境反射光,确定每一处理后毛发子模型的模型顶点的目标反射光,并叠加至对应的处理后毛发子模型上。
[0238]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0239]
其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
[0240]
由于该存储介质中所存储的计算机程序,通过获取虚拟模型上的待处理毛发模型、预设遮罩贴图以及预设漫反射贴图,所述待处理毛发模型由多个毛发子模型依次层叠组合形成,其中,每一层毛发子模型设置有用于指示所述毛发子模型在所述待处理毛发模型中的层数信息的顶点色;然后,基于所述预设遮罩贴图和所述预设漫反射贴图对所述待处理毛发模型分别进行分区处理以及颜色设置处理,得到处理后毛发模型,其中,所述处理后毛发模型上设置有所述预设遮罩贴图指示的毛发区域;接着,根据所述预设漫反射贴图、所述处理后毛发模型的毛发区域中每一层毛发子模型中模型顶点的顶点法线、以及虚拟场景中预设光照模型提供的光源光线进行光照结果计算处理,得到所述处理后毛发模型的毛发区域中每一层毛发子模型的光照漫反射结果;最后,基于每一光照漫反射结果对所述处理后毛发模型的毛发区域中对应的毛发子模型进行渲染,得到多个渲染后毛发子模型。本技术实施例通过根据虚拟场景中设置的光照环境对光照模型进行优化,可以根据不同的光照环境对光照模型进行针对性调整,使光照模型更加符合不同虚拟环境,可以提高毛发渲染的效率;采用优化后的光照模型对虚拟模型上的毛发模型进行渲染时,还对毛发模型进行光影和阴影的调整,能够实现虚拟模型上不同层次的毛发模型被光源照亮产生的均匀渐变的效果,从而可以提高虚拟模型上的毛发模型的真实性,提高了虚拟模型的渲染效果。
[0241]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0242]
以上对本技术实施例所提供的一种毛发模型的渲染方法、装置、计算机设备及存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例的技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1