渲染方法、装置和终端设备与流程

文档序号:21369462发布日期:2020-07-04 04:46阅读:204来源:国知局
渲染方法、装置和终端设备与流程

本发明涉及计算机图像处理和计算机图形学的技术领域,尤其是涉及一种渲染方法、装置和终端设备。



背景技术:

绒毛质地在现实生活当中非常常见。从高贵的皮草到可爱的玩偶,再到惹人怜爱的小动物。绒毛柔软温和、高贵大气的感觉一直受众人所喜爱,因此不少设计者们乐于在各自的作品中添加绒毛元素。而在影视及游戏作品中更是出镜率非常高的一种质地。比如:各种绒毛质地的动物电影角色、游戏场景中绒毛质地的猫咪;手机游戏中的绒毛质地的服饰。要模拟出漂亮的绒毛效果,首先就要在模型表面模拟出毛的立体感。对于离线渲染的影视类作品。创作者可不计成本地最求真实感,直接把毛通过建模实现出来。而实时渲染的3d(threedimensional,三维)游戏则需要顾及效果与性能的平衡,需要一些办法来实现绒毛效果。

相关技术中,主要通过一般插片法和壳式插片法在性能预算有限的环境下做出绒毛的立体感。其中,一般插片法是指根据毛生长的方向,把多根毛以一个面片来表示,如果要模拟浓密表面,一般插片法需要预先设计模型,并在模型表面创建数量极为庞大的面片,不但制作时消耗极大的人力资源,制作完成后修改困难,运算消耗也极大。壳式插片法是指根据模型外形往外增加包裹面,并通过渲染算法在毛的位置显示颜色。壳式插片法以密度较高的面片重叠方式模拟出绒毛立体效果,虽然可以有效减少实时运算时的性能消耗,但是需要预先设计模型,需要消耗额外的人力资源;在设计模型时有时还需要借用程序设计,需要消耗额外的程序人力资源来对后期制作进行支持,一些商业游戏的游戏引擎甚至需要修改渲染管线的底层代码来实现壳式插片。



技术实现要素:

有鉴于此,本发明的目的在于提供一种渲染方法、装置和终端设备,以减少运算资源和人力资源消耗。

第一方面,本发明实施例提供了一种渲染方法,渲染的模型包括模型平面;方法包括:获取模型平面上的目标像素点;设置多个与模型平面对应的虚拟参考面,虚拟参考面设于模型内;从虚拟参考面中选择目标虚拟参考面;确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点;确定交点在模型平面的投影点的坐标;基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,确定目标像素点对应的渲染像素点;根据渲染像素点的渲染像素值渲染观测位置对应的模型。

在本发明较佳的实施例中,上述渲染的模型为算数模型。

在本发明较佳的实施例中,上述获取模型平面上的目标像素点的步骤,包括:根据观测位置获取模型表面上的目标像素点。

在本发明较佳的实施例中,上述确定交点在模型平面的投影点的坐标的步骤,包括:确定目标虚拟参考面与模型平面的距离;确定观测位置和目标像素点的连线与模型平面的夹角;将距离和夹角进行三角函数运算以相乘,确定目标像素点的偏移量;将目标像素点的坐标与偏移量相加,得到交点在模型平面的投影点的坐标。

在本发明较佳的实施例中,上述基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,确定目标像素点对应的渲染像素点的步骤,包括:判断投影点的坐标在预设的噪声图中对应位置的灰度值是否大于目标虚拟参考面对应的灰度值;如果是,将投影点作为目标像素点对应的渲染像素点;如果否,按照从模型平面至最内层的虚拟参考面的平面顺序,将目标虚拟参考面的下一个虚拟参考平面替换目标虚拟参考面,继续执行确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点的步骤,直至遍历完所有虚拟参考面。

在本发明较佳的实施例中,上述方法还包括:如果目标虚拟参考面为最内层平面,将最内层平面对应的投影点作为目标像素点对应的渲染像素点。

在本发明较佳的实施例中,上述方法还包括:通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,n为目标虚拟参考面对应的灰度值,n1表征目标虚拟参考面在从模型平面至最内层的虚拟参考面的平面顺序中位于第n1层;n为平面顺序的总层数。

在本发明较佳的实施例中,上述方法还包括:通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,m为目标虚拟参考面对应的灰度值,m1目标虚拟参考面与模型平面的距离;m为最内层平面与模型平面的距离。

在本发明较佳的实施例中,上述根据渲染像素点的渲染像素值渲染观测位置对应的模型的步骤,包括:基于渲染后的目标像素点的像素数据,确定目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色;基于确定出的目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色,渲染模型。

在本发明较佳的实施例中,上述方法还包括:为模型添加各向异性高光和边缘光,并对模型进行散射计算;基于散射计算的结果渲染模型。

第二方面,本发明实施例还提供一种渲染装置,渲染的模型包括模型平面;装置包括:目标像素点获取模块,用于获取模型平面上的目标像素点;虚拟参考面设置模块,用于设置多个与模型平面对应的虚拟参考面,虚拟参考面设于模型内;目标虚拟参考面选择模块,用于从虚拟参考面中选择目标虚拟参考面;交点确定模块,用于确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点;投影点坐标确定模块,用于确定交点在模型平面的投影点的坐标;渲染像素点确定模块,用于基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,确定目标像素点对应的渲染像素点;渲染像素值渲染模块,用于根据渲染像素点的渲染像素值渲染观测位置对应的模型。

第三方面,本发明实施例还提供一种终端设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述渲染方法的步骤。

第四方面,本发明实施例还提供一种计算机可读存储介质计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述渲染方法的步骤。

本发明实施例带来了以下有益效果:

本发明实施例提供的渲染方法、装置和终端设备,对模型平面上的每一个目标像素点,均查找到该目标像素点对应的合适的渲染像素点,并使用渲染像素点的渲染像素值渲染模型,实现绒毛效果;通过渲染像素点的渲染像素值渲染模型,就无需增加面片或者包覆面等额外的模型,可以产生视差毛发视觉效果,有效地减少运算资源和人力资源消耗,也不用修改渲染管线的底层代码。

本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明实施例提供的一种模型的结构示意图;

图2为本发明实施例提供的一种渲染方法的流程图;

图3为本发明实施例提供的一种渲染方法的示意图;

图4为本发明实施例提供的一种立体效果示意图;

图5为本发明实施例提供的另一种渲染方法的流程图;

图6为本发明实施例提供的一种渲染方法的流程框图;

图7为本发明实施例提供的一种渲染装置的结构示意图;

图8为本发明实施例提供的一种终端设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,主要通过一般插片法和壳式插片法在性能预算有限的环境下做出绒毛的立体感,然而一般插片法或壳式插片法需要在模型中增加面片或包覆面,壳式插片法甚至需要修改渲染管线的底层代码,这么做会增加运算资源和人力资源的消耗。基于此,本发明实施例提供的一种渲染方法、装置和终端设备。该技术可以应用于电脑、手机、平板电脑等可以实现人机交互的设备上,尤其可以适用于游戏场景中,如音乐游戏、卡牌游戏、竞技游戏中。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种渲染方法进行详细介绍,该方法中渲染的模型包括模型平面,并以模型平面为基准,设置与模型平面对应的多个虚拟参考面;参见图1所示的一种模型的结构示意图,图1中的实线代表模型平面、图1中的虚线代表虚拟参考面,由外至内,第一层为模型平面,之后的若干层均为虚拟参考面。模型平面是指该模型的实际平面,虚拟参考面是指人眼以为的某一个像素点处于的平面,虚拟参考面并不存在于实际的空间中,模型平面存在于实际的空间中。也就是说,对于模型平面上的一个点,人眼会以为该点位于在虚拟参考面上,而非模型平面上。本实施例提供的方法基于虚拟摄像机的移动,当虚拟摄像机移动效果会产生空间深度上的视觉变化,从而使图像产生立体感。在实际的模型渲染过程中,是针对每一帧进行渲染的,对于每一帧来说,虚拟摄像机是固定不变的,即观测位置不变。

其中,模型中的每两层平面之间的距离可以相等,也可以不等,这里不做限定;虚拟参考面的数量同样不做限定。对于一个模型,固定有观测位置,观测位置表征虚拟摄像机的位置,可以理解为虚拟摄像机相当于人眼,人眼看到的图像相当于虚拟摄像机从观测位置观测模型,从观测位置发出的线就是虚拟摄像机的拍摄方向。

基于上述描述,参见图2所示的一种渲染方法的流程图,该渲染方法包括如下步骤:

步骤s202,获取模型平面上的目标像素点。

模型平面在屏幕上表现为若干个像素点,每一个像素点都写有像素数据,像素数据包括该像素的颜色、灰度等。从模型上获取一些目标像素点,目标像素点即需要被渲染的像素点。

步骤s204,设置多个与模型平面对应的虚拟参考面,虚拟参考面设于模型内。

如图1所示,虚拟参考面设置于模型内。虚拟参考面设置的间隔和位置军不做限定。需要说明的是,虚拟参考面可以包括模型平面。

步骤s206,从虚拟参考面中选择目标虚拟参考面。

目标虚拟参考面是指本次像素替换操作中,观测位置观测的目标像素点的视觉位置。也就是,目标像素点的数据应是模型平面上某一个位置的数据,从观测位置观测目标像素点,目标像素点使用另一位置的数据,通过让数据根据观测点移动产生变化来达到视觉立体效果。其中,如果将模型平面作为目标虚拟参考面,表示本次像素替换操作的目标像素点看起来还是在模型平面上,即视觉位置和实际位置相同。

步骤s208,确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点。

参见图3所示的一种渲染方法的示意图,如图3所示,图3中的实线平面代表模型平面,虚线平面代表目标虚拟参考面。当确定好模型平面上的目标像素点(即图3中的a点)后,将观测位置与目标像素点a点连接,得到的连线即视线方向。就可以得到延长的视线方向与目标虚拟参考面的交点b点。这样做的意义是,实际在模型平面上的a点,在由观测位置观测时,看起来是在目标虚拟参考面的b点的位置上的,可以称为“透过a点看到b点”。

步骤s210,确定交点在模型平面的投影点的坐标。

如图3所示,交点b在模型平面的投影点为c点,即从b点做一条与模型平面垂直的线bc,bc交模型平面于c点,c点就是投影点。c点的意义是,需要将c点的作为a的渲染像素点,才能实现“透过a点看到b点”,即让a点看起来像是透明的,透过该点看到的是b点的位置。

这里需要说明的是,可以不确定确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点的坐标,只需要确定该交点在模型平面的投影点的坐标即可。

步骤s212,基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,确定目标像素点对应的渲染像素点。

为了实现“透过a点看到b点”,还需要保证c点的灰度值与满足目标虚拟参考面对应的灰度值满足预设的大小关系。灰度值满足大小关系的判断,是为了知道“透过a点看到b点”需要透过多少层平面,对于形成立体效果非常重要。

预设一张噪声图,该噪声图用于表征投影点(c点)对应的灰度值。平面关系对应的灰度值可以根据平面关系的位置确定。

例如,预先设定c点的灰度值要大于目标虚拟参考面对应的灰度值,c点的坐标在预设的噪声图中对应位置的灰度值为50。预先设定平面与灰度值的对应关系为第一层平面的灰度值为255,第二层平面的灰度值为200,之后依次递减;如果目标虚拟参考面为第二层平面,那么该目标虚拟参考面的灰度值就是200。因为200大于50,则说明本例子中的投影点c点的灰度值不大于目标虚拟参考面对应的灰度值,则c点不是a点对应的像素渲染点,需要选择其他的目标虚拟参考面的点作为渲染像素点。

又例如,如果c点的灰度值大于目标虚拟参考面对应的灰度值,就对目标像素点a点的像素数据进行渲染操作,即使用c点是a点对应的像素渲染点。

步骤s214,根据渲染像素点的渲染像素值渲染观测位置对应的模型。

当模型平面上的目标像素点均确定了各自对应的渲染像素点后,采用渲染像素点的渲染像素值渲染观测位置对应的模型,得到的模型的位于模型平面上的部分点看起来可能是更内部的虚拟参考面上的点,也就可以让该模型具有绒毛效果,模型可以为算数模型。

一般模型渲染包括以下三个步骤:

1、几何处理:输入3d模型的几何模型(包括顶点数据,顶点数据定义了物体的几何形状),利用几何模型,配合模型的变换数据,将3d模型由模型局部空间变换到屏幕空间

2、光栅化:对上述变换到屏幕空间的花瓶的每个三角形做光栅化处理,得到每个三角形覆盖每个像素,以及三角形顶点上的某些属性,如法线,贴图uv(u,v即纹理贴图坐标,和空间模型的x,y,z轴是类似。它定义了图片上每个点的位置的信息,这些点与3d模型是相互联系的,以决定表面纹理贴图的位置,uv就是将图像上每一个点精确对应到模型物体的表面,在点与点之间的间隙位置由软件进行图像光滑插值处理,即uv贴图)。本实施例中的算术模型实际上是uv所指向的数据,这个数据保存在一张图上。

3、像素处理:利用前面光栅化阶段插值得到的各种数据,配合光照参数和贴图数据,计算得到每个像素最终的渲染结果。

立体效果一般是基于镜头深度产生的视觉差导致的。由于视觉移动时透过a点看到的位置会产生变化,所以就会产生立体效果。参见图4中的一种立体效果示意图,如果图4所示,实线平面为模型平面,虚线平面为虚拟参考面,随着镜头(观测位置)移动,是透过a点看到的位置会发生变化,即镜头移动前后的虚拟参考面不同。

本发明实施例提供的渲染方法,对模型平面上的每一个目标像素点,均查找到该目标像素点对应的合适的渲染像素点,并使用渲染像素点的渲染像素值渲染模型,实现绒毛效果;通过渲染像素点的渲染像素值渲染模型,就无需增加面片或者包覆面等额外的模型,可以产生视差毛发视觉效果,有效地减少运算资源和人力资源消耗,也不用修改渲染管线的底层代码。

本发明实施例还提供另一种渲染方法,该方法在上述实施例方法的基础上实现;该方法重点描述基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,对目标像素点的像素数据进行替换操作的具体处理方式。如图5所示的另一种渲染方法的流程图,该渲染方法包括如下步骤:

步骤s502,获取模型平面上的目标像素点。

目标像素点并不一定是模型平面的所有像素点,可以根据观测位置获取模型表面上的目标像素点,例如:选择在观测位置可以看到的模型平面的像素点作为目标像素点,例如:模型平面为球体,而观测位置在球体外侧,可以选择模型平面的外侧的全部像素点作为目标像素点。

如果目标像素点为模型平面的所有像素点,可以按照一定的顺序进行遍历,保证模型平面上的像素点全部被遍历到。例如:可以按照从左至右的顺序遍历模型平面上的第一行的像素点,接下来按照从左至右的顺序遍历模型平面上的第二行的像素点,之后一行一行进行遍历,直到遍历至模型平面上的最后一行的最右侧的像素点。

步骤s504,设置多个与模型平面对应的虚拟参考面,虚拟参考面设于模型内。

步骤s506,从虚拟参考面中选择目标虚拟参考面。

本实施例的渲染操作应用了视差的概念,视差是指从一定距离的两个点上观察同一个目标所产生的方向差异,如图3所示,当延用户视线方向到达模型平面后,并非直接把a对应的颜色显示到屏幕上,而是继续延视线方向向后延展一定距离至b。然后根据b取模型表面对应的投影点c的像素。这样能让用户觉得看到的模型表面看起来像是在目标虚拟参考面位置的。而实际上目标虚拟参考面并不存在于游戏空间当中。可以理解为用户通过屏幕看到屏幕中物件表面的颜色信息并非该点的信息,而是该点附近另一物件表面点的颜色信息。

步骤s508,确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点。

参见图3所示,已知模型平面的坐标、目标虚拟参考面的坐标、目标像素点a的位置和观测位置的坐标。首先,计算观测位置与a的连线的函数,作为视线方向;之后,就可以计算视线方向与目标虚拟参考面的交点b的坐标。这里需要说明的是,目标虚拟参考面和模型平面一般会使用立体空间进行计算,计算后的数据替换使用uv坐标系(纹理贴图坐标系)。uv坐标定义了图片上每个点的位置的信息。uv将图像上每一个点精确对应到模型物体的表面。

步骤s510,确定交点在模型平面的投影点的坐标。

如图3所示,在确定b的坐标后,确定经过b,并且与模型平面垂直的连线bc的函数,并计算该函数与模型平面的交点c的坐标,c就是投影点。上述方法中,首先计算了b的坐标,然后基于b的坐标计算了c的坐标。实际应用的过程中可以省略b的坐标的计算,通过其他方式计算c的坐标,通过步骤a1-步骤a4计算c的坐标:

步骤a1,确定目标虚拟参考面与模型平面的距离。

如图3所示,已知目标虚拟参考面与模型平面的坐标,那么就可以计算目标虚拟参考面与模型平面的距离,这个距离就是bc的长度。

步骤a2,确定观测位置和目标像素点的连线与模型平面的夹角。

已知a的坐标和观测位置的坐标,可以计算a与观测位置的连线的函数,也就是视线方向的函数,基于该视线方向的函数和模型平面的函数,可以确定视线方向与模型平面的夹角,这个夹角,可以理解为ab与模型平面的夹角。

步骤a3,将距离和夹角进行三角函数运算以相乘,确定目标像素点的偏移量。

将上述夹角采用弧度制表示,并将弧度制表示的夹角与上述目标虚拟参考面与模型平面的距离相乘,就得到了目标像素点的偏移量。例如:在c于a相比,只有u轴的坐标变化的基础上,如果夹角为60°,换算成弧度制是π/3,假设上述目标虚拟参考面与模型平面的距离(即bc长度为3),则目标像素点的偏移量(即ac的距离)通过下述公式计算:ac=bc/tan(60),ac为3×π/3=π。

步骤a4,将目标像素点的坐标与偏移量相加,得到交点在模型平面的投影点的坐标。

如果a处于空间坐标系,并且c于a相比,只有x轴的坐标变化;就将a的坐标的x轴的数值增加偏移量π,即可得到c的坐标,就是交点在模型平面的投影点的坐标。

该方式中,基于上述步骤可以省略目标像素点的连线与目标虚拟参考面的交点的坐标计算,直接确定该交点在模型平面的投影点的坐标。

上述步骤中只考虑了直线偏移的情况,即ac为一条直线,实际的应用中,还需要增加基于平面与摄像机角度的补偏差运算及偏移累加运算,经过上述运算才可以得到更加真实的投影点。针对模型平面为曲面,投影点位于该曲面边缘的情况,还可以进行一定的临界处理。比如:临界空间矫正、临界裁剪等。

步骤s512,判断投影点的坐标在预设的噪声图中对应位置的灰度值是否大于目标虚拟参考面对应的灰度值。如果是,执行步骤s514;如果否,执行步骤s516。

分别确定投影点的坐标在预设的噪声图中对应位置的灰度值(将这个灰度值称为第一灰度值)和目标虚拟参考面对应的灰度值的大小关系(将这个灰度值称为第二灰度值),判断第一灰度值是否大于第二灰度值。

噪声图中的每一个坐标对应一个灰度值,确定噪声图中投影点的位置的灰度值,这个灰度值就是第一灰度值。本实施例中的噪声图与模型平面处于同一坐标系,投影点的坐标处于模型平面中,那么,只要确定噪声图中投影点的坐标对应的灰度值,这个灰度值就是第一灰度值,灰度值通过uv坐标读取。例如,投影点在模型平面中的坐标是(11,12),噪声图中坐标(11,12)对应的灰度值为35,则第一灰度值就是35。

第二灰度值可以基于平面与灰度值的对应关系确定。预先设定平面与灰度值的对应关系,这样只要知道目标虚拟参考面的参数(例如层数、与模型平面的距离、或编号等),代入到上述对应关系中即可确定目标虚拟参考面对应的第二灰度值。

如果是通过编号来确定第二灰度值的,可以将平面顺序的所有平面进行编号,并设定每一个编号对应的第二灰度值。例如:假设平面顺序共有3个平面,其中,第2个平面对应的第二灰度值为25,那么如果目标虚拟参考面的编号为2,那么该目标虚拟参考面对应的第二灰度值为25。

如果通过层数确定第二灰度值,可以通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,n为目标虚拟参考面对应的灰度值,n1表征目标虚拟参考面在从模型平面至最内层的虚拟参考面的平面顺序中位于第n1层;n为平面顺序的总层数。

也就是说,先对模型平面至虚拟参考面按照由内至外的顺序进行排序,得到一个平面顺序,对每一层平面平均分配第二灰度值,例如,平面顺序的总层数为20,目标虚拟参考面在平面顺序中位于第10层,则该目标虚拟参考面对应的第二灰度值为

如果通过与模型平面的距离确定第二灰度值,可以通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,m为目标虚拟参考面对应的灰度值,m1目标虚拟参考面与模型平面的距离;m为最内层平面与模型平面的距离。

也就是说,按照与模型平面的距离的远近分配第二灰度值,离模型平面的距离越远,则第二灰度值越小。例如,最内层平面与模型平面的距离为2000,目标虚拟参考面与模型平面的距离为500,则该目标虚拟参考面对应的第二灰度值为

该方式中,可以通过目标虚拟参考面的层数、与模型平面的距离、或编号等方式设定平面与灰度值的对应关系,只需要保证目标虚拟参考面越靠下,第二灰度值越小即可。

需要满足的是判断条件为第一灰度值大于第二灰度值。如果第一灰度值大于第二灰度值,则说明投影点对应的第一灰度值要大于目标虚拟参考面对应的第二灰度值。目标虚拟参考面对应的第二灰度值要比投影点对应的第一灰度值更靠近黑色,这样,可以“透过a点看到b点”,可以保证a点看起来的位置与b点的位置相比更靠近内侧,更加具有立体感,以体现绒毛效果。例如,第一灰度值为120,第二灰度值100,第一灰度值大于第二灰度值,则认为满足判断条件。

需要说明的是,判断条件除了第一灰度值大于第二灰度值之外,还可以是第一灰度值与第二灰度值的差小于预设的阈值,即第一灰度值与第二灰度值比较接近;还可以是第一灰度值大于第二灰度值,并且,第一灰度值与第二灰度值的差小于预设的阈值。

步骤s514,将投影点作为目标像素点对应的渲染像素点。

如果投影点的坐标在预设的噪声图中对应位置的灰度值大于目标虚拟参考面对应的灰度值,说明该目标虚拟参考面对应的投影点满足判断条件,将投影点作为目标像素点对应的渲染像素点,在渲染后即可实现“透过a点看到b点”,让a点看起来像是透明的,透过该点看到的是b点的位置。

在渲染的过程中,可以基于替换后的像素数据进行预处理:基于渲染后的目标像素点的像素数据,确定目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色;基于确定出的目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色,渲染模型。

半透蒙版是渐变的,基于替换后的目标像素点的像素数据生成,半透蒙版用于生成毛糙效果。目标像素点的法线值和目标像素点的颜色可以直接基于渲染像素点的像素数据获取。基于预处理后的数据可以对模型进行渲染。

该方式中,可以基于渲染像素点的像素数据,确定目标像素点的半透蒙版,以产生尖端毛糙效果,还可以获取目标像素点的法线值和颜色。

步骤s516,按照从模型平面至最内层的虚拟参考面的平面顺序,将目标虚拟参考面的下一个虚拟参考平面替换目标虚拟参考面。

如果投影点的坐标在预设的噪声图中对应位置的灰度值不大于目标虚拟参考面对应的灰度值,说明该目标虚拟参考面对应的投影点不满足判断条件,那么就需要替换目标虚拟参考面,重新执行步骤s508。首先将平面按照从模型平面至最内层的虚拟参考面的平面顺序进行排序,即按照有外至内的顺序,将模型平面排在第一层,与模型平面的下一个内层的虚拟参考面排在第二层,以此类推。

确定目标虚拟参考面的层数,然后将目标虚拟参考面的下一个内层平面作为新的目标虚拟参考面,对于新的目标虚拟参考面继续执行像素替换操作,直至投影点是否满足判断条件,或者,遍历完所有平面。也就是说,对于每一个目标像素点,将第一个符合判断条件的投影点作为渲染像素点。

如果遍历至平面顺序中的最内层平面,那么可以不进行判断,直接将最内层平面对应的投影点作为渲染像素点,即如果目标虚拟参考面为最内层平面,将最内层平面对应的投影点作为目标像素点对应的渲染像素点。

遍历至平面顺序中的最内层平面,说明上述平面顺序中最内层平面之外的所有平面,均不满足各自的判断条件,那么就无须再判断最内层平面是否满足对应的判断条件,直接确定渲染像素点即可。这么做可以省去最内层平面进行条件判断的时间,增加模型的生成效率。除此以外,还可以使用其他的数据作为渲染像素点的像素数据。例如:使用贴图uv空间上的像素点的像素数据。

步骤s518,根据渲染像素点的渲染像素值渲染观测位置对应的模型。

在渲染后,可以对渲染的模型进行后处理,以进行数据修饰,例如:为模型添加各向异性高光和边缘光,并对模型进行散射计算;基于散射计算的结果渲染模型。该方式中,通过对模型添加各向异性高光和边缘光,并对模型进行散射计算,以对模型进行后处理,之后可根据需求添加各种毛发渲染,可以使后处理后的模型具有更好的光学效果,渲染后的模型具有更好的视觉效果。

本发明实施例提供的上述方法对模型平面上的像素点逐个进行运算,可以参见图6所示的一种渲染方法的流程框图,如图6所示:对于模型的模型平面上的当前像素点,首先确定该像素点对应的投影点,确认该投影点是否满足预设的判断条件,如果满足,则进行渲染像素点确认和预处理。如果不满足,则判断该投影点对应的目标虚拟参考面是否是最后一层,如果不是,则对于目标虚拟参考面的下一层继续确定投影点;如果是,则直接使用最后一层目标虚拟参考面对应的投影点进行渲染像素点确认和预处理。当前像素点完成数据替换和预处理后,选择下一个像素点继续进行数据替换和预处理操作。

传统的一般插片法和壳式插片法在建立模型的过程中需要增加面片或者包覆面等额外的模型,本发明实施例提供的上述方法,是基于视线方向及表面法线的方法,无需修改模型,一般的壳式插片法由cpu(centralprocessingunit,中央处理器)处理外壳,gpu(graphicsprocessingunit,图形处理器)处理着色,若要纯gpu处理着色需要修改渲染管线底层。本方法是纯渲染方法,是纯gpu处理,因此无需修改渲染管线底层即可有效果。一般的壳式插片使用的是全透渲染材质,模型背面的遮挡剔除会消耗额外的运算性能。本方法是基于像素的单次运算,没有模型背面的剔除性能消耗需求。因此理论上本发明实施例提供的方法比壳式插片法还要节省运算性能。

其次,传统的一般插片法和壳式插片法需在对模型背后插片进行裁剪判定时存在一定的运算消耗,而本发明实施例提供的上述方法,采用了判断条件单次判定的方法,能够在不改变渲染管线的情况下完全由gpu处理,不存在上述运算消耗。

最后,由于本实施例提供的上述方法的是基于像素级别的空间运算,即可以对模型平面的每一个像素进行替换,能够实现一些传统的一般插片法和壳式插片法无法做到的单根毛发处理,与传统方法相比处理更加精细。比如壳式插片只能以三角面为单位进行毛发末端到基底的面片密度偏移,而本实施例提供的上述方法则能做到以每一根毛发为单位进行毛发末端到基底的面片密度偏移。

需要说明的是,上述各方法实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

对应于上述方法实施例,本发明实施例提供了一种渲染装置,渲染的模型包括模型平面;如图7所示的一种渲染装置的结构示意图,该装置包括:

目标像素点获取模块71,用于获取模型平面上的目标像素点;

虚拟参考面设置模块72,用于设置多个与模型平面对应的虚拟参考面,虚拟参考面设于模型内;

目标虚拟参考面选择模块73,用于从虚拟参考面中选择目标虚拟参考面;

交点确定模块74,用于确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点;

投影点坐标确定模块75,用于确定交点在模型平面的投影点的坐标;

渲染像素点确定模块76,用于基于投影点的坐标在预设的噪声图中对应位置的灰度值与目标虚拟参考面对应的灰度值的大小关系,确定目标像素点对应的渲染像素点;

渲染像素值渲染模块77,用于根据渲染像素点的渲染像素值渲染观测位置对应的模型。

本发明实施例提供的渲染装置,对模型平面上的每一个目标像素点,均查找到该目标像素点对应的合适的渲染像素点,并使用渲染像素点的渲染像素值渲染模型,实现绒毛效果;通过渲染像素点的渲染像素值渲染模型,就无需增加面片或者包覆面等额外的模型,可以产生视差毛发视觉效果,有效地减少运算资源和人力资源消耗,也不用修改渲染管线的底层代码。

在一些实施例中,上述渲染的模型为算数模型。

在一些实施例中,上述目标像素点获取模块,用于根据观测位置获取模型表面上的目标像素点。

在一些实施例中,上述投影点坐标确定模块,用于确定目标虚拟参考面与模型平面的距离;确定观测位置和目标像素点的连线与模型平面的夹角;将距离和夹角进行三角函数运算以相乘,确定目标像素点的偏移量;将目标像素点的坐标与偏移量相加,得到交点在模型平面的投影点的坐标。

在一些实施例中,上述渲染像素点确定模块,用于判断投影点的坐标在预设的噪声图中对应位置的灰度值是否大于目标虚拟参考面对应的灰度值;如果是,将投影点作为目标像素点对应的渲染像素点;如果否,按照从模型平面至最内层的虚拟参考面的平面顺序,将目标虚拟参考面的下一个虚拟参考平面替换目标虚拟参考面,继续执行确定预设的观测位置和目标像素点的连线与目标虚拟参考面的交点的步骤,直至遍历完所有虚拟参考面。

在一些实施例中,上述装置还包括最内层平面像素数据替换模块,用于如果目标虚拟参考面为最内层平面,将最内层平面对应的投影点作为目标像素点对应的渲染像素点。

在一些实施例中,上述装置还包括第一灰度值计算模块,用于通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,n为目标虚拟参考面对应的灰度值,n1表征目标虚拟参考面在从模型平面至最内层的虚拟参考面的平面顺序中位于第n1层;n为平面顺序的总层数。

在一些实施例中,上述装置还包括第二灰度值计算模块,用于通过下述平面与灰度值的对应关系确定目标虚拟参考面对应的灰度值:其中,m为目标虚拟参考面对应的灰度值,m1目标虚拟参考面与模型平面的距离;m为最内层平面与模型平面的距离。

在一些实施例中,上述装置还包括渲染像素值渲染模块,用于基于渲染后的目标像素点的像素数据,确定目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色;基于确定出的目标像素点的半透蒙版、目标像素点的法线值和目标像素点的颜色,渲染模型。

在一些实施例中,上述装置还包括后处理模块,用于为模型添加各向异性高光和边缘光,并对模型进行散射计算;基于散射计算的结果渲染模型。

本发明实施例提供的渲染装置,与上述实施例提供的渲染方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例还提供了一种终端设备,用于运行上述渲染方法;参见图8所示的一种终端设备的结构示意图,该终端设备包括存储器100和处理器101,其中,存储器100用于存储一条或多条计算机指令,一条或多条计算机指令被处理器101执行,以实现上述渲染方法。

进一步地,图8所示的终端设备还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。

其中,存储器100可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述渲染方法,具体实现可参见方法实施例,在此不再赘述。

本发明实施例所提供的渲染方法、装置和终端设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或终端设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1