虚拟角色头发渲染方法、装置、电子设备和存储介质与流程

文档序号:31567651发布日期:2022-09-20 21:13阅读:59来源:国知局
虚拟角色头发渲染方法、装置、电子设备和存储介质与流程

1.本技术涉及计算机领域,具体涉及一种虚拟角色头发渲染方法、装置、电子设备和存储介质。


背景技术:

2.现有技术中,在对虚拟角色的头发进行渲染时,通常是通过:把头发的阴影固定描绘在贴图上的方式解决头发的光影问题。
3.然而,对于头发的阴影固定描绘在贴图的方式,虚拟角色的头发的光影效果不会随着虚拟人物的移动而变化,虚拟角色的头发的表现不够自然。即现有技术中存在虚拟角色的头发的表现不够自然的问题。


技术实现要素:

4.本技术实施例提供一种虚拟角色头发渲染方法、装置、电子设备和存储介质,可以改善现有技术中虚拟角色的头发的表现不够自然的问题。
5.本技术实施例提供一种虚拟角色头发渲染方法,所述方法包括:
6.对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;
7.确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数;
8.构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;
9.根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;
10.获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;
11.获取描边描述信息,并基于所述描边描述信息获取第二运算结果;
12.对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
13.本技术实施例还提供一种虚拟角色头发渲染装置,所述装置包括:
14.像素点获取单元,用于对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;
15.光照参数确定单元,用于确定光照影响参数,并根据所述光照影响参数以及每个
着色点的阴影采样值,计算每个着色点的遮挡阴影系数;
16.法线获取单元,用于构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;
17.光照系数计算单元,用于根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;
18.第一结果获取单元,用于获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;
19.第二结果获取单元,用于获取描边描述信息,并基于所述描边描述信息获取第二运算结果;
20.加和结果获取单元,用于对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
21.在一些实施例中,像素点获取单元,具体用于:对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点。
22.在一些实施例中,光照参数确定单元,包括:
23.光照向量子单元,用于获取光照方向向量;
24.投影向量子单元,用于将所述光照方向向量在目标投影面进行投影,得到光照投影向量,其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量构成的投影面;
25.影响参数计算子单元,用于根据所述光照投影向量以及所述竖直向上方向向量,计算所述光照影响参数。
26.在一些实施例中,法线获取单元,包括:
27.外接球子单元,用于生成所述虚拟角色的头发对应的外接球体,其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合;
28.角点获取子单元,用于从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点;
29.法线计算子单元,用于对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
30.在一些实施例中,光照系数计算单元,包括:
31.法线转换子单元,用于将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系下,并进行归一化处理,得到每个着色点分别对应的法线向量;
32.点乘结果子单元,用于对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果;
33.初选参数子单元,用于对于每个着色点对应的点乘结果,对所述点乘结果进行平滑阶梯函数处理,得到初选光照系数;
34.光照系数确定子单元,用于对于每个着色点对应的初选光照系数,获取所述初选光照系数与所述遮挡阴影系数的较小值,所述较小值为所述光照系数。
35.在一些实施例中,第一结果获取单元,包括:
36.颜色采样子单元,用于对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点;
37.高光采样子单元,用于对于每个着色点,获取所述着色点uv坐标值在高光贴图中对应的像素点,其中,该像素点为所述高光采样值。
38.在一些实施例中,第一结果获取单元,包括:
39.对于每个着色点:
40.第一乘积子单元,用于计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积;
41.第二乘积子单元,用于计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积;
42.加和结果子单元,用于计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果;
43.第一结果子单元,用于将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
44.在一些实施例中,第二结果获取单元,包括:
45.三维模型子单元,用于获取完成预设处理的虚拟角色的头发的三维模型,其中,完成预设处理的所述虚拟角色的头发的三维模型中的每缕头发的边缘区域为第一颜色、中心区域为第二颜色;
46.描边区域子单元,用于对于所述每缕头发的第一颜色所属区域的每个像素点,根据像素点与所属缕头发的中心区域的距离、以及所述像素点与所属缕头发的边线的距离,对该缕头发的所述第一颜色所属区域进行插值运算,得到所述描边描述信息。
47.在一些实施例中,第二结果获取单元,包括:
48.描边运算子单元,用于对所述描边描述信息与描边粗细参数进行阶梯函数运算,得到描边运算结果;
49.连乘运算子单元,用于计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
50.在一些实施例中,所述装置还包括:
51.大小阴影获取单元,用于获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图,其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图;
52.中间阴影计算单元,用于根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域;
53.插值运算阴影单元,用于对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影区域进行插值运算,得到插值运算阴影区域;其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界;
54.阴影组合单元,用于将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
55.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本技术实施例所提供的任一种虚拟角色头发渲染方法中的步骤。
56.本技术实施例提供的虚拟角色头发渲染方法中,可以从阴影贴图中获取满足预设要求的阴影采样值;然后确定光照影响参数,并基于光照影响参数以及阴影采样值计算遮挡阴影系数。本技术实施例还可以计算虚拟角色的头发的多个顶点分别对应的法线,并依据上述多个顶点分别对应的法线、光照方向向量以及遮挡阴影系数,计算每个着色点分别对应的光照系数,进而再结合颜色采样值、高光采样值,得到每个着色点分别对应的第一运算结果。本技术实施例还可以基于描边描述信息获取到第二运算结果,并将第二运算结果分别与每个着色点分别对应的第一运算结果相加,得到每个着色点分别对应的加和结果,并根据上述加和结果对虚拟角色的头发的三维模型进行渲染。
57.在本技术中,在计算每个着色点分别对应的光照系数时,依据了遮挡阴影系数、光照方向向量以及虚拟角色的头发的多个顶点分别对应的法线,并且在计算出每个着色点分别对应的光照系数之后,结合颜色采样值、高光采样值以及描边描述信息,最终计算出了每个着色点分别对应的加和结果。在引入上述多个方面的系数后,可以使得虚拟角色的头发的渲染随虚拟角色的移动而形成自然的位移,从而增加了虚拟角色的头发的真实感。
附图说明
58.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
59.图1a是本技术实施例提供的虚拟角色头发渲染方法的场景示意图;
60.图1b是本技术一实施例提供的虚拟角色头发渲染方法的流程示意图;
61.图1c示出了虚拟角色的若干簇头发的阴影贴图的示意图;
62.图1d示出了未进行预设处理的虚拟角色的头发的三维模型;
63.图1e示出了进行过预设处理的虚拟角色的头发的三维模型;
64.图2是本技术另一实施例提供的虚拟角色头发渲染方法的流程示意图;
65.图3是本技术一实施例提供的虚拟角色头发渲染装置的一种结构示意图;
66.图4是本技术实施例提供的电子设备的结构示意图。
具体实施方式
67.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
68.本技术实施例提供虚拟角色头发渲染方法、装置、移动终端和存储介质。
69.其中,该虚拟角色头发渲染方法具体可以集成在电子设备中,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、或者个
人电脑(personal computer,pc)等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群。
70.在一些实施例中,该虚拟角色头发渲染方法还可以集成在多个电子设备中,比如,虚拟角色头发渲染方法可以集成在多个服务器中,由多个服务器来实现本技术的虚拟角色头发渲染方法。
71.在一些实施例中,服务器也可以以终端的形式来实现。
72.例如,请参见图1a,在一些实施例中,该电子设备可以为移动终端,该实施例可以对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数;构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;获取描边描述信息,并基于所述描边描述信息获取第二运算结果;对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
73.在本公开其中一种实施例中的一种虚拟角色头发渲染方法可以运行于终端设备或者是服务器。其中,终端设备可以为本地终端设备。当虚拟角色头发渲染方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器和客户端设备。
74.在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,虚拟角色头发渲染方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,终端、电视机、计算机、掌上电脑等;但是进行虚拟角色头发渲染的终端设备为云端的云游戏服务器。在进行游戏时,用户操作客户端设备向云游戏服务器发送操作指令,如触控操作的操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
75.在一可选的实施方式中,终端设备可以为本地终端设备。以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与用户进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给用户的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给用户。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面
以及控制图形用户界面在显示屏上的显示。
76.游戏场景(或称为虚拟场景)是应用程序在终端或服务器上运行时显示(或提供)的虚拟场景。可选地,该虚拟场景是对真实世界的仿真环境,或者是半仿真半虚构的虚拟环境,或者是纯虚构的虚拟环境。虚拟场景是二维虚拟场景和三维虚拟场景中的任意一种,虚拟环境可以为天空、陆地、海洋等,其中,该陆地包括沙漠、城市等环境元素。其中,虚拟场景为用户控制等虚拟对象完整游戏逻辑的场景,例如,对于沙盒类3d射击游戏中,虚拟场景为用于供用户控制虚拟对象进行对战的3d游戏世界,实例性的虚拟场景可以包括:山川、平地、河流、湖泊、海洋、沙漠、天空、植物、建筑、车辆中的至少一种元素。
77.游戏界面是指通过图形用户界面提供或显示的应用程序对应的界面,该界面中包括供用户进行交互的图形用户界面和游戏画面,该游戏画面是游戏场景的画面。
78.在可选的实施方式中,该ui界面中可以包括游戏控件(如,技能控件、行为控件、功能控件等)、指示标识(如,方向指示标识、角色指示标识等)、信息展示区(如,击杀人数、比赛时间等),或是游戏设置控件(如,系统设置、商店、金币等)。
79.在可选的实施方式中,游戏画面为终端设备显示虚拟场景所对应的显示画面,游戏画面中可以包括在虚拟场景中进行执行游戏逻辑的游戏对象、非虚拟角色(non-player character,npc)、人工智能(artificial intelligence,ai)角色等虚拟对象。
80.例如,在一些实施例中,图形用户界面中显示的内容至少部分地包含游戏场景,其中,游戏场景中包含至少一个游戏对象。
81.在一些实施例中,游戏场景中的游戏对象包括玩家用户操控的虚拟对象,即用户对象。
82.游戏对象是指在虚拟场景中的虚拟对象,包括游戏角色,游戏角色是可被控制的动态对象,即动态的虚拟对象。可选地,该动态对象可以是虚拟人物、虚拟动物、动漫人物等。该虚拟对象是用户通过输入设备进行控制的角色,或者是通过训练设置在虚拟环境对战中的ai,或者是设置在虚拟场景对战中的npc。
83.可选地,该虚拟对象是在虚拟场景中进行竞技的虚拟人物。可选地,该虚拟场景对战中的虚拟对象的数量是预设设置的,或者是根据加入对战的客户端的数量动态确定的,本技术实施例对此不作限定。
84.在一种可能实现方式中,用户能够控制虚拟对象在该虚拟场景中进行游戏行为,游戏行为可以包括移动、施放技能、使用道具、对话等,例如,控制虚拟对象跑动、跳动、爬行等,也能够控制虚拟对象使用应用程序所提供的技能、虚拟道具等与其他虚拟对象进行战斗。
85.虚拟摄像机是游戏场景画面所必需的组件,用于游戏场景画面的呈现,一个游戏场景至少对应一个虚拟摄像机,根据实际需要,可以有两个或两个以上,作为游戏渲染的窗口,为用户捕捉和呈现游戏世界的画面内容,通过设置虚拟摄像机的参数可调整用户观看游戏世界的视角,如第一人称视角、第三人称视角。
86.在一种可选的实施方式中,本发明实施例提供了一种虚拟角色头发渲染方法,通过终端设备提供图形用户界面,其中,终端设备可以是前述提到的本地终端设备,也可以是前述提到的云交互系统中的客户端设备。
87.以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺
序的限定。
88.在本实施例中,提供了一种虚拟角色头发渲染方法,如图1b所示,该方法的具体流程可以包括如下步骤110至步骤170:
89.110、对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值。
90.阴影贴图为反映虚拟角色的头发被虚拟角色的头部装饰物遮挡所形成的阴影的贴图。头部装饰物为位于虚拟角色的头部的、起装饰效果的物体,例如帽子、发卡等。阴影贴图的获取方法将在下文中进行详细描述。
91.预设要求为预先设置的要求。可选地,在一种具体实施方式中,步骤110具体可以包括:对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点为便于描述,不妨设任一着色点为目标着色点,该目标着色点具备自身对应的目标uv坐标值。所述目标着色点归属于目标着色面,所述目标着色面为虚拟角色的头发的三维模型所包括的多个平面中的任一平面。
92.目标着色点为位于目标着色面的任一着色点,目标着色面包括有位于目标着色面顶点位置的三个顶点着色点和位于目标着色点非顶点位置的若干个非顶点着色点。其中,若干个非顶点着色点中的任一非顶点着色点的uv坐标值可以由三个顶点着色点的uv坐标值经插值运算获得。目标着色点可以是顶点着色点,也可以是非顶点着色点。
93.在上述实施方式中,可以通过获取目标uv坐标值,并在阴影贴图确定出与目标uv坐标值对应的像素点的方式来获取阴影采样值,不妨将阴影采样值记为s0。
94.可选地,在一种具体实施方式中,阴影贴图的获取方法具体可以包括如下步骤a1至步骤a4:
95.a1、获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图,其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图。
96.虚拟角色的头部装饰物在虚拟角色的头发形成的阴影大小随虚拟光照的角度变化而变化。通常情况下,虚拟光照与虚拟场景的地平面的夹角越小,则头部装饰物在头发所形成的阴影越大;虚拟光照与虚拟场景的地平面的夹角越大,则头部装饰物在头发所形成的阴影越小。
97.上述步骤可以获取虚拟角色的头部装饰物在虚拟角色的头发所形成的最大阴影所对应的贴图、以及虚拟角色的头部装饰物在虚拟角色的头发所形成的最小阴影所对应的贴图。
98.a2、根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域。
99.可选地,可以将位于最大阴影贴图的最大阴影与位于最小阴影贴图的最小阴影相减,便可以得到中间阴影区域。中间阴影区域为随着虚拟光照的角度变化在完全不展现与全部展现之间变化。
100.a3、对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影
区域进行插值运算,得到插值运算阴影区域;其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界。
101.详情请参见图1c,图1c示出了虚拟角色的若干簇头发的阴影贴图的示意图,图1c中的b区域为上述的最小阴影的区域,图a区域为上述的中间阴影区域,a区域与b区域的组合为上述的最大阴影的区域。中间区域包括有临近最小阴影(即b区域)的第一边界,以及远离最小阴影(即b区域)的第二边界。
102.可选地,根据中间阴影区域的每个像素点与第一边界的距离、以及与第二边界的距离,对中间阴影区域进行插值运算,得到插值运算阴影区域的运算过程可以具体如下:
103.对于中间阴影区域的每个像素点,获取该像素点与第一边界的距离r1以及该像素点与第二边界的距离r2,然后通过公式计算灰度值i。i值越大,则颜色越淡;i值越小,则颜色越深。对于中间阴影区域的每个像素点,利用得到的灰度值对对应的像素点进行灰度值填充,便可以得到插值运算阴影区域。
104.应当理解,计算灰度值可以通过上述公式进行,也可以通过其他运算公式实现,例如,还可以通过计算灰度值i。灰度值的具体计算方式不应该理解为是对本技术的限制。
105.a4、将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
106.通过步骤a3计算得到插值运算阴影区域之后,将插值运算阴影区域与最小阴影贴图组合,便可以得到阴影贴图。
107.在上述的实施方式中,可以先将最大阴影区域与最小阴影区域相减,得到中间阴影区域;然后对中间阴影区域进行插值运算,将中间阴影区域变更为插值运算阴影区域;随后再将插值运算阴影区域与最小阴影区域组合,得到阴影贴图。通过该实施方式得到阴影贴图,运算量较小的同时,也能够得到较好的显示效果。因此,利用该阴影贴图继续执行后续的头发渲染处理,可以较大程度地减少对算力的消耗,从而可以降低运行游戏的终端设备的运算能力要求。
108.120、确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数。
109.光照影响参数为反映虚拟光照对虚拟角色的头发产生的影响的参数。可选地,在一种具体实施方式中,步骤“确定光照影响参数”包括如下步骤121至步骤123:
110.121、获取光照方向向量。
111.光照方向向量为方向与世界空间坐标下的光照方向一致,且模长为1的向量。
112.122、将所述光照方向向量在目标投影面进行投影,得到光照投影向量,其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量构成的投影面。
113.竖直向上方向向量为方向是世界空间坐标下的竖直向上的方向的向量。
114.可以先获取虚拟角色的面朝方向与竖直向上方向向量构成的目标投影面,然后再将光照方向向量在目标投影面上投影,得到光照投影向量。
115.123、根据所述光照投影向量以及所述竖直向上方向向量,计算所述光照影响参数。
116.可以将光照投影向量以及竖直向上方向向量均进行归一化处理,即保持光照投影向量的方向不变,将其模长变为1,得到光照投影归一化向量;以及保持竖直向上方向向量的方向不变,将其模长变为1,得到竖直向上归一化向量。
117.然后再将光照投影归一化向量与竖直向上归一化向量进行点乘,该点乘结果便为光照影响参数,不妨将光照影响参数记为fdotl。
118.在上述的实施方式中,在计算光照影响参数的过程中,可以令光照影响参数受到光照方向、虚拟角色面朝方向的影响,从而可以在渲染过程中,使得光照影响参数对虚拟角色的头发的影响更加自然。
119.可选地,在一种具体实施方式中,步骤“确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数”包括如下步骤:
120.可以根据公式s=step(fdotl,s0)计算遮挡阴影系数s,其中,fdotl为光照影响参数,s0为阴影采样值。
121.130、构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线。
122.可选地,在一种具体实施方式中,步骤130包括如下步骤131至步骤133:
123.131、生成所述虚拟角色的头发对应的外接球体,其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合。
124.生成的外接球体的球心可以与虚拟角色的头颅的中心重合。
125.应当理解的是,由于虚拟角色的头发可能长短不一,而外接球体的半径是相同的,因此虚拟角色的头发的多个顶点中的部分顶点可以与外接球体的表面相接触,也可以是虚拟角色的头发的全部顶点均不与外接球体的表面相接触,还可以是虚拟角色的头发的全部顶点均与外接球体的表面相接触。虚拟角色的头发的顶点是否与外接球体的表面相接触不应该理解为是对本技术的限制。
126.132、从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点。
127.133、对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
128.在上述的实施方式中,可以通过从外接球体的中心向虚拟角色的头发的多个顶点中的每个顶点做射线的方式,获取每条射线与外接球体的表面的交点。通过做射线的方式建立起了多个顶点与外接球体的表面的多个交点之间的一一对应关系。随后,对于多个交点中的每个交点,可以分别计算每个交点的法线,并将计算出的交点的法线作为该交点对应的顶点的法线。
129.在上述的实施方式中,可以先设置与虚拟角色的头颅同中心的外接球体,并得到虚拟角色的头发的多个顶点,然后再通过做射线的方式,得到上述每个顶点位置的法线,并将该法线作为对应顶点的法线。通过设置外接球体的方式来重新确定虚拟角色的头发的多个顶点中每个顶点的法线,可以令法线的计算更加精确。
130.140、根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数。
131.每个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的多个着色点
中的每个着色点。光照系数为反映相应着色点受虚拟光照影响的系数。可选地,在一种具体实施方式中,步骤140具体可以包括如下步骤141至步骤144:
132.141、将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系下,并进行归一化处理,得到每个着色点分别对应的法线向量。
133.142、对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果。
134.每个着色点对应的法线向量为方向是对应着色点的法线方向、模长为1的向量。对于每个着色点,计算法线向量与光照方向向量的点乘,便可以得到每个着色点分别对应的点乘结果,该点乘结果可以用ndotl表示。
135.143、对于每个着色点对应的点乘结果,对所述点乘结果进行平滑阶梯函数处理,得到初选光照系数。
136.可选地,可以根据公式li=smoothstep(m-s,m+s,ndotl)计算初选光照系数li,其中,m与s均为预先设定的系数。
137.144、对于每个着色点对应的初选光照系数,获取所述初选光照系数与所述遮挡阴影系数的较小值,所述较小值为所述光照系数。
138.对于每个着色点,可以进行该着色点的初选光照系数li与遮挡阴影系数s的数值比较,并将两者之中的数值较小的一方作为该着色点的光照系数i,例如,可以根据公式i=min(li,s)计算该着色点的光照系数i。
139.对每个着色点均执行上述步骤,从而可以得到每个着色点分别对应的光照系数。
140.在上述实施方式中,在进行每个着色点分别对应的光照系数的计算时,可以引入光照方向、遮挡阴影系数以及该着色点的法线方向的影响,从而可以在渲染过程中,使得每个着色点分别对应的光照系数对虚拟角色的头发的影响更加自然。
141.150、获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果。
142.颜色采样值为目标uv坐标值在颜色贴图中对应的像素点,高光采样值为目标uv坐标值在高光贴图中对应的像素点。通过获取目标uv坐标值在不同性质的贴图中对应的像素点,便可以获得对应性质的采样值。可选地,在一种具体实施方式中,步骤“获取每个着色点的颜色采样值以及高光采样值”具体可以包括如下步骤151至步骤152:
143.151、对于每个着色点,获取所述着色点的uv坐标值在颜色贴图中对应的像素点,其中,该像素点为所述颜色采样值。
144.152、对于每个着色点,获取所述着色点uv坐标值在高光贴图中对应的像素点,其中,该像素点为所述高光采样值。
145.可选地,在一种具体实施方式中,步骤“根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果”具体可以包括如下步骤153至步骤156:
146.153、计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积。
147.颜色参数值以及颜色强度值可以由美工人员人为设置。通过计算颜色参数值、颜色强度值以及颜色采样值的连乘结果,便可以得到第一乘积。
148.154、计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积。
149.高光颜色值以及高光强度值可以由美工人员人为设置。通过计算高光颜色值、高光强度值以及高光采样值的连乘结果,便可以得到第二乘积。
150.155、计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果。
151.156、将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
152.其中,上述的步骤153至步骤156可以对每个着色点均执行。在分别获取第一乘积以及第二乘积之后,便可以获取两者的加和,得到乘积加和结果。对于每个着色点,可以将该着色点对应的光照系数与上述的乘积加和结果相乘,从而可以得到该着色点对应的第一运算结果,进而可以得到每个着色点分别对应的第一运算结果。
153.在上述实施方式中,对于每个着色点,在计算第一运算结果时,分别引入了颜色参数值、颜色强度值、颜色采样值、高光颜色值、高光强度值、高光采样值、以及每个着色点分别对应的光照系数的影响,从而可以在渲染过程中,使得每个着色点分别对应的第一运算结果对虚拟角色的头发的影响更加自然。
154.160、获取描边描述信息,并基于所述描边描述信息获取第二运算结果。
155.描边描述信息为反映:因美工人员对虚拟角色的头发的描边、而对虚拟角色的头发产生的影响的信息。可选地,在一种具体实施方式中,步骤“获取描边描述信息”具体可以包括如下步骤161至步骤162:
156.161、获取完成预设处理的虚拟角色的头发的三维模型,其中,完成预设处理的所述虚拟角色的头发的三维模型中的每缕头发的边缘区域为第一颜色、中心区域为第二颜色。
157.预设处理为对虚拟角色的头发的三维模型中的每缕头发进行分区域上色的处理过程。具体的,可以将虚拟角色的头发的三维模型中的每缕头发的中心区域上色为第二颜色,将每缕头发的边缘区域上色为第一颜色。该上色过程可以由美工人员人工完成,也可以由预先设置的上色程序执行。
158.不妨设第二颜色为黑色,第一颜色为白色。详情请参见图1d和图1e,图1d示出了未进行预设处理的虚拟角色的头发的三维模型,图1e示出了进行过预设处理的虚拟角色的头发的三维模型。
159.162、对于所述每缕头发的第一颜色所属区域的每个像素点,根据像素点与所属缕头发的中心区域的距离、以及所述像素点与所属缕头发的边线的距离,对该缕头发的所述第一颜色所属区域进行插值运算,得到所述描边描述信息。
160.对于每缕头发的第一颜色所属区域的每个像素点,均可以根据该像素点与所属缕头发的中心区域的距离、以及该像素点与所属缕头发的边线的距离,进行插值运算。可选地,插值运算过程可以如下:
161.根据公式计算灰度值j。j值越大,则颜色越淡;j值越小,则颜色越深。r3为该像素点与所属缕头发的中心区域的距离,r4为该像素点与所属缕头发的边线的距离。对于第一颜色所属区域的每个像素点,利用得到的灰度值对对应的像素点进行灰度值填充,便可以得到描边描述信息mdotl。
162.应当理解,计算灰度值可以通过上述公式进行,也可以通过其他运算公式实现,例如,还可以通过计算灰度值j。灰度值的具体计算方式不应该理解为是对本技术的限制。
163.可选地,在一种具体实施方式中,步骤“基于所述描边描述信息获取第二运算结果”具体可以包括如下步骤163至步骤164:
164.163、对所述描边描述信息与描边粗细参数进行阶梯函数运算,得到描边运算结果。
165.描边粗细参数为美工人员人工设置的参数,不妨将描边粗细参数记为ol。则具体根据公式os=step(mdotl,ol)计算描边运算结果os。其中,mdotl为描边描述信息,ol为描边粗细参数。
166.164、计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
167.描边颜色值以及描边强度值可以由美工人员人为设置。通过计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,便可以得到第二运算结果。
168.在上述的实施方式中,在进行第二运算结果的运算时,引入了描边描述信息、描边粗细参数、描边颜色值以及描边强度值的影响。其中,描边描述信息的计算过程对终端设备的运算能力要求较低,因此使得第二运算结果的计算过程消耗的运算资源较好,从而可以降低对运行游戏的终端设备的运算能力的要求。
169.170、对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
170.对于虚拟角色的头发的三维模型所包括的多个平面对应的多个着色点中的每个着色点,均可以执行上述的步骤110至步骤170的运算过程,从而可以得到虚拟角色的头发的三维模型所包括的多个平面对应的多个第一运算结果,并将多个第一运算结果分别与第二运算结果相加,便可以得到虚拟角色的头发的三维模型所包括的多个平面对应的多个加和结果,从而实现虚拟角色的头发的三维模型的渲染过程。
171.本技术实施例提供的虚拟角色头发渲染方法中,对于多个着色点中的每个着色点,可以从阴影贴图中获取满足预设要求的阴影采样值;然后确定光照影响参数,并基于光照影响参数以及每个着色点的阴影采样值计算每个着色点的遮挡阴影系数。本技术实施例还可以计算虚拟角色的头发的多个顶点分别对应的法线,并依据上述多个顶点分别对应的法线、光照方向向量以及每个着色点的遮挡阴影系数,计算每个着色点分别对应的光照系数,进而再结合每个着色点的颜色采样值、高光采样值,得到每个着色点分别对应的第一运算结果。本技术实施例还可以基于描边描述信息获取到第二运算结果,并将第二运算结果分别与每个着色点分别对应的第一运算结果相加,得到每个着色点分别对应的加和结果,并根据上述加和结果对虚拟角色的头发的三维模型进行渲染。在本技术中,在计算每个着色点分别对应的光照系数时,依据了对应着色点的遮挡阴影系数、光照方向向量以及虚拟角色的头发的多个顶点分别对应的法线,并且在计算出每个着色点分别对应的光照系数之后,结合每个着色点的颜色采样值、高光采样值以及描边描述信息,最终计算出了每个着色
点分别对应的加和结果。在引入上述多个方面的系数后,可以使得虚拟角色的头发的渲染随虚拟角色的移动而形成自然的位移。
172.在本技术中,可以增加虚拟角色的头发的真实感。
173.根据上述实施例所描述的方法,以下将作进一步详细说明。
174.在本实施例中,将以阴影采样值是s0、光照投影向量是l’、竖直向上方向向量是f、光照影响参数是fdotl、遮挡阴影系数是s、点乘结果是ndotl、初选光照系数是li、光照系数是i为例,对本技术实施例的方法进行详细说明。
175.如图2所示,一种虚拟角色头发渲染方法具体流程如下:
176.201、获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图。
177.其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图。
178.202、根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域。
179.203、对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影区域进行插值运算,得到插值运算阴影区域。
180.其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界。
181.204、将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
182.205、获取目标uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为阴影采样值s0。
183.为便于描述,不妨设任一着色点为目标着色点,该目标着色点具备自身对应的目标uv坐标值。所述目标uv坐标值为目标着色点对应的坐标值,所述目标着色点归属于目标着色面,所述目标着色面为虚拟角色的头发的三维模型所包括的多个平面中的任一平面。
184.206、获取光照方向向量,并将所述光照方向向量在目标投影面投影,得到光照投影向量l’。
185.其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量f构成的投影面。
186.207、根据所述光照投影向量l’以及所述竖直向上方向向量f,计算所述光照影响参数fdotl。
187.208、根据公式s=step(fdotl,s0)计算遮挡阴影系数s,其中,fdotl为光照影响参数,s0为阴影采样值。
188.209、生成所述虚拟角色的头发对应的外接球体。
189.其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合。
190.210、从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点。
191.211、对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
192.212、将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系
下,并进行归一化处理,得到每个着色点分别对应的法线向量。
193.213、对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果ndotl。
194.214、根据公式li=smoothstep(m-s,m+s,ndotl)计算初选光照系数li,其中,m与s均为预先设定的系数。
195.215、根据公式i=min(li,s)计算每个着色点的光照系数i,其中,s为遮挡阴影系数,li为初选光照系数。
196.216、获取目标uv坐标值在颜色贴图中对应的像素点,该像素点为所述颜色采样值;获取目标uv坐标值在高光贴图中对应的像素点,该像素点为所述高光采样值。
197.217、对于每个着色点,计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积;计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积;计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果;将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
198.218、获取描边描述信息,并基于所述描边描述信息获取第二运算结果。
199.在一种具体实施方式中,步骤218具体可以包括如下步骤:
200.获取完成预设处理的虚拟角色的头发的三维模型,其中,完成预设处理的所述虚拟角色的头发的三维模型中的每缕头发的边缘区域为第一颜色、中心区域为第二颜色;
201.对于所述每缕头发的第一颜色所属区域的每个像素点,根据像素点与所属缕头发的中心区域的距离、以及所述像素点与所属缕头发的边线的距离,对该缕头发的所述第一颜色所属区域进行插值运算,得到所述描边描述信息;
202.对所述描边描述信息与描边粗细参数进行阶梯函数运算,得到描边运算结果;
203.计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
204.219、对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
205.由上可知,本技术实施例可以从阴影贴图中获取满足预设要求的阴影采样值;然后确定光照影响参数,并基于光照影响参数以及阴影采样值计算遮挡阴影系数。本技术实施例还可以计算虚拟角色的头发的多个顶点分别对应的法线,并依据上述多个顶点分别对应的法线、光照方向向量以及遮挡阴影系数,计算每个着色点分别对应的光照系数,进而再结合颜色采样值、高光采样值,得到每个着色点分别对应的第一运算结果。本技术实施例还可以基于描边描述信息获取到第二运算结果,并将第二运算结果分别与每个着色点分别对应的第一运算结果相加,得到每个着色点分别对应的加和结果,并根据上述加和结果对虚拟角色的头发的三维模型进行渲染。在本技术中,在计算每个着色点分别对应的光照系数时,依据了遮挡阴影系数、光照方向向量以及虚拟角色的头发的多个顶点分别对应的法线,并且在计算出每个着色点分别对应的光照系数之后,结合颜色采样值、高光采样值以及描边描述信息,最终计算出了每个着色点分别对应的加和结果。在引入上述多个方面的系数后,可以使得虚拟角色的头发的渲染随虚拟角色的移动而形成自然的位移。
206.在本技术中,可以增加虚拟角色的头发的真实感。
207.为了更好地实施以上方法,本技术实施例还提供一种虚拟角色头发渲染装置,该虚拟角色头发渲染装置具体可以集成在电子设备中,该电子设备可以为终端。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备。
208.比如,在本实施例中,将以虚拟角色头发渲染装置具体集成在终端为例,对本技术实施例的装置进行详细说明。
209.例如,如图3所示,该虚拟角色头发渲染装置可以包括:
210.像素点获取单元301,用于对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;
211.光照参数确定单元302,用于确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数;
212.法线获取单元303,用于构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;
213.光照系数计算单元304,用于根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;
214.第一结果获取单元305,用于获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;
215.第二结果获取单元306,用于获取描边描述信息,并基于所述描边描述信息获取第二运算结果;
216.加和结果获取单元307,用于对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
217.在一些实施例中,像素点获取单元301,具体用于:对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点。
218.在一些实施例中,光照参数确定单元302,包括:
219.光照向量子单元,用于获取光照方向向量;
220.投影向量子单元,用于将所述光照方向向量在目标投影面进行投影,得到光照投影向量,其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量构成的投影面;
221.影响参数计算子单元,用于根据所述光照投影向量以及所述竖直向上方向向量,计算所述光照影响参数。
222.在一些实施例中,法线获取单元303,包括:
223.外接球子单元,用于生成所述虚拟角色的头发对应的外接球体,其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合;
224.角点获取子单元,用于从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点;
225.法线计算子单元,用于对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
226.在一些实施例中,光照系数计算单元304,包括:
227.法线转换子单元,用于将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系下,并进行归一化处理,得到每个着色点分别对应的法线向量;
228.点乘结果子单元,用于对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果;
229.初选参数子单元,用于对于每个着色点对应的点乘结果,对所述点乘结果进行平滑阶梯函数处理,得到初选光照系数;
230.光照系数确定子单元,用于对于每个着色点对应的初选光照系数,获取所述初选光照系数与所述遮挡阴影系数的较小值,所述较小值为所述光照系数。
231.在一些实施例中,第一结果获取单元305,包括:
232.颜色采样子单元,用于对于每个着色点,获取所述着色点的uv坐标值在颜色贴图中对应的像素点,其中,该像素点为所述颜色采样值;
233.高光采样子单元,用于对于每个着色点,获取所述着色点uv坐标值在高光贴图中对应的像素点,其中,该像素点为所述高光采样值。
234.在一些实施例中,第一结果获取单元305,还包括:
235.第一乘积子单元,用于计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积;
236.第二乘积子单元,用于计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积;
237.加和结果子单元,用于计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果;
238.第一结果子单元,用于将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
239.在一些实施例中,第二结果获取单元306,包括:
240.三维模型子单元,用于获取完成预设处理的虚拟角色的头发的三维模型,其中,完成预设处理的所述虚拟角色的头发的三维模型中的每缕头发的边缘区域为第一颜色、中心区域为第二颜色;
241.描边区域子单元,用于对于所述每缕头发的第一颜色所属区域的每个像素点,根据像素点与所属缕头发的中心区域的距离、以及所述像素点与所属缕头发的边线的距离,对该缕头发的所述第一颜色所属区域进行插值运算,得到所述描边描述信息。
242.在一些实施例中,第二结果获取单元306,还包括:
243.描边运算子单元,用于对所述描边描述信息与描边粗细参数进行阶梯函数运算,得到描边运算结果;
244.连乘运算子单元,用于计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
245.在一些实施例中,所述装置还包括:
246.大小阴影获取单元,用于获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图,其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响
下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图;
247.中间阴影计算单元,用于根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域;
248.插值运算阴影单元,用于对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影区域进行插值运算,得到插值运算阴影区域;其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界;
249.阴影组合单元,用于将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
250.具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
251.由上可知,在本技术中,在计算每个着色点分别对应的光照系数时,依据了遮挡阴影系数、光照方向向量以及虚拟角色的头发的多个顶点分别对应的法线,并且在计算出每个着色点分别对应的光照系数之后,结合颜色采样值、高光采样值以及描边描述信息,最终计算出了每个着色点分别对应的加和结果。在引入上述多个方面的系数后,可以使得虚拟角色的头发的渲染随虚拟角色的移动而形成自然的位移。
252.本技术实施例可以增加虚拟角色的头发的真实感。
253.本技术实施例还提供一种电子设备,该电子设备可以为终端、服务器等设备。其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑,等等;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,等等。
254.在一些实施例中,该虚拟角色头发渲染装置还可以集成在多个电子设备中,比如,虚拟角色头发渲染装置可以集成在多个服务器中,由多个服务器来实现本技术的虚拟角色头发渲染方法。
255.在本实施例中,将以本实施例的电子设备是电子设备为例进行详细描述,比如,如图4所示,其示出了本技术实施例所涉及的电子设备的结构示意图,具体来讲:
256.该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403、输入模块404以及通信模块405等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
257.处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。在一些实施例中,处理器401可包括一个或多个处理核心;在一些实施例中,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
258.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程
序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
259.电子设备还包括给各个部件供电的电源403,在一些实施例中,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
260.该电子设备还可包括输入模块404,该输入模块404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
261.该电子设备还可包括通信模块405,在一些实施例中通信模块405可以包括无线模块,电子设备可以通过该通信模块405的无线模块进行短距离无线传输,从而为用户提供了无线的宽带互联网访问。比如,该通信模块405可以用于帮助用户收发电子邮件、浏览网页和访问流式媒体等。
262.尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
263.对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数;构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;获取描边描述信息,并基于所述描边描述信息获取第二运算结果;对于每个着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
264.可选地,所述对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,包括:对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点。
265.在上述实施方式中,可以通过获取目标uv坐标值,并在阴影贴图确定出与目标uv坐标值对应的像素点的方式来获取阴影采样值,不妨将阴影采样值记为s0。
266.可选地,所述确定光照影响参数,包括:获取光照方向向量;将所述光照方向向量
在目标投影面进行投影,得到光照投影向量,其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量构成的投影面;根据所述光照投影向量以及所述竖直向上方向向量,计算所述光照影响参数。
267.在上述的实施方式中,在计算光照影响参数的过程中,可以令光照影响参数受到光照方向、虚拟角色面朝方向的影响,从而可以在渲染过程中,使得光照影响参数对虚拟角色的头发的影响更加自然。
268.可选地,所述构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线,包括:生成所述虚拟角色的头发对应的外接球体,其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合;从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点;对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
269.在上述的实施方式中,可以先设置与虚拟角色的头颅同中心的外接球体,并得到外接球体的表面与虚拟角色的头发的多个顶点相接触的位置,然后再通过做射线的方式,得到上述每个相接触的位置的法线,并将该法线作为对应顶点的法线。通过设置外接球体的方式来重新确定虚拟角色的头发的多个顶点中每个顶点的法线,可以令法线的计算更加精确。
270.可选地,所述根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数,包括:将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系下,并进行归一化处理,得到每个着色点分别对应的法线向量;对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果;对于每个着色点对应的点乘结果,对所述点乘结果进行平滑阶梯函数处理,得到初选光照系数;对于每个着色点对应的初选光照系数,获取所述初选光照系数与所述遮挡阴影系数的较小值,所述较小值为所述光照系数。
271.在上述实施方式中,在进行每个着色点分别对应的光照系数的计算时,可以引入光照方向、遮挡阴影系数以及该着色点的法线方向的影响,从而可以在渲染过程中,使得每个着色点分别对应的光照系数对虚拟角色的头发的影响更加自然。
272.可选地,所述根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果,包括:对于每个着色点:计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积;计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积;计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果;将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
273.在上述实施方式中,对于每个着色点,在计算第一运算结果时,分别引入了颜色参数值、颜色强度值、颜色采样值、高光颜色值、高光强度值、高光采样值、以及每个着色点分别对应的光照系数的影响,从而可以在渲染过程中,使得每个着色点分别对应的第一运算结果对虚拟角色的头发的影响更加自然。
274.可选地,所述基于所述描边描述信息获取第二运算结果,包括:对所述描边描述信
息与描边粗细参数进行阶梯函数运算,得到描边运算结果;计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
275.在上述的实施方式中,在进行第二运算结果的运算时,引入了描边描述信息、描边粗细参数、描边颜色值以及描边强度值的影响。其中,描边描述信息的计算过程对终端设备的运算能力要求较低,因此使得第二运算结果的计算过程消耗的运算资源较好,从而可以降低对运行游戏的终端设备的运算能力的要求。
276.可选地,在所述对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点之前,所述方法还包括:获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图,其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图;根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域;对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影区域进行插值运算,得到插值运算阴影区域;其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界;将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
277.在上述的实施方式中,可以先将最大阴影区域与最小阴影区域相减,得到中间阴影区域;然后对中间阴影区域进行插值运算,将中间阴影区域变更为插值运算阴影区域;随后再将插值运算阴影区域与最小阴影区域组合,得到阴影贴图。通过该实施方式得到阴影贴图,运算量较小的同时,也能够得到较好的显示效果。因此,利用该阴影贴图继续执行后续的头发渲染处理,可以较大程度地减少对算力的消耗,从而可以降低运行游戏的终端设备的运算能力要求。
278.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
279.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
280.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术实施例所提供的任一种虚拟角色头发渲染方法中的步骤。例如,该指令可以执行如下步骤:
281.对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,其中,所述多个着色点为虚拟角色的头发的三维模型所包括的多个平面对应的着色点,所述满足预设要求的像素点记为阴影采样值;确定光照影响参数,并根据所述光照影响参数以及每个着色点的阴影采样值,计算每个着色点的遮挡阴影系数;构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线;根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数;获取每个着色点的颜色采样值以及高光采样值,并根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果;获取描边描述信息,并基于所述描边描述信息获取第二运算结果;对于每个
着色点分别对应的第一运算结果,获取所述第一运算结果与所述第二运算结果的加和结果,并根据每个着色点分别对应的加和结果对所述虚拟角色的头发的三维模型进行渲染,得到渲染结果。
282.可选地,所述对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点,包括:对于每个着色点,获取所述着色点的uv坐标值在所述阴影贴图中对应的像素点,其中,该像素点为满足预设要求的像素点。
283.在上述实施方式中,可以通过获取目标uv坐标值,并在阴影贴图确定出与目标uv坐标值对应的像素点的方式来获取阴影采样值,不妨将阴影采样值记为s0。
284.可选地,所述确定光照影响参数,包括:获取光照方向向量;将所述光照方向向量在目标投影面进行投影,得到光照投影向量,其中,所述目标投影面为虚拟角色的面朝方向与竖直向上方向向量构成的投影面;根据所述光照投影向量以及所述竖直向上方向向量,计算所述光照影响参数。
285.在上述的实施方式中,在计算光照影响参数的过程中,可以令光照影响参数受到光照方向、虚拟角色面朝方向的影响,从而可以在渲染过程中,使得光照影响参数对虚拟角色的头发的影响更加自然。
286.可选地,所述构建用于包裹虚拟角色的头发的外接球体,获取所述外接球体表面与所述虚拟角色的头发的顶点相对应位置的法线,并将所述法线作为相应的临近顶点的法线,包括:生成所述虚拟角色的头发对应的外接球体,其中,所述外接球体的中心与所述虚拟角色的头颅的中心重合;从所述外接球体的中心向所述虚拟角色的头发的多个顶点中的每个顶点做射线,获取每条射线与所述外接球体的表面的交点;对于多个交点中的每个交点,计算每个交点位置的法线,并将每个交点位置的法线分别作为与各交点临近的各顶点的法线。
287.在上述的实施方式中,可以先设置与虚拟角色的头颅同中心的外接球体,并得到外接球体的表面与虚拟角色的头发的多个顶点相接触的位置,然后再通过做射线的方式,得到上述每个相接触的位置的法线,并将该法线作为对应顶点的法线。通过设置外接球体的方式来重新确定虚拟角色的头发的多个顶点中每个顶点的法线,可以令法线的计算更加精确。
288.可选地,所述根据每个着色点的遮挡阴影系数、光照方向向量以及所述虚拟角色的头发的多个顶点分别对应的法线,计算每个着色点分别对应的光照系数,包括:将所述虚拟角色的头发的多个顶点分别对应的法线转换到世界空间坐标系下,并进行归一化处理,得到每个着色点分别对应的法线向量;对于每个着色点对应的法线向量,计算所述法线向量与所述光照方向向量的点乘,得到点乘结果;对于每个着色点对应的点乘结果,对所述点乘结果进行平滑阶梯函数处理,得到初选光照系数;对于每个着色点对应的初选光照系数,获取所述初选光照系数与所述遮挡阴影系数的较小值,所述较小值为所述光照系数。
289.在上述实施方式中,在进行每个着色点分别对应的光照系数的计算时,可以引入光照方向、遮挡阴影系数以及该着色点的法线方向的影响,从而可以在渲染过程中,使得每个着色点分别对应的光照系数对虚拟角色的头发的影响更加自然。
290.可选地,所述根据每个着色点的所述颜色采样值、高光采样值、以及每个着色点分别对应的所述光照系数,获取每个着色点分别对应的第一运算结果,包括:对于每个着色
点:计算颜色参数值、颜色强度值与所述颜色采样值的连乘结果,得到第一乘积;计算高光颜色值、高光强度值与所述高光采样值的连乘结果,得到第二乘积;计算所述第一乘积与所述第二乘积的加和,得到乘积加和结果;将所述乘积加和结果与对应的所述光照系数相乘,得到对应的第一运算结果。
291.在上述实施方式中,对于每个着色点,在计算第一运算结果时,分别引入了颜色参数值、颜色强度值、颜色采样值、高光颜色值、高光强度值、高光采样值、以及每个着色点分别对应的光照系数的影响,从而可以在渲染过程中,使得每个着色点分别对应的第一运算结果对虚拟角色的头发的影响更加自然。
292.可选地,所述基于所述描边描述信息获取第二运算结果,包括:对所述描边描述信息与描边粗细参数进行阶梯函数运算,得到描边运算结果;计算描边颜色值、描边强度值与所述描边运算结果的连乘结果,该连乘结果为所述第二运算结果。
293.在上述的实施方式中,在进行第二运算结果的运算时,引入了描边描述信息、描边粗细参数、描边颜色值以及描边强度值的影响。其中,描边描述信息的计算过程对终端设备的运算能力要求较低,因此使得第二运算结果的计算过程消耗的运算资源较好,从而可以降低对运行游戏的终端设备的运算能力的要求。
294.可选地,在所述对于多个着色点中的每个着色点,从阴影贴图中获取满足预设要求的像素点之前,所述方法还包括:获取所述虚拟角色的头发所对应的最大阴影贴图和最小阴影贴图,其中,所述最大阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最大阴影所对应的贴图;所述最小阴影贴图为在虚拟光照影响下,所述虚拟角色的头部装饰物在所述虚拟角色的头发形成的最小阴影所对应的贴图;根据所述最大阴影贴图和所述最小阴影贴图,计算中间阴影区域;对于所述中间阴影区域的每个像素点,根据像素点与所述中间阴影区域的第一边界的距离、以及所述像素点与所述中间阴影区域的第二边界的距离,对所述中间阴影区域进行插值运算,得到插值运算阴影区域;其中,所述第一边界为临近所述最小阴影的边界,所述第二边界为远离所述最小阴影的边界;将所述插值运算阴影区域与所述最小阴影贴图组合,得到所述阴影贴图。
295.在上述的实施方式中,可以先将最大阴影区域与最小阴影区域相减,得到中间阴影区域;然后对中间阴影区域进行插值运算,将中间阴影区域变更为插值运算阴影区域;随后再将插值运算阴影区域与最小阴影区域组合,得到阴影贴图。通过该实施方式得到阴影贴图,运算量较小的同时,也能够得到较好的显示效果。因此,利用该阴影贴图继续执行后续的头发渲染处理,可以较大程度地减少对算力的消耗,从而可以降低运行游戏的终端设备的运算能力要求。
296.其中,该存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
297.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中提供的各种可选实现方式中提供的方法。
298.由于该存储介质中所存储的指令,可以执行本技术实施例所提供的任一种虚拟角色头发渲染方法中的步骤,因此,可以实现本技术实施例所提供的任一种虚拟角色头发渲
染方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
299.以上对本技术实施例所提供的一种虚拟角色头发渲染方法、装置、电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1