一种在三维可视化图形中的阴影渲染方法技术

技术编号:20920740 阅读:24 留言:0更新日期:2019-04-20 10:34
本发明专利技术涉及一种阴影渲染方法,该方法包括:为要渲染的区域确定第一深度基准面(Z1)和第二深度基准面(Z2),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更靠近光源(300)的第一深度基准面(Z1)的深度值映射为最大深度基准(Zmax),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更远离光源(300)的第二深度基准面(Z2)的深度值映射为最小深度基准(Zmin),本发明专利技术能够减少阴影的闪动。

A Shadow Rendering Method in 3D Visual Graphics

The invention relates to a shadow rendering method, which includes: determining the first depth datum (Z1) and the second depth datum (Z2) for the region to be rendered, mapping the depth values of the first depth datum (Z1) and the second depth datum (Z2) relatively closer to the light source (300) to the first depth datum (Zmax), and mapping the first depth datum (Z1) and the second depth datum (Z2) to the maximum depth datum (Zmax). The depth value of the second depth datum (Z2) in the datum level (Z2) which is relatively far away from the light source (300) is mapped to the minimum depth datum (Zmin), and the present invention can reduce the flicker of shadows.

【技术实现步骤摘要】
一种在三维可视化图形中的阴影渲染方法
本专利技术涉及阴影渲染方法,尤其涉及一种在三维可视化图形中的阴影渲染方法。
技术介绍
现实场景中,阴影是一种常见的光照现象,通常是指由于光沿直线传播被不透明物体阻挡而产生的黑暗区域。而在虚拟场景中,由三维建模生成的对象表示的阴影对于大体上可视化屏幕以及检测对象之间的相对关系是非常重要的。在实时渲染中,目前已有多种阴影渲染算法,这些算法主要分为三类,即全局光照算法、阴影映射算法和阴影体算法,其中以光线追踪为代表的全局光照算法虽然效果逼真,但计算量巨大,很难进行实时绘制,阴影映射算法和阴影体算法可视为全局光照方法的近似方法。阴影体算法由于对场景中的物体几何复杂程度有严重的依赖,且对场景中物体形状的构成有严格限制,因此适用性较差。而阴影映射算法对场景复杂度几乎没有任何限制,并且原理简单,绘制速度快,使得阴影映射算法成为了目前实时渲染领域最常用的阴影渲染算法,其基本原理是以光源为视点可看到场景中所有被照亮的部分,而光源看不到的区域则是阴影区域。传统的阴影映射方法主要分为两步:步骤1:以光源位置为视点对整个场景进行绘制,记录场景中每个可见像素的可见深度,这些可见深度信息代表了某像素上距离光源最近物体与光源之间的距离,将这些可见深度信息储存后构成深度纹理;步骤2:从真实视点的角度绘制场景,对于绘制的每个点或者说像素,计算其距离光源的距离或者说实际深度,并将距离光源的距离或者说实际深度与第一步绘制中生成的深度贴图中相应的深度值进行比较,若距离光源的距离>可见深度,或者说距离光源的实际深度>可见深度,则表示该点或者像素与光源之间还有其他物体,该点或者像素位于阴影中,否则,该点或者像素不在阴影中。为了进行深度比较,每个点或者像素的深度都要处理为[0~1]中的一个数字。根据现有技术的三维场景的阴影生成方法,离光源近的一个基准面为深度为0的基准面,离光源远的一个基准面为深度为1的基准面,然后基于则两个基准面来判断深度。这种基准面的设定方法虽然符合人们的认知习惯,但是导致的问题是靠近1的区域,浮点数精度明显劣于靠近0的区域,而三维场景中为了让灯光尽可能地照射到三维场景中的每个点和更好地模拟太阳光接近于平行照射地球的效果,会将灯光设置在远离三维场景的地方,以致于三维视图的阴影会出现闪动。而这种闪动不仅会对视觉效果造成影响,还可能影响观察者的情绪和造成观察者的视觉疲劳。
技术实现思路
针对现有技术之不足,本专利技术提供了一种阴影渲染方法,该方法包括:为要渲染的区域确定第一深度基准面和第二深度基准面,将第一深度基准面和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一深度基准面和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。根据一个优选实施方式,一种阴影渲染方法,该方法包括:限定要渲染的立体场景的全部或者部分的体的包络盒,其中,所述包络盒的垂直于光轴的第一虚拟面和第二虚拟面分别作为第一深度基准面和第二深度基准面,将第一和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。根据一个优选实施方式,一种阴影渲染方法,该方法包括:根据当前视点位置和方向确定当前可见物体;在三维场景确定当前可见物体的光束包络盒;依据所述包络盒的垂直于光轴的切面与所述被照射物体相交的接近顺序来确定第一深度基准面和第二深度基准面;基于第一深度基准面和第二深度基准面来确定所述被照射物体在三维场景中形成的阴影,其中,第一深度基准面被映射为最大深度基准Zmax,而第二深度基准面被映射为最小深度基准Zmin,其中,第一深度基准面相对于第二深度基准面更靠近光源。根据一个优选实施方式,最大深度基准为1,最小深度基准为0。根据一个优选实施方式,对于平行光源,投影变换如下:令w=光柱宽度,h=光柱高度,n=Z1,f=Z2,投影变换矩阵M如下:由此得到深度映射函数为:其中,Z1≤z≤Z2。根据一个优选实施方式,对于点光源,投影变换如下:令aspect=光锥的宽高比,fovY=光锥张角,n=Z1,f=Z2,优化后投影变换矩阵M如下:只考虑深度方向的分量得到深度映射函数为:其中,Z1≤z≤Z2。根据一个优选实施方式,该方法还包括:根据设定的最大深度基准和最小深度基准确定映射后的深度贴图;根据设定的最大深度基准和最小深度基准确定相应的像素的映射后的实际深度;和基于相应的像素的实际深度和深度贴图中相应的像素对应的可见深度进行阴影渲染。根据一个优选实施方式,该方法还包括:当从第一深度基准面到相应的像素的直线距离小于对应的深度值之时,确定相应的像素处于阴影中。根据一个优选实施方式,一种计算设备,所述计算设备被配置为执行如前述优选实施方式之一所述的方法。根据一个优选实施方式,一种中央处理器,所述中央处理器被配置为执行如前述优选实施方式之一所述的方法。根据一个优选实施方式,一种图形处理器,所述图形处理器被配置为执行如前述优选实施方式之一所述的方法。附图说明图1是本专利技术的一个优选实施方式的示意图;图2是现有技术中阴影映射的原理图,其中,图2a是一个空间点处于阴影内的原理示意图,图2b是一个空间点不处于阴影内的示意图;图3是现有技术的示意图;图4是计算机的浮点数精度分布图;图5是浮点数从0到1的密度变化趋势和现有技术主要利用的浮点位置示意图;图6是浮点数从0到1的密度变化趋势和本专利技术主要利用的浮点位置示意图;图7是本专利技术的一个优选实施方式的示意图;图8是采用平行光源的一个优选实施方式的示意图;图9是现有技术中利用平行光源的深度映射曲线;图10是本专利技术利用平行光源的深度映射曲线;图11是采用点光源的一个优选实施方式的示意图;图12是现有技术中利用点光源的深度映射曲线;图13是本专利技术利用点光源的深度映射曲线;和图14是本专利技术的一个优选实施方式的流程图。附图标记列表100:场景200:包络盒300:光源310:光轴400:真实视点Z1:第一深度基准面Z2:第二深度基准面Zmin:最小深度基准Zmax:最大深度基准ZA:视距ZB:直线距离P1:第一空间点P2:第二空间点z:映射前的深度数据具体实施方式下面结合附图1、2、3、4、5、6、7、8、9、10、11、12、13和14进行详细说明。实施例1本实施例公开了一种阴影生成方法,或者说一种阴影映射方法,或者说一种阴影渲染方法,或者说一种游戏场景内的阴影渲染方法,或者说一种虚拟场景内的阴影渲染方法,或者说一种应用于三维可视化图形的阴影渲染方法,或者说一种三维可视化图形中的阴影渲染方法,尤其是一种在三维可视化图形中的阴影渲染方法,在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。本专利技术的方法可以由本专利技术的系统和/或其他可替代的零部件实现。比如,通过使用本专利技术的系统中的各个零部件实现本专利技术的方法。根据一个优选实施方式,该方法可以包括为要渲染的区域确定第一深度基准面Z1和第二深度基准面Z2。该方法可以包括将第一和第二深度基准面Z2中相对更靠近光源300的第一深度基准面Z1的深度值设定为最大深度基准Zmax。该方法可以包括本文档来自技高网
...

【技术保护点】
1.一种阴影渲染方法,其特征在于,该方法包括:为要渲染的区域确定第一深度基准面(Z1)和第二深度基准面(Z2),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更靠近光源(300)的第一深度基准面(Z1)的深度值映射为最大深度基准(Zmax),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更远离光源(300)的第二深度基准面(Z2)的深度值映射为最小深度基准(Zmin)。

【技术特征摘要】
1.一种阴影渲染方法,其特征在于,该方法包括:为要渲染的区域确定第一深度基准面(Z1)和第二深度基准面(Z2),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更靠近光源(300)的第一深度基准面(Z1)的深度值映射为最大深度基准(Zmax),将第一深度基准面(Z1)和第二深度基准面(Z2)中相对更远离光源(300)的第二深度基准面(Z2)的深度值映射为最小深度基准(Zmin)。2.一种阴影渲染方法,其特征在于,该方法包括:限定要渲染的立体场景(100)的全部或者部分的体的包络盒(200),其中,所述包络盒(200)的垂直于光轴(310)的第一虚拟面和第二虚拟面分别作为第一深度基准面(Z1)和第二深度基准面(Z2),将第一和第二深度基准面(Z2)中相对更靠近光源(300)的第一深度基准面(Z1)的深度值映射为最大深度基准(Zmax),将第一和第二深度基准面(Z2)中相对更远离光源(300)的第二深度基准面(Z2)的深度值映射为最小深度基准(Zmin)。3.一种阴影渲染方法,其特征在于,该方法包括:根据当前视点位置和方向确定当前可见物体;在三维场景(100)确定当前可见物体的光束包络盒;依据所述包络盒(200)的垂直于光轴(310)的切面与所述被照射物体相交的接近顺序来确定第一深度基准面(Z1)和第二深度基准面(Z2);基于第一深度基准面(Z1)和第二深度基准面(Z2)来确定所述被照射物体在三维场景(100)中形成的阴影,其中,第一深度基准面(Z1)被...

【专利技术属性】
技术研发人员:赵耀李泳雷尧王瑶瑶
申请(专利权)人:北京达美盛科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1