一种层状结构人脸模型的真实感渲染方法与流程

文档序号:11251954阅读:416来源:国知局
一种层状结构人脸模型的真实感渲染方法与流程

本发明属于三维模型的真实感渲染技术,特别是涉及一种具有层状结构的人脸模型的真实感渲染方法。



背景技术:

长久以来,如何更快速的渲染出更真实的人脸一直是计算机图形学领域的一个重要课题,并且对许多领域也都有重要意义,比如虚拟现实,医学仿真,影视娱乐等等。现有技术中,游戏制作软件中常使用的渲染技术是hlsl(highlevelshaderlanguage),它能将一些复杂的图像处理,快速而又有效率地在显示卡上完成。常使用的方法是双向反射分布函数(bidirectionalreflectancedistributionfunction,brdf)模型。brdf假定光线在物体上的入射位置和出射位置是在同一点上,并没有考虑光线在物体内部发生的多次的吸收和散射现象。因此,brdf对不透明物体的渲染效果非常出色,比如金属等,却不能很好的渲染半透明物体。而在真实世界中,绝大部分物体都是半透明的,如玉石,大理石,水果,雪和人类的皮肤等。其中人脸又具有其特殊性,是一个典型的具有三层结构的半透明材质,从外到内依次是表皮层,真皮层和皮下组织。人脸上的光反应主要包括发生在表皮层的各向异性反射以及发生在真皮层的次表面散射。使用brdf方法渲染人脸并不能反应光在真皮层的散射和吸收现象,故渲染效果僵硬,缺少人脸特有的红润透明感。



技术实现要素:

本发明的目的是提供一种真实感渲染层状结构人脸模型的方法,达到在实时渲染的前提下兼顾高真实感效果。

本发明所采用的技术方案是,一种层状机构人脸模型的真实渲染方法,包括以下步骤:

步骤1,准备人脸数据,所述人脸数据包括:人脸三维模型、人脸的漫反射纹理、人脸的法线纹理和皮肤细节纹理;

步骤2,将环境光光强iam,皮脂层的镜面反射光光强isp,表皮层的漫反射光光强idiff和真皮层的次表面散射光光强之和(ir2,ig2,ib2)输出至人脸模型,通过式(1)得到最终的渲染效果i;

i=iam+ihdiff+(ir2,ig2,ib2)+isp(1)

式(1)中:

iam=kd·globalambient,kd为反射系数,0<kd<1,globalambient是环境光光强;

idiff=kdi1(n·l),kd为反射系数,0<kd<1,所述光源i1为随机设定的照射在表皮层上的自然光;i1为随机设定的照射在表皮层上的自然光光强,i1为100lux~130lux,n为人脸模型的顶点单位法向量,l表示从人脸模型的顶点指向光源的单位向量;

ks是镜面反射系数,0.3≤ks≤0.4;ns是高光指数,1.3≤ns≤1.4;l表示从人脸模型的顶点指向光源的单位向量,v表示设定的实际观察人脸模型的方向,t是人脸模型的顶点切向量;

ir2=kdi2.r(n1·l1),ig2=kdi2.g(n1·l1),ib2=kdi2.b(n1·l1);i2.r、i2.g、i2.b分别是光源i2在红、绿、蓝三原色上的强度分量;

通过式(2)、(3)得到光源i2的光强:

i2=0.9i1-ilose(2)

式(2)、(3)中,θi为光源i1进入真皮层的角度,θr为光源i1离开真皮层的角度,ilose为当光源i1以θi的角度进入真皮层,并以θr角度离开真皮层时损失的光强;i1为光源i1的光强;d为真皮层的厚度,单位为mm;a为吸收系数;

通过式(4)、(5)得到次表面上的顶点法向量n1和入射光l1的方向:

n1=n+n*d(4)

l1=l+l*d(5)

式(4)、(5)中,n为人脸模型的顶点单位法向量,l表示从人脸模型的顶点指向光源的单位向量;d为人脸表皮层厚度,单位为mm。

进一步地,真皮层的厚度d=4mm,a为0.03~0.07。

本发明的有益效果是

与双向反射分布函数(brdf)方法相比,本发明能更好地表现出人脸模型的半透明特性,在保证实时渲染的同时提高了渲染效果的真实感。

附图说明

图1是本发明方法的流程图;

图2是介质对光的吸收示意图;

图3是未经过渲染的原始人脸模型;

图4是经过渲染后的人脸模型。

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。

本发明由于模拟了真皮层的散射和吸收现象,渲染出来的效果不仅表现出了皮肤皮脂层所具有的一定的油光感,整体表现也更加柔和透明,尤其是在脸颊和耳朵部位。在渲染时间上,本发明只多增加一个光源参数和一个散射光计算分量,渲染时间在0.6ms左右。

实施例1

本实施例提供了一种层状机构人脸模型的真实渲染方法,如图1所示,包括以下步骤:

步骤1,人脸的数据准备,包括一个人脸的三维模型,人脸的漫反射纹理,人脸的法线纹理和皮肤细节纹理。如图3所示为未经过渲染的原始人脸模型;看起来呆板僵硬。

步骤2,设置场景中的光源为i1和i2。i1表示的是表皮层入射光的光源强度,(一般为自然光,光强约为100lux~130lux)。i2的作用是用来模拟人脸真皮层中的散射现象的入射光。由皮肤组织的光学特性可知,只有约6%的光源在人脸表皮层发生漫反射现象,大部分光线进入真皮层经过内部的皮肤组织多次散射和吸收后再射出。

真皮层对照射在其上的光线的吸收性可以近似用朗伯比尔定律来计算,见图2。朗伯比尔定律指的是垂直照射到半透明介质上的光线,每等厚度的介质所吸收光线的强度相等。设真皮层的厚度为d(约为4mm),吸收系数为a(依据年龄的不同在0.03~0.07之间),当入射光线i1以θi的角度进入真皮层,并以θr角度离开真皮层时,整个过程中损失的光强为:

因此,散射光i2的光强等于i1减去表皮层上的漫反射光强和真皮层上被吸收的光强:

i2=0.9i1-ilose

又因为皮肤中的色基组织,如血红蛋白、黑色素、胆红素等对不同的波长的光线有不同的吸收效果。一般来说,色基组织对蓝光和绿光吸收较多,对红光的吸收性较差,这也是人脸会表现出红润感的原因。所以i2的光源颜色应该设置为偏红色。

步骤3,计算环境光强度。环境光是从物体表面所产生的反射光的统一照明,没有空间或方向性,在所有方向上和所有物体表面上投射的环境光强度是统一的恒定值。计算方程为:

iam=kd·globalambient;

其中,kd(0<kd<1)是材质对环境光的反射系数,globalambient是环境光光强,由hlsl提供,是一个恒定值。

步骤4,根据光源i1计算人脸的镜面反射强度。人的皮肤一般会分泌一层油性物质,在表皮上形成一层油脂,被称作皮脂层。光线照射到皮肤上时,首先会有一部分光在皮脂层发生镜面反射,如果皮脂腺分泌皮脂旺盛,那么反射光增强,皮肤看起来油光锃亮,如果皮脂腺分泌功能衰弱,皮肤看起来更柔和,更暗淡。故首先计算的是在皮脂层发生的镜面反射,反射方程为:

其中,i1是步骤102中设置的光源i1,ks是镜面反射系数,取值0.3。ns是高光指数,反映了物体表面的光泽程度,取值1.3。l是入射光线方向。v表示实际的观察方向。t是顶点切向量,因为一个三维空间点可能存在无数个切向量,为了方便起见,通常采用顶点的法向量和视线方向做叉积。

步骤5,根据光源i1计算表皮层的漫反射强度。漫反射方程为:

idiff=kdi1(n·l)

其中,i1是步骤102中设置的光源i1,kd是在步骤3中提到的材质对环境光的反射系数,n为顶点单位法向量,l表示从顶点指向光源的单位向量。为了进一步提高物体在一些光照无法照射到的区域的强度,可令

ihdiff=idiff*0.5+0.5

这个技术是完全没有基于任何物理原理的,而仅仅是一种感性的视觉增强。

步骤6,由于表皮层同样具有一定的厚度,模型的次表面的顶点法向量和入射光线方向较之表面会有一定的变化。这里应根据模型表面即人脸表皮层厚度d(约为1mm)和表面的顶点法向量n和入射光方向l重新计算得到次表面上的顶点法向量n1和入射光l1方向。

n1=n+n*d

l1=l+l*d

再分别计算光源i2的r、g、b分量的散射光:

ir2=kdi2.r(n1·l1)

ig2=kdi2.g(n1·l1)

ib2=kdi2.b(n1·l1)

i2.r、i2.g、i2.b分别是光源i2在红、绿、蓝三原色上的强度分量;

步骤7,将步骤103、104、105和106计算得到的环境光光强,皮脂层的镜面反射光光强,表皮层的漫反射光光强和真皮层的次表面散射光光强之和输出至人脸模型,得到最终的渲染效果,即:

i=iam+ihdiff+(ir2,ig2,ib2)+isp

如图4为经过渲染后的人脸模型,和图3的未经过渲染的原始人脸模型相比,看起来生动且具有真实感。

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