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

虚拟模型的渲染方法、装置、设备及存储介质

文献发布时间:2024-04-18 20:02:18


虚拟模型的渲染方法、装置、设备及存储介质

技术领域

本申请涉及图像渲染领域,特别涉及一种虚拟模型的渲染方法、装置、设备及存储介质。

背景技术

随着玩家整体游戏审美水平的提升,为了模拟出更加精美的虚拟模型,就需要对虚拟模型的材质进行改进。

然而随着虚拟模型上的材质种类越来越多,构建虚拟模型时每种类型的材质需要对应一个子虚拟模型,例如针对虚拟服装采用叠加的布料材质和丝绸材质时,需要构建运用布料材质的子服装模型和运用丝绸材质的子服装模型。

运用上述方法设计的虚拟模型在渲染时需要针对每个子虚拟模型分别进行渲染,导致渲染效率不高。

发明内容

本申请提供了一种虚拟模型的渲染方法、装置、设备及存储介质,所述技术方案如下:

根据本申请的一方面,提供了一种虚拟模型的渲染方法,所述方法包括:

获取所述虚拟模型,所述虚拟模型具有混合材质区域,所述混合材质区域是具有第一材质和第二材质混合效果的材质区域,所述第一材质具有各向同性,所述第二材质具有各向异性;

获取所述混合材质区域的材质混合遮罩,所述材质混合遮罩用于指示所述混合材质区域中的所述第一材质和所述第二材质的混合比例;

基于所述材质混合遮罩,计算所述混合材质区域的高光混合效果,所述高光混合效果是所述第一材质和所述第二材质分别对应的高光按照所述混合比例进行混合后的效果;

使用所述高光混合效果对所述混合材质区域进行渲染。

根据本申请的另一方面,提供了一种虚拟模型的渲染装置,所述装置包括:

模型获取模块,用于获取所述虚拟模型,所述虚拟模型具有混合材质区域,所述混合材质区域是具有第一材质和第二材质混合效果的材质区域,所述第一材质具有各向同性,所述第二材质具有各向异性;

遮罩获取模块,用于获取所述混合材质区域的材质混合遮罩,所述材质混合遮罩用于指示所述混合材质区域中的所述第一材质和所述第二材质的混合比例;

高光计算模块,用于基于所述材质混合遮罩,计算所述混合材质区域的高光混合效果,所述高光混合效果是所述第一材质和所述第二材质分别对应的高光按照所述混合比例进行混合后的效果;

高光渲染模块,用于使用所述高光混合效果对所述混合材质区域进行渲染。

根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括:处理器和存储器,所述存储器中存储有至少一段程序;所述处理器,用于执行所述存储器中的所述至少一段程序以实现上述虚拟模型的渲染方法。

根据本申请的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有可执行指令,所述可执行指令由处理器加载并执行以实现上述虚拟模型的渲染方法。

根据本申请的另一方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,处理器从所述计算机可读存储介质读取并执行所述计算机指令,以实现上述虚拟模型的渲染方法。

本申请提供的技术方案带来的有益效果至少包括:

上述方案运用材质混合遮罩来实现对一个虚拟模型叠加两种材质的高光混合效果,通过材质混合遮罩来指示虚拟模型中需要进行材质混合的混合材质区域中两种材质的混合比例,根据不同的混合比例来展示材质混合的效果,通过这样的方式来实现材质混合的虚拟模型在渲染时仅需要针对该虚拟模型进行渲染,而不是对采用了不同材质的子模型进行多次渲染,能够提高渲染效率,节省终端设备开销。

附图说明

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

图1示出了本申请一个示例性实施例提供的计算机系统的示意图;

图2示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图3示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图4示出了本申请一个示例性的各向同性高光和各向异性高光对比的示意图;

图5示出了本申请一个示例性的各向同性高光和各向异性高光对比的示意图;

图6示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图7示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图8示出了本申请一个示例性的灰度值计算方法的示意图;

图9示出了本申请一个示例性的不同变化类型的灰度值构成的灰度图的示意图;

图10示出了本申请一个示例性的虚拟模型渲染时使用的向量的示意图;

图11示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图12示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图13示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图14示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图15示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图16示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图17示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图;

图18示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的示意图;

图19示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的示意图;

图20示出了本申请一个示例性实施例提供的虚拟模型的渲染装置的结构框图;

图21示出了本申请一个示例性实施例提供的计算机设备的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本申请涉及的相关名词做出介绍:

材质:定义了虚拟场景中虚拟对象的表面属性。材质能够告知渲染引擎一个表面应该如何与场景中的光线交互,定义了表面的不同方面,包括颜色、反射性、崎岖度、透明度中的至少一个。在对虚拟对象进行渲染时,会采用材质本身的属性、运用到的各种图像和材质表达式作为材质输入进行渲染。

着色器模型(Shading Models):用于指示材质与光源的交互方式。着色器模型可以控制材质对入射光线的反映,即着色器模型可以理解为从入射光线到出射光线的映射函数。渲染引擎往往会提供一些常用的着色器模型,包括:无光照、默认光照、次表面、预整合皮肤、透明图层、双法线图层、次表面轮廓、双面植被、毛发、布料、眼睛、单层水、薄半透明、基于材质表达式中的至少一个。需要说明的是,着色器模型也可以简称为着色模型。

各向性:描述物质任意一点的性质与方向是否相关的性质。物质的性质与方向无关的特性是各向同性(isotropic),物质的性质随方向的不同而不同的特性是各向异性(anisotropic)。例如清澈平静的水是各向同性,因为水的每个部分的属性(密度、压力、温度、折射率质量等等)都与方向无关;而飘忽不定的烟或雾则是各向异性,很明显同个部位不同方向有着不一样的密度或外力。从反射光的角度来看,常见的具有各向同性高光的材质有棉、麻等,具有各向异性高光的材质有丝绸、天鹅绒、金属等。

图1示出了本申请一个示例性实施例提供的计算机系统的示意图。该计算机系统可以包括:终端设备110和服务器120。

终端设备110可以是诸如手机、平板电脑、多媒体播放设备、个人计算机(PersonalComputer,PC)等电子设备。在一些实施例中,终端设备110包括图形处理硬件,图形处理硬件用于处理虚拟模型的渲染过程。可选地,图像处理硬件的类型包括中央处理器(CPU,Central Processing Unit)和图形处理器(GPU,Graphics Processing Unit);终端设备110通过图形计算硬件(Graphics Compute Unit,GCU)计算虚拟模型显示所需要的数据,并完成显示数据的加载、解析和渲染;通过图形输出硬件(Graphics Output Device)将计算得到的图形数据转换为可视化图像,例如,在手机的显示屏幕呈现二维的图像帧。

在一些实施例中,终端设备110中安装运行目标应用程序的客户端130,该目标应用程序可以是图像处理应用程序,也可以是提供有图像处理功能的其他应用程序,本申请对此不作限定。示例性的,客户端130为应用程序、小程序、网页等。客户端130中显示有虚拟模型,用户可以通过客户端130创建、修改、删除虚拟模型。

在一些实施例中,客户端130以独立的渲染客户端的形式安装在终端设备110上,使得终端设备110可以直接通过该渲染客户端实现虚拟模型的渲染,例如,该客户端130可以是unity3D(联合三维),可以是Unreal(Unreal Engine,虚幻引擎),也可以是OpenGL(Open Graphics Library,开放图形库)等。

在一些实施例中,客户端130为安装在终端设备110上的用于提供虚拟模型的应用客户端,该应用客户端可以是游戏客户端、三维设计客户端等,终端设备110的操作系统的内核层能够提供用于渲染的API(Application Programming Interface,应用程序编程接口)。客户端130能够调用终端设备110提供的API对虚拟模型进行渲染。

服务器120用于为终端设备110内置的客户端130提供后台服务。例如,服务器120可以是上述客户端130的后台服务器。服务器120可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。

终端设备110与服务器120之间,可通过网络进行互相通信。该网络可以是有线网络,也可以是无线网络。

需要说明的是,在一些实施例中,服务器110和终端设备120是同一台设备。

图2示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图,所述方法由终端设备执行,该终端设备可以是如图1中所示的终端设备。该方法包括:

步骤210:获取虚拟模型,虚拟模型具有混合材质区域,混合材质区域是具有第一材质和第二材质混合效果的材质区域,第一材质具有各向同性,第二材质具有各向异性;

在一些实施例中,虚拟模型包括虚拟服装、虚拟场景、虚拟人物、虚拟物体中的至少一个。

示例性的,虚拟模型为全部区域或局部区域混合了布料材质和丝绸材质的虚拟服装,布料材质具有各向同性,丝绸材质具有各向异性;或,虚拟模型为全部区域或局部区域混合了水面材质和烟雾材质的虚拟场景,水面材质具有各向同性,烟雾材质具有各向异性;或,虚拟模型为全部区域或局部区域混合了皮肤材质和毛发材质的虚拟人物,皮肤材质具有各向同性,毛发材质具有各向异性;或,虚拟模型为全部区域或局部区域混合了布料材质和金属材质的虚拟沙发,布料材质具有各向同性,金属材质具有各向异性。

在一些实施例中,第一材质为布料材质,第二材质为丝绸材质。

步骤220:获取混合材质区域的材质混合遮罩,材质混合遮罩用于指示混合材质区域中的第一材质和第二材质的混合比例;

在一些实施例中,材质混合遮罩是虚拟模型的平面展开图;或,材质混合遮罩是混合材质区域的平面展开图;或,材质混合遮罩是虚拟模型的拆解图;或,材质混合遮罩是混合材质区域的拆解图;或,材质混合遮罩是与虚拟模型一致的模型;或,材质混合遮罩是与混合材质区域一致的模型。

示例性的,虚拟模型是虚拟服装,材质混合遮罩是虚拟服装的结构设计图;或,虚拟模型是虚拟服装,材质混合遮罩是虚拟服装的混合材质区域的结构设计图;或,虚拟模型是虚拟服装,材质混合遮罩是虚拟服装的平面展开图;或,虚拟模型是虚拟服装,材质混合遮罩是虚拟服装的混合材质区域的平面展开图;或,虚拟模型是虚拟物体,该虚拟物体是一个正方体,材质混合遮罩是该正方体的平面展开图;或,虚拟模型是虚拟物体,该虚拟物体是一个正方体,材质混合遮罩是该正方体的混合材质区域的平面展开图;或,虚拟模型是虚拟服装,材质混合遮罩是与该虚拟服装一致的模型;或,虚拟模型是虚拟服装,材质混合区域是该虚拟服装的上衣模型,材质混合遮罩是与该虚拟服装的上衣模型一致的模型;或,虚拟模型是虚拟服装,材质混合区域是虚拟服装的腰带区域,材质混合遮罩是显示有该腰带的各个角度的图像组合成的图像。

在一些实施例中,材质混合遮罩为规则图形;或,材质混合遮罩为不规则图形。

示例性的,材质混合遮罩为显示有虚拟模型平面展开图的长方形图像;或,材质混合遮罩为显示有虚拟模型拆解图的圆形图像;或,材质混合遮罩为虚拟模型的平面展开图;或,材质混合遮罩为虚拟模型的三视图。

步骤230:基于材质混合遮罩,计算混合材质区域的高光混合效果,高光混合效果是第一材质和第二材质分别对应的高光按照混合比例进行混合后的效果;

在一些实施例中,虚拟模型具有高光效果,该高光效果是虚拟模型受虚拟光源影响产生的高光。

在一些实施例中,基于材质混合遮罩指示的混合材质区域中的第一材质和第二材质的混合比例,计算混合材质区域的高光混合效果。

示例性的,第一材质和第二材质具有不同的高光效果,当混合材质区域中第一材质的混合比例高于混合材质区域中第二材质的混合比例时,混合材质区域的高光混合效果更接近第一材质的高光效果;当材质混合区域中第二材质的混合比例高于混合材质区域中第一材质的混合比例时,混合材质区域的高光混合效果更接近第二材质的高光效果。例如,第一材质为红色高光,第二材质为蓝色高光,当混合材质区域中仅包含第一材质时,混合材质区域的高光混合效果为红色高光;当混合材质区域中的第一材质和第二材质具有相同的混合比例时,混合材质区域的高光混合效果为紫色高光;当混合材质区域中仅包含第二材质时,混合材质区域的高光混合效果为蓝色高光。

步骤240:使用高光混合效果对混合材质区域进行渲染。

在一些实施例中,根据计算得到的高光混合效果对混合材质区域进行渲染。

综上所述,本实施例提供的方法运用材质混合遮罩来实现对一个虚拟模型叠加两种材质的高光混合效果,通过材质混合遮罩来指示虚拟模型中需要进行材质混合的混合材质区域中两种材质的混合比例,根据不同的混合比例来展示材质混合的效果,通过这样的方式来实现材质混合的虚拟模型在渲染时仅需要针对该虚拟模型进行渲染,而不是对采用了不同材质的子模型进行多次渲染,能够提高渲染效率,节省终端设备开销。

在基于图2的可选实施例中,如图3所示,步骤230可替换实现为步骤231至步骤234。

步骤231:获取第一材质的第一材质高光,以及获取第二材质的第二材质高光,第一材质高光是各向同性高光,第二材质高光是各向异性高光;

在一些实施例中,高光为镜面反射的反射光的光照强度,可以简称为镜面反射反射光光强。

在一些实施例中,不同的材质具有不同的高光,根据材质的各向性划分,可以将高光分为各向同性高光和各向异性高光。

示例性的,如图4和图5所示,有虚拟光源11、材质为第一材质的虚拟物体12、材质为第二材质的虚拟物体13。当虚拟光源11位置如图4所示时,虚拟物体12具有第一材质高光14,虚拟物体13具有第二材质高光15;当虚拟光源11位置如图5所示时,虚拟物体12具有第一材质高光16,虚拟物体13具有第二材质高光17。由于虚拟物体12为第一材质,高光为各向同性高光,因此虚拟物体12具有的第一材质高光14和第一材质高光16的形状、大小与亮度基本一致;由于虚拟物体13为第二材质,高光为各向异性高光,因此虚拟物体13具有的第二材质高光15和第二材质高光会由于虚拟光源11的移动而发生变化。这是由于具有各向同性的材质在各个方向上的法线分布是均匀的,具有各向异性的材质在各个方向的法线分布是不同的。而法线是影响高光光强和高光角度的因素之一。需要说明的是,虚拟光源11从如图4所示的位置移动到如图5所示的位置时,虚拟物体12和虚拟物体13的高光变化仅为了能更清楚的说明各向同性高光与各向异性高光的区别,但对实际渲染时的高光变化不加以限定。

步骤232:基于材质混合遮罩,确定混合材质区域中每个基本渲染单元的第一材质权重和第二材质权重;

其中,基本渲染单元是混合材质区域中用于渲染的基本单元,不同的基本渲染单元对应的第一材质权重相同或不同,同一个基本渲染单元对应的第一材质权重和第二材质权重之和为一。

在一些实施例中,材质混合遮罩显示有混合材质区域中每个基本渲染单元的第一材质权重;或,材质混合遮罩显示有混合材质区域中每个基本渲染单元的第二材质权重;或,基于材质混合遮罩,计算混合材质区域中每个基本渲染单元的第一材质权重和第二材质权重。

在一些实施例中,基本渲染单元是像素;或,基本渲染单元是片元,片元是包含了颜色、深度、法线、纹理坐标等相关信息的点;或,基本渲染单元是图元,图元是由顶点组成的单元,一个点、一条线段、一个三角形或一个多边形都可以称为图元。其中,渲染过程中会将顶点组合成图元;对图元进行裁剪、修改操作后,将三维信息转化为二维图像上的信息,最终将图元转化为片元,二维图像即显示屏幕上的图像;最终会将片元转化为像素,像素即最终显示在屏幕上的像素点。需要说明的是,本申请实施例以基本渲染单元为片元来举例说明,但对基本渲染单元的具体表现形式不加以限定。

步骤233:计算第一材质高光与第一材质权重的第一乘积,以及第二材质高光与第二材质权重的第二乘积;

在一些实施例中,分别计算第一材质高光与第一材质权重的乘积以及第二材质高光与第二材质权重的乘积。

在一些实施例中,计算混合材质区域中第一材质对应的每个基本渲染单元的第一材质高光与第一材质权重的第一乘积,以及第二材质高光与第二材质权重的第二乘积。

步骤234:基于第一乘积和第二乘积,计算混合材质区域的高光混合效果。

在一些实施例中,基于混合材质区域中每个基本渲染单元的第一乘积和第二乘积,计算混合材质区域的高光混合效果;或,基于混合材质区域中每个基本渲染单元的第一乘积和第二乘积,计算混合材质区域中每个基本渲染单元的高光混合效果,再将每个基本渲染单元的高光混合效果进行融合,得到混合材质区域的高光混合效果。

在一些实施例中,如图6所示,步骤234可替换实现为步骤2341。

步骤2341:计算每个基本渲染单元的第一乘积和第二乘积之和,得到混合材质区域的高光混合效果。

综上所述,本申请实施例提供的方法示出了根据材质混合遮罩来计算混合材质区域的高光混合效果的方法,根据材质混合遮罩来确认第一材质高光和第二材质高光的混合比例,能够更加合理的计算混合材质区域的高光混合效果。

在基于图3的可选实施例中,如图7所示,步骤232可替换实现为步骤2321和步骤2322。

步骤2321:基于材质混合遮罩,确定混合材质区域中的每个基本渲染单元的灰度值;

其中,材质混合遮罩为灰度图,灰度图中灰度值的取值为0到255;或,灰度图中灰度值的取值为0到1;或,灰度图中灰度值的取值为0到65536。需要说明的是,本申请实施例以灰度图中灰度值的取值为0到255来举例说明,但对灰度图中灰度值的取值不加以限定。

在一些实施例中,材质混合遮罩的像素大于基本渲染单元;或,材质混合遮罩的像素不大于基本渲染单元。

在一些实施例中,基本渲染单元的灰度值为与该基本渲染单元最接近的材质混合遮罩的像素点对应的灰度值;或,基本渲染单元的灰度值为与该基本渲染单元相交的材质混合遮罩的像素点的灰度值的平均值;或,基本渲染单元的灰度值为与该基本渲染单元相交的材质混合遮罩的像素点的灰度值的最大值;或,基本渲染单元的灰度值为与该基本渲染单元相交的材质混合遮罩的像素点的灰度值的最小值。

示例性的,如图8所示,正方形区域为部分材质混合遮罩的灰度值,圆形区域为基本渲染单元18在材质混合遮罩中对应的区域。基本渲染单元18的灰度值为与该基本渲染单元18最接近的材质混合遮罩的像素点对应的灰度值,则该基本渲染单元18的灰度值为82;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的材质混合遮罩的像素点的灰度值的平均值,则该基本渲染单元18的灰度值为(41+1+82+46)/4,取值为42.5,四舍五入后为43;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的材质混合遮罩的像素点的灰度值的最大值,则该基本渲染单元18的灰度值为82;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的材质混合遮罩的像素点的灰度值的最小值,则该基本渲染单元18的灰度值为1。

在一些实施例中,用户通过调整材质混合遮罩的灰度值来实现变更混合材质区域中第一材质与第二材质的混合比例。示例性的,材质混合遮罩的灰度值越大,对应的区域的第一材质的混合比例越大,材质混合遮罩的灰度值越小,对应的区域的第一材质的混合比例越小;或,材质混合遮罩的灰度值越大,对应的区域的第二材质的混合比例越大,材质混合遮罩的灰度值越小,对应的区域的第二材质的混合比例越小。需要说明的是,本申请实施例以材质混合遮罩的灰度值越大,对应的区域的第一材质的混合比例越大,材质混合遮罩的灰度值越小,对应的区域的第一材质的混合比例越小来举例说明,但对灰度值大小与第一材质和第二材质混合比例的大小的关系不加以限定。

如图9所示,当灰度值越接近255时,混合材质区域的显示效果越接近第一材质;当灰度值越接近0时,混合材质区域的显示效果越接近第二材质。示意图(1)示出的材质混合遮罩的灰度值均为255,对应的混合材质区域的显示效果为第一材质;示意图(2)示出的材质混合遮罩的灰度值均为0,对应的混合材质区域的显示效果为第二材质;示意图(3)示出的材质混合遮罩的每行的灰度值相等,每列灰度值逐列递减,从255变化为0,对应的混合材质区域的显示效果为由上至下逐渐从第一材质渐变为第二材质;示意图(4)示出的材质混合遮罩的灰度值自左上向右下逐渐增大,从0变化为255,对应的混合材质区域的显示效果为由左上至右下逐渐从第二材质渐变为第一材质。

步骤2322:计算每个基本渲染单元的第一材质权重和第二材质权重。

在一些实施例,分别计算每个基本渲染单元的第一材质权重和第二材质权重,第一材质权重为基本渲染单元的灰度值加一后的和与二百五十六的比值,第二材质权重为一减基本渲染单元的第一材质权重的差;或,第一材质权重为基本渲染单元的灰度值与二百五十五的比值,第二材质权重为一减基本渲染单元的第一材质权重的差。

示例性的,第一材质权重为基本渲染单元的灰度值加一后的和与二百五十六的比值,第二材质权重为一减基本渲染单元的第一材质权重的差;基本渲染单元a1的灰度值为127,则基本渲染单元a1的第一材质权重为(127+1)/256,取值为0.5,第二材质权重为1-0.5,取值为0.5;或,基本渲染单元a2的灰度值为45,则基本渲染单元a2的第一材质权重为(45+1)/256,取值为23/128,第二材质权重为1-23/128,取值为105/128。或,第一材质权重为基本渲染单元的灰度值与二百五十五的比值,第二材质权重为一减基本渲染单元的第一材质权重的差;基本渲染单元a3的灰度值为255,则基本渲染单元a3的第一材质权重为255/255,取值为1,第二材质权重为1-1,取值为0;或,基本渲染单元a4的灰度值为66,则基本渲染单元a4的第一材质权重为66/255,第二材质权重为1-66/255,取值为189/255。

综上所述,本申请实施例提供的方法使用的材质混合遮罩为灰度图,根据材质混合遮罩获取基本渲染单元对应的灰度值,并计算该基本渲染单元的第一材质权重和第二材质权重,能够良好的体现出混合材质区域中的第一材质和第二材质的混合比例,用户可以针对想要获得的第一材质和第二材质的混合效果来设置材质混合遮罩的灰度值,不同的灰度值能够计算得出不同的第一材质和第二材质的混合比例,例如灰度值越大,得到的混合材质区域中的第一材质占比越大,混合材质区域显示出的效果越接近第一材质。因此,可以针对性的设置多样化的材质混合遮罩来实现混合材质区域中第一材质和第二材质的混合效果的多样化展示。

如图10所示,首先说明光照计算中可能会运用到的几个向量。

有一点Q,法线向量N为点Q的法线向量;光照向量L为点Q指向光源的向量;视线向量V为点Q指向观察者眼睛的向量;半角向量H为光照向量L和视线向量V的中间向量。

在一些实施例中,点Q还有切线向量T和副法线向量B。切线向量T为与法线向量N垂直的向量;副法线向量B为与切线向量T和法线向量N都垂直的向量。其中,副法线向量B还可以称为副切线向量。

在基于图3的可选实施例中,如图11所示,步骤231中获取第一材质的第一材质高光可替换实现为步骤310至步骤340。

步骤310:基于各向同性法线分布函数,计算混合材质区域中第一材质对应的每个基本渲染单元的各向同性法线分布;

在一些实施例中,各向同性法线分布函数如下式所示。

其中,R为粗糙度;NH为法线向量和半角向量进行点积的结果。

在一些实施例中,粗糙度的取值为0到1。粗糙度越低,对应的材质表面越光滑,粗糙度越高,对应的材质表面越粗糙。

在一些实施例中,各向同性法线分布函数用于计算与半角向量方向一致的微表面概率。需要说明的是,每个基本渲染单元对应的区域可能包含多个微表面,这些微表面具有不同的朝向,根据各向同性法线分布函数,能够获取到与输入向量H朝向相同的微表面的数量占该基本渲染单元对应的区域的所有微表面数量的比例。

步骤320:基于各向同性阴影遮蔽函数,计算混合材质区域中第一材质对应的每个基本渲染单元的各向同性阴影遮蔽;

在一些实施例中,各向同性阴影遮蔽函数如下式所示。

其中,NV为法线向量和视线向量进行点积的结果;R为粗糙度;NL为法线向量和光照向量进行点积的结果。

在一些实施例中,各向同性阴影遮蔽函数用于计算微表面中由于反射光线被遮蔽而导致未能从光照向量方向反射到视线向量方向的比例。由于各个微表面具有不同的朝向和高度,因此部分微表面可能会挡住从其他微表面反射的光。各向同性阴影遮蔽函数还可以称为各向同性几何函数、各向同性几何衰减因子。

步骤330:基于菲尼尔方程,计算混合材质区域中第一材质对应的每个基本渲染单元的第一菲尼尔;

在一些实施例中,菲尼尔方程如下式所示。

Y=saturate(50*Specular.g)*(1-VH)

其中,VH为视线向量和半角向量进行点积的结果;Specular为材质高光色,Specular是一个三维向量,可以表示为(r,g,b);Specular.g为材质高光色的g项的值,Y为一个三维向量。需要说明的是,Specular可以理解为表面基础反射率,不同的材质具有不同的表面基础反射率。

saturate(x)方法用于将x夹取到[0,1]之间,例如当x大于1时,saturate(x)的结果为1,;当x小于0时,saturate(x)的结果为0;当x在[0,1]之间时,saturate(x)的结果为x。

在一些实施例中,菲尼尔方程用于计算在不同表面下表面反射光线所占的比例。从光学的角度来说,并不是对所有的光线都进行反射,而是反射部分光线,同时还会折射部分光线,其中,光线的反射比例是符合菲尼尔方程的。

步骤340:基于各向同性法线分布、各向同性阴影遮蔽和第一菲尼尔的乘积,计算第一材质高光。

在一些实施例中,基于混合材质区域中第一材质对应的每个基本渲染单元的各向同性法线分布、各向同性阴影遮蔽和第一菲尼尔的乘积,计算混合材质区域中第一材质对应的每个基本渲染单元的第一材质高光。

综上所述,本申请实施例提供的方法给出了第一材质高光的计算方法,采用的方法能够很好的模拟出各向同性高光的效果。

在基于图3的可选实施例中,如图12所示,步骤231中获取第二材质的第二材质高光可替换实现为步骤410至步骤440。

步骤410:基于各向异性法线分布函数,计算混合材质区域中第二材质对应的每个基本渲染单元的各向异性法线分布;

在一些实施例中,各向异性法线分布函数如下式所示。

其中,T为切线方向;B为副法线方向;TH为切线向量和半角向量进行点积的结果;BH为副法线向量和半角向量进行点积的结果;NH为法线向量和半角向量进行点积的结果。

由于各向异性材质在某个点处可能拥有多个法线,因此需要切线向量和副法线向量作为辅助进行计算。

步骤420:基于各向异性阴影遮蔽函数,计算混合材质区域中第二材质对应的每个基本渲染单元的各向异性阴影遮蔽;

在一些实施例中,各向异性阴影遮蔽函数如下式所示。

其中,NL为法线向量和光照向量进行点积的结果;T为切线方向;TV为切线向量和视线向量进行点积的结果;B为副法线方向;BV为副法线向量和视线向量进行点积的结果;NV为法线向量和视线向量进行点积的结果;TL为切线向量和光照向量进行点积的结果;BL为副法线向量和光照向量进行点积的结果。

步骤430:基于菲尼尔方程,计算混合材质区域中第二材质对应的每个基本渲染单元的第二菲尼尔;

在一些实施例中,菲尼尔方程如下式所示。

Y=saturate(50*Specular.g)*(1-VH)

其中,VH为视线向量和半角向量进行点积的结果;Specular为材质高光色,Specular是一个三维向量,可以表示为(r,g,b);Specular.g为材质高光色的g项的值,Y为一个三维向量。需要说明的是,Specular可以理解为表面基础反射率,不同的材质具有不同的表面基础反射率。

saturate(x)方法用于将x夹取到[0,1]之间,例如当x大于1时,saturate(x)的结果为1;当x小于0时,saturate(x)的结果为0;当x在[0,1]之间时,saturate(x)的结果为x。

在一些实施例中,菲尼尔方程用于计算在不同表面下表面反射光线所占的比例。从光学的角度来说,并不是对所有的光线都进行反射,而是反射部分光线,同时还会折射部分光线,其中,光线的反射比例是符合菲尼尔方程的。

步骤440:基于各向异性法线分布、各向异性阴影遮蔽和第二菲尼尔的乘积,计算第二材质高光。

综上所述,本申请实施例提供的方法给出了各向异性高光的计算方法,根据该方法可以很好的模拟出具有各向异性的材质的高光效果。

图13示出了本申请一个示例性实施例提供的虚拟模型的渲染方法的流程图。所述方法还包括步骤250。

步骤250:计算混合材质区域的漫反射光照效果。

在一些实施例中,对虚拟模型进行光照渲染包括高光渲染和漫反射渲染中的至少一种。光照的反射包括高光反射和镜面反射中的至少一种。

在一些实施例中,计算混合材质区域的漫反射光照效果;或,计算虚拟模型的漫反射效果。

在一些可选的实施例中,步骤240可替换实现为步骤241。

步骤241:使用高光混合效果和漫反射光照效果对混合材质区域进行渲染。

在一些实施例中,基于计算得到的高光混合效果和漫反射光照效果,对混合材质区域进行渲染;或,基于计算得到的高光混合效果和漫反射光照效果,对虚拟模型进行渲染。

在一些实施例中,步骤250可以与步骤210、步骤220、步骤231、步骤232、步骤233、步骤234交换顺序或同时执行。

综上所述,本申请实施例提供的方法在光照渲染上不但提供了高光的渲染方法,还提供了漫反射的渲染方法,漫反射能够表现虚拟模型在收到光照后的明暗变化以及颜色,在光照渲染时加入漫反射的渲染,可以使渲染得出的虚拟模型更贴近真实效果,使虚拟模型在渲染时能够有更好的渲染效果。

在基于图13的可选实施例中,如图14所示,步骤250可替换实现为步骤510和步骤520。

步骤510:获取混合材质区域中每个基本渲染单元的漫反射强度、漫反射颜色调节和粗糙度;漫反射强度用于指示漫反射的光照强度;漫反射颜色调节用于指示漫反射的颜色;

其中,漫反射颜色调节为对光照颜色和基础颜色进行计算后获得的颜色,是虚拟模型的混合材质区域展示出的最终颜色。基础颜色为材质混合区域中每个基本渲染单元的颜色。

在一些实施例中,漫反射颜色调节是由光照颜色和基础颜色进行加权求和计算得到的;或,漫反射颜色调节是由光照颜色和基础颜色相乘后计算得到的。

示例性的,颜色由三维坐标(r,g,b)表示,可以理解为rgb分别代表红绿蓝三个通道。rgb的取值可以是0至1,也可以是0至255,本申请以rgb的取值是0至1来举例说明,但对此不加以限定。光照颜色为(1,1,1),基础颜色为(0.2,0.5,0)。漫反射颜色调节是由光照颜色和基础颜色进行加权求和计算得到的,其权值分别为(0.5,0.5,1),因此,漫反射颜色调节为(0.1,0.25,0);或,漫反射颜色调节是由光照颜色和基础颜色相乘后计算得到的,漫反射颜色调节为(0.2,0.5,0)。

步骤520:计算每个基本渲染单元的漫反射强度、漫反射颜色调节和粗糙度的积,得到混合材质区域的漫反射光照效果。

在一些实施例中,计算每个基本渲染单元的漫反射强度、漫反射颜色调节和粗糙度的积,得到每个基本渲染单元的漫反射计算结果,最终得到混合材质区域的漫反射光照效果。漫反射计算结果的计算公式如下式所示。

lightdiffuse=diffusecolor*lightwarp*roughness

其中,lightdiffuse为漫反射计算结果;diffusecolor为漫反射颜色调节;lightwarp为漫反射强度;roughness为粗糙度。

需要说明的是,由于粗糙度的取值会影响漫反射的计算结果,根据测试得到,当粗糙度的取值在0.5到1时,得到的漫反射光照效果更好,因此,漫反射计算结果的计算公式可以优化为以下公式。

lightdiffuse=diffusecolor*lightwarp*lerp(1.0,0.5,roughness)

其中,lerp()为插值方法,lerp(1.0,0.5,roughness)可以理解为1.0*(1-roughness)+0.5*roughness。

在一些可选的实施例中,如图15所示,步骤520可替换实现为步骤521至步骤523。

步骤521:获取混合材质区域中每个基本渲染单元的光照过渡的偏移值强度,光照过渡的偏移值强度用于指示混合材质区域中每个基本渲染单元的明暗变化程度;

在一些实施例中,基本渲染单元具有光照过渡的偏移值强度,该光照过渡的偏移值强度用于指示基本渲染单元的明暗变化程度。由于虚拟模型可能存在遮挡、重叠的情况,因此,每个基本渲染单元不会接收到完整的光照,根据光照遮挡程度的高低,每个基本渲染单元的明暗变化程度不一致,但是明暗变化程度会影响漫反射最终的显示效果。在真实环境中,物体的明暗交界线的颜色是最接近物体本身的颜色,即基础颜色的。因此,在漫反射光照计算时,引入光照过渡的偏移值强度来提高渲染真实性。

在一些实施例中,光照过渡的偏移值强度是根据阴影遮罩获取的,该阴影遮罩用于展示虚拟模型的明暗变化情况;或,光照过渡的偏移值强度是根据数值矩阵获取的;或,光照过渡的偏移值强度是根据阴影贴图获取的,该阴影贴图用于展示虚拟模型的明暗变化情况。本申请实施例以光照过渡的偏移值强度是从阴影遮罩中获取的来举例说明,但对光照过渡的偏移值强度的获取方式不加以限定。

在一些实施例中,阴影遮罩为灰度图,灰度图中灰度值的取值为0到255;或,灰度图中灰度值的取值为0到1;或,灰度图中灰度值的取值为0到65536。需要说明的是,本申请实施例以灰度图中灰度值的取值为0到255来举例说明,但对灰度图中灰度值的取值不加以限定。

在一些实施例中,阴影遮罩的像素大于基本渲染单元;或,阴影遮罩的像素不大于基本渲染单元。

在一些实施例中,基本渲染单元的灰度值为与该基本渲染单元最接近的阴影遮罩的像素点对应的灰度值;或,基本渲染单元的灰度值为与该基本渲染单元相交的阴影遮罩的像素点的灰度值的平均值;或,基本渲染单元的灰度值为与该基本渲染单元相交的阴影遮罩的像素点的灰度值的最大值;或,基本渲染单元的灰度值为与该基本渲染单元相交的阴影遮罩的像素点的灰度值的最小值。

示例性的,如图8所示,正方形区域为部分阴影遮罩的灰度值,圆形区域为基本渲染单元18在阴影遮罩中对应的区域。基本渲染单元18的灰度值为与该基本渲染单元18最接近的阴影遮罩的像素点对应的灰度值,则该基本渲染单元18的灰度值为82;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的阴影遮罩的像素点的灰度值的平均值,则该基本渲染单元18的灰度值为(41+1+82+46)/4,取值为42.5,四舍五入后为43;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的阴影遮罩的像素点的灰度值的最大值,则该基本渲染单元18的灰度值为82;或,基本渲染单元18的灰度值为与该基本渲染单元18相交的阴影遮罩的像素点的灰度值的最小值,则该基本渲染单元18的灰度值为1。

在一些实施例中,用户通过调整阴影遮罩的灰度值来实现变更虚拟模型的明暗变化情况。示例性的,阴影遮罩的灰度值越大,对应的区域越暗,阴影遮罩的灰度值越小,对应的区域越亮;或,阴影遮罩的灰度值越大,对应的区域越亮,阴影遮罩的灰度值越小,对应的区域越暗。需要说明的是,本申请实施例以阴影遮罩的灰度值越大,对应的区域越暗,阴影遮罩的灰度值越小,对应的区域越亮来举例说明,但对灰度值大小与明暗程度的大小的关系不加以限定。

如图9所示,当灰度值越接近255时,虚拟模型对应的区域越暗,即该区域被遮挡或覆盖;当灰度值越接近0时,虚拟模型对应的区域越亮,即该区域接受到的光照越强。示意图(1)示出的阴影遮罩的灰度值均为255,对应的区域被完全遮挡或覆盖;示意图(2)示出的阴影遮罩的灰度值均为0,对应的区域越亮;示意图(3)示出的阴影遮罩的每行的灰度值相等,每列灰度值逐列递减,从255变化为0,对应的区域由上至下逐渐由暗变亮;示意图(4)示出的阴影遮罩的灰度值自左上向右下逐渐增大,从0变化为255,对应的区域为由左上至右下逐渐从亮变暗。

步骤522:获取混合材质区域中每个基本渲染单元的基础漫反射强度;

在一些实施例中,将基础漫反射强度作为基本渲染单元的漫反射强度;或,将基础漫反射强度作为基本渲染单元漫反射强度的参数。

在一些实施例中,获取混合材质区域中每个基本渲染单元的法线向量和光照向量。

在一些实施例中,基于法线向量和光照向量的点积,确定混合材质区域中每个基本渲染单元的基础漫反射强度。

步骤523:基于每个基本渲染单元的光照过渡的偏移值强度和基础漫反射强度,计算混合材质区域中每个基本渲染单元的漫反射强度。

在一些实施例中,基于每个基本渲染单元的光照过渡的偏移值强度为影响因子,根据每个基本渲染单元的基础漫反射强度,计算混合材质区域中每个基本渲染单元的漫反射强度。

综上所述,本申请实施例提供的方法支持为虚拟模型添加漫反射光照效果,在漫反射光照计算时,引入光照过渡的偏移值强度和粗糙度,计算的得到的虚拟模型的漫反射光照效果更贴近现实效果,更加真实。

在基于图15的可选实施例中,如图16所示,步骤523可替换实现为步骤5231至步骤5232-2。

步骤5231:基于光照过渡的偏移值强度和基础漫反射强度,计算混合材质区域中每个基本渲染单元的漫反射强度估计值;

在一些实施例中,基于每个基本渲染单元的光照过渡的偏移值强度和基础漫反射,计算混合材质区域中每个基本渲染单元的漫反射强度估计值。该漫反射强度估计值为基本渲染单元的漫反射强度的理论计算值。由于在真实场景中还存在光线的折射、散射等,漫反射强度估计值无法准确体现漫反射强度,因此设置了漫反射强度阈值。

在一些实施例中,漫反射强度为0时,即该基本渲染单元不存在漫反射,渲染后显示为黑色,与真实效果不符。

步骤5232-1:在漫反射强度估计值大于漫反射强度阈值的情况下,将漫反射强度估计值确定为基本渲染单元的漫反射强度;

在一些实施例中,漫反射强度阈值为预设值;或,漫反射强度阈值为虚拟模型的属性。

示例性的,漫反射强度阈值为预设值,预设值为0.01;或,漫反射强度阈值为虚拟模型的属性,该属性是由虚拟模型的创建者设置的,例如用户在进行虚拟模型的搭建时,设置虚拟模型的漫反射强度阈值为0.01,或,该属性是由虚拟模型所在的环境参数设置的属性,例如,虚拟模型存在于虚拟环境中该虚拟环境添加了滤镜a,滤镜a将在虚拟环境中的虚拟模型的漫反射强度阈值设置为0.05。

在一些实施例中,在漫反射强度估计值大于漫反射强度阈值的情况下,将漫反射强度估计值确定为基本渲染单元的漫反射强度。

步骤5232-2:在漫反射强度估计值不大于漫反射强度阈值的情况下,将漫反射强度阈值确定为基本渲染单元的漫反射强度。

在一些实施例中,在漫反射强度估计值不大于漫反射强度阈值的情况下,即,漫反射强度估计值对应的渲染效果达不到预设标准,将漫反射强度阈值确定为基本渲染单元的漫反射强度。

需要说明的是,上述步骤5232-1与步骤5232-2为并列步骤,仅能执行步骤5232-1和步骤5232-2中的一个步骤。

综上所述,本申请实施例提供的方法先根据光照过渡的偏移值强度和基础漫反射强度计算漫反射强度估计值,当漫反射强度估计值低于漫反射强度阈值时,即使用漫反射强度估计值渲染得到的漫反射光照效果过黑时,采用漫反射强度阈值作为漫反射强度进行渲染,使漫反射光照效果更贴近真实效果。

在基于图16的可选实施例中,如图17所示,步骤5231可替换实现为步骤610至步骤630。

步骤610:计算第一系数,第一系数为光照过渡的偏移值强度与一的和的倒数;

在一些实施例中,计算每个基本渲染单元对应的第一系数,第一系数为光照过渡的偏移值强度与一的和的倒数。

步骤620:计算第二系数,第二系数为光照过渡的偏移值强度与第一系数的比值;

在一些实施例中,计算每个基本渲染单元对应的第二系数,第二系数为光照过渡的偏移值强度与第一系数的比值。

步骤630:计算漫反射强度估计值,漫反射强度估计值为基础漫反射强度与第一系数的积加上第二系数的和值。

在一些实施例中,每个基本渲染单元的漫反射强度估计值的计算公式如下式所示。

其中,basediffuse为基础漫反射强度,lightwarpscale为光照过渡的偏移值强度。

综上所述,本申请实施例提供的方法将光照过渡的偏移值强度作为影响因子,在基础漫反射强度的基础上计算漫反射强度估计值,光照过渡的偏移值强度指示了基本渲染单元的明暗变化程度,这样计算后,最终得到的漫反射光照效果会根据明暗变化程度显示不同的漫反射效果,更加贴近真实效果。

为了更清楚的理解本申请实施例的各种显示方式和操作方式,以下结合示意图进行详细说明。其中,虚拟模型为虚拟服装,第一材质为布料材质,第二材质为丝绸材质。通过着色器模型来封装上述虚拟模型的渲染方法。选取的渲染引擎是虚幻引擎。

步骤1,自定义布料丝绸着色器模型;

在渲染引擎中新增一个自定义的布料丝绸着色器模型。为该布料丝绸着色器模型添加一个接口,该接口的接口类型是自定义数据。这个接口的接口名称为布料丝绸遮罩接口,用于向布料丝绸着色器模型添加布料丝绸着色器遮罩。

该布料丝绸着色器模型除了自定义的布料丝绸遮罩接口外,还包括基础颜色、金属度、自发光颜色、不透明度、折射中的至少一个参数接口。其中,基础颜色为底色;金属度为控制金属质感的阈值,取值为0到1,金属度越接近0则表现为越接近非金属材质,金属度越接近1则表现为越接近金属材质;自发光颜色为自身发出的光照的颜色;不透明度用于表示待渲染物体的透明程度,不透明度为0时,表示完全透明;不透明度为1时,表示完全不透明;不透明度为介于0到1之间的数值时,表示半透明效果;折射为表面的折射率的大小。

在该布料丝绸着色器模型实现光照计算方法,光照计算方法包括漫反射计算,布料高光计算、丝绸高光计算和高光混合计算。

方法一:漫反射计算

lightwarp=max((nl+lightwarpscale)/(1+lightwarpscale),0.01);

lightdiffuse=diffusecolor*lightwarp*lerp(1.0,0.5,roughness)。

式中,lightwarp:光照过渡值。

nl:法线向量和光照向量的点积。

lightwarpscale:光照过渡的偏移值强度。

lightdiffuse:漫反射计算结果。

diffusecolor:漫反射颜色调节。

roughness:粗糙度。

其中,光照过渡值为混合了明暗变化程度计算的漫反射强度;法线向量和光照向量的点积为基础漫反射强度;光照过渡的偏移值强度为明暗变化程度;漫反射颜色调节为光照颜色和基础颜色计算后的颜色。粗糙度的取值为0到1。粗糙度越低,对应的材质表面越光滑,粗糙度越高,对应的材质表面越粗糙。

lerp()为插值方法,lerp(1.0,0.5,roughness)可以理解为1.0*(1-roughness)+0.5*roughness。

方法二:布料高光计算(各向同性高光计算)

D=D_GGX(R*R,NH,H,N);

G=V_Schlick(R,NV,NL);

F=F_Schlick(Specular,VH);

ClothSpecular=D*G*F;

式中,NH:法线向量和半角向量点积结果。

R:粗糙度。

NV:法线向量和视线向量点积结果。

NL:法线向量和光照向量点积结果。

VH:视线向量和半角向量点积结果。

ClothSpecular:布料高光。

其中,D_GGX()为各向同性法线分布函数;V_Schlick()为各向同性阴影遮蔽函数;F_Schlick()为菲尼尔方程。

方法三:丝绸高光计算(各向异性高光)

D=D_GGXaniso(T,B,NH,TH,BH);

G=V_SmithJointGGXaniso(TV,BV,NV,TL,BL,NL,T,B);

F=F_Schlick(Specular,VH);

SilkSpecular=D*G*F;

式中,T/B:切线向量/负法线向量。

NH:法线和半角向量的点积。

TH/BH:切线向量/负法线向量和半角向量的点积。

TV/BV/NV:切线向量/负法线向量/法线向量和视线向量的点积。

TL/BL/NL:切线向量/负法线向量/法线向量和光照向量的点积。

VH:视线向量和半角向量的点积。

SilkSpecular:丝绸高光。

其中,D_GGXaniso()为各向异性法线分布函数;V_SmithJointGGXaniso()为各向异性阴影遮蔽函数;F_Schlick()为菲尼尔方程。

方法四:高光混合计算

SpecularMix=lerp(ClothSpecular,SilkSpecular,ClothSilkSpecularMask);

式中,ClothSilkSpecularMask为布料丝绸高光遮罩。

根据丝绸高光遮罩对布料高光和丝绸高光进行插值,计算得到高光混合效果。

步骤2,设置虚拟服装,为虚拟服装添加布料丝绸着色器模型。

为虚拟服装添加布料丝绸着色器模型。在该布料丝绸着色器模型的布料丝绸遮罩接口设置布料丝绸遮罩,如图18所示,布料丝绸遮罩为灰度图,越接近黑色,则渲染后得到的结果越接近布料;越接近白色,则渲染后得到的结果越接近丝绸。可以理解为图18中虚拟服装的黑色部分采用布料材质10,虚拟服装的白色部分采用丝绸材质20。

根据要获得的虚拟服装效果,为该虚拟服装绑定的布料丝绸着色器模型设置参数,例如为基础颜色添加颜色遮罩,布料材质采用白色,丝绸材质采用红色;设置粗糙度为0.2;设置不透明度为1。

步骤3,基于对虚拟服装的设置,对虚拟服装进行渲染。

终端设备基于获取到的对虚拟服装的参数设置以及改虚拟服装所处的虚拟环境,对虚拟服装进行渲染,并将渲染结果展示在界面上,该虚拟服装的渲染结果如图19所示,布料材质渲染出的布料材质高光30更加柔和,丝绸材质渲染出的丝绸材质高光40更具有立体感,更加锐利。

请参考图20,其示出了本申请一个实施例提供的虚拟模型的渲染装置的结构框图。该装置具有实现上述虚拟模型的渲染方法示例的功能,功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的终端设备,也可以设置在终端设备中。如图20所示,该装置700可以包括:高光渲染模块710、遮罩获取模块720、高光计算模块730和高光渲染模块740。

模型获取模块710,用于获取所述虚拟模型,所述虚拟模型具有混合材质区域,所述混合材质区域是具有第一材质和第二材质混合效果的材质区域,所述第一材质具有各向同性,所述第二材质具有各向异性;

遮罩获取模块720,用于获取所述混合材质区域的材质混合遮罩,所述材质混合遮罩用于指示所述混合材质区域中的所述第一材质和所述第二材质的混合比例;

高光计算模块730,用于基于所述材质混合遮罩,计算所述混合材质区域的高光混合效果,所述高光混合效果是所述第一材质和所述第二材质分别对应的高光按照所述混合比例进行混合后的效果;

高光渲染模块740,用于使用所述高光混合效果对所述混合材质区域进行渲染。

在一些实施例中,高光计算模块730包括:

高光获取子模块,用于获取所述第一材质的第一材质高光,以及获取所述第二材质的第二材质高光,所述第一材质高光是各向同性高光,所述第二材质高光是各向异性高光;

权重确定子模块,用于基于所述材质混合遮罩,确定所述混合材质区域中每个基本渲染单元的第一材质权重和第二材质权重;

乘积计算子模块,用于计算所述第一材质高光与所述第一材质权重的第一乘积,以及所述第二材质高光与所述第二材质权重的第二乘积;

高光混合子模块,用于基于所述第一乘积和所述第二乘积,计算所述混合材质区域的高光混合效果。

在一些实施例中,权重确定子模块包括灰度值确定单元和权重计算单元。

灰度值确定单元,用于基于所述材质混合遮罩,确定所述混合材质区域中的所述每个基本渲染单元的灰度值;

权重计算单元,用于计算所述每个基本渲染单元的第一材质权重和第二材质权重。

在一些实施例中,高光获取子模块包括第一法线单元、第一阴影单元、第一菲尼尔单元和第一高光计算单元。

第一法线单元,用于基于各向同性法线分布函数,计算所述混合材质区域中所述第一材质对应的每个基本渲染单元的各向同性法线分布;

第一阴影单元,用于基于各向同性阴影遮蔽函数,计算所述混合材质区域中所述第一材质对应的每个基本渲染单元的各向同性阴影遮蔽;

第一菲尼尔单元,用于基于菲尼尔方程,计算所述混合材质区域中所述第一材质对应的每个基本渲染单元的第一菲尼尔;

第一高光计算单元,用于基于所述各向同性法线分布、所述各向同性阴影遮蔽和所述第一菲尼尔的乘积,计算所述第一材质高光。

在一些实施例中,高光获取子模块包括第二法线单元、第二阴影单元、第二菲尼尔单元和第二高光计算单元。

第二法线单元,用于基于各向异性法线分布函数,计算所述混合材质区域中所述第二材质对应的每个基本渲染单元的各向异性法线分布;

第二阴影单元,用于基于各向异性阴影遮蔽函数,计算所述混合材质区域中所述第二材质对应的每个基本渲染单元的各向异性阴影遮蔽;

第二菲尼尔单元,用于基于菲尼尔方程,计算所述混合材质区域中所述第二材质对应的每个基本渲染单元的第二菲尼尔;

第二高光计算单元,用于基于所述各向异性法线分布、所述各向异性阴影遮蔽和所述第二菲尼尔的乘积,计算所述第二材质高光。

在一些实施例中,高光混合子模块包括高光混合单元。

高光混合单元,用于计算每个所述基本渲染单元的所述第一乘积和所述第二乘积之和,得到所述混合材质区域的高光混合效果。

在一些实施例中,装置700还包括漫反射计算模块,高光渲染模块还包括渲染模块。

漫反射计算模块,用于计算所述混合材质区域中每个基本渲染单元的漫反射光照效果;

渲染模块,用于使用所述高光混合效果和所述漫反射光照效果对所述混合材质区域进行渲染。

在一些实施例中,漫反射计算模块包括参数获取子模块和漫反射计算子模块。

参数获取子模块,用于获取所述混合材质区域中每个基本渲染单元的漫反射强度、漫反射颜色调节和粗糙度;所述漫反射强度用于指示漫反射的光照强度;所述漫反射颜色调节用于指示漫反射的颜色;

漫反射计算子模块,用于计算每个所述基本渲染单元的所述漫反射强度、所述漫反射颜色调节和所述粗糙度的积,得到所述混合材质区域的漫反射光照效果。

在一些实施例中,参数获取子模块还包括偏移值获取子模块,基础强度获取子模块和强度计算子模块。

偏移值获取子模块,用于获取所述混合材质区域中每个基本渲染单元的光照过渡的偏移值强度,所述光照过渡的偏移值强度用于指示所述混合材质区域中每个基本渲染单元的明暗变化程度;

基础强度获取子模块,用于获取所述混合材质区域中每个基本渲染单元的基础漫反射强度;

强度计算子模块,用于基于每个所述基本渲染单元的所述光照过渡的偏移值强度和所述基础漫反射强度,计算所述混合材质区域中每个基本渲染单元的漫反射强度。

在一些实施例中,强度计算子模块还包括估计值计算单元、第一强度确定单元和第二强度确定单元。

估计值计算单元,用于基于所述光照过渡的偏移值强度和所述基础漫反射强度,计算所述混合材质区域中每个基本渲染单元的漫反射强度估计值;

第一强度确定单元,用于在所述漫反射强度估计值大于漫反射强度阈值的情况下,将所述漫反射强度估计值确定为所述基本渲染单元的漫反射强度;

第二强度确定单元,用于在所述漫反射强度估计值不大于所述漫反射强度阈值的情况下,将所述漫反射强度阈值确定为所述基本渲染单元的漫反射强度。

在一些实施例中,估计值计算单元包括第一计算单元、第二计算单元和第三计算单元。

第一计算单元,用于计算第一系数,所述第一系数为所述光照过渡的偏移值强度与一的和的倒数;

第二计算单元,用于计算第二系数,所述第二系数为所述光照过渡的偏移值强度与所述第一系数的比值;

第三计算单元,用于计算所述漫反射强度估计值,所述漫反射强度估计值为所述基础漫反射强度与所述第一系数的积加上所述第二系数的和值。

在一些实施例中,基础强度获取子模块包括参数获取单元和强度计算单元。

参数获取单元,用于获取所述混合材质区域中每个基本渲染单元的法线向量和光照向量;

强度计算单元,用于基于所述法线向量和所述光照向量的点积,确定所述混合材质区域中每个基本渲染单元的基础漫反射强度。

需要说明的是:上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图21示出了本申请一个示例性实施例提供的计算机设备的结构框图。

所述计算机设备800包括中央处理单元(Central Processing Unit,CPU)801、包括随机存取存储器(Random Access Memory,RAM)802和只读存储器(Read-Only Memory,ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括帮助计算机设备内的各个器件之间传输信息的基本输入/输出系统(Input/Output系统,I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。

所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读存储介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者只读光盘(Compact Disc Read-Only Memory,CD-ROM)驱动器之类的计算机可读存储介质(未示出)。

不失一般性,所述计算机可读存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读存储指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读寄存器(Erasable Programmable Read OnlyMemory,EPROM)、电子抹除式可复写只读存储器(Electrically-Erasable ProgrammableRead-Only Memory,EEPROM)、闪存或其他固态存储其技术,CD-ROM、数字多功能光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。

存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元801执行,一个或多个程序包含用于实现上述方法实施例的指令,中央处理单元801执行该一个或多个程序实现上述各个方法实施例提供的方法。

根据本申请的各种实施例,所述计算机设备800还可以通过诸如因特网等网络连接到网络上的远程计算机设备运行。也即计算机设备800可以通过连接在所述系统总线805上的网络接口单811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机设备系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,所述一个或者一个以上程序包含用于进行本申请实施例提供的方法中由终端设备所执行的步骤。

在示例性实施例中,还提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时以实现上述虚拟模型的渲染方法。

在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被处理器执行时,其用于实现上述虚拟模型的渲染方法。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120116576446