一种阴影映射方法及装置与流程

未命名 07-26 阅读:115 评论:0

一种阴影映射方法及装置
1.本发明是申请号为201910013863.5,申请日为2019年01月07日,申请名称为一种在三维可视化图形中的阴影渲染方法,申请类型为发明的发明专利的分案申请。
技术领域
2.本发明涉及阴影渲染方法,尤其涉及一种阴影映射方法及装置。


背景技术:

3.现实场景中,阴影是一种常见的光照现象,通常是指由于光沿直线传播被不透明物体阻挡而产生的黑暗区域。而在虚拟场景中,由三维建模生成的对象表示的阴影对于大体上可视化屏幕以及检测对象之间的相对关系是非常重要的。在实时渲染中,目前已有多种阴影渲染算法,这些算法主要分为三类,即全局光照算法、阴影映射算法和阴影体算法,其中以光线追踪为代表的全局光照算法虽然效果逼真,但计算量巨大,很难进行实时绘制,阴影映射算法和阴影体算法可视为全局光照方法的近似方法。阴影体算法由于对场景中的物体几何复杂程度有严重的依赖,且对场景中物体形状的构成有严格限制,因此适用性较差。而阴影映射算法对场景复杂度几乎没有任何限制,并且原理简单,绘制速度快,使得阴影映射算法成为了目前实时渲染领域最常用的阴影渲染算法,其基本原理是以光源为视点可看到场景中所有被照亮的部分,而光源看不到的区域则是阴影区域。
4.传统的阴影映射方法主要分为两步:
5.步骤1:以光源位置为视点对整个场景进行绘制,记录场景中每个可见像素的深度,这些深度信息代表了某像素上距离光源最近物体与光源之间的距离,将这些深度信息储存后构成深度纹理;
6.步骤2:从真实视点的角度绘制场景,对于绘制的每个点,计算其距离光源的距离,并将距离光源的距离与第一步绘制中生成的深度贴图中相应的深度值进行比较,若距离光源的距离>深度值,则表示该点与光源之间还有其他物体,该点位于阴影中,否则,该点不在阴影中。
7.为了进行深度比较,每个点的深度都要处理为[0~1]中的一个数字。根据现有技术的三维场景的阴影生成方法,离光源近的一个基准面为深度为0的基准面,离光源远的一个基准面为深度为1的基准面,然后基于则两个基准面来判断深度。这种基准面的设定方法虽然符合人们的认知习惯,但是导致的问题是靠近1的区域,浮点数精度明显劣于靠近0的区域,而三维场景中为了让灯光尽可能地照射到三维场景中的每个点和更好地模拟太阳光接近于平行照射地球的效果,会将灯光设置在远离三维场景的地方,以致于三维视图的阴影会出现闪动。而这种闪动不仅会对视觉效果造成影响,还可能影响观察者的情绪和造成观察者的视觉疲劳。
[0008]
公开号为cn104103092a的中国专利公开了一种基于聚光灯实时动态阴影的实现方法,主要包括:a、遍历场景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染;b、在灯光空间下渲染场景时,获取离光源最近所有像素投射的深度图;c、正常渲染场
景时,将相机空间转化到灯光空间下得到的像素的新位置的深度值进行比较,当像素的新位置深度值大于深度图时,该像素处于阴影中;然后将阴影与场景颜色混合,投射到屏幕上。但是,该技术方案中所涉及的深度基准面的设置并非针对同一参照空间设定的,需要进行不同坐标空间的转换,该技术方案通过将灯光空间位置转换到视锥体投影空间,并通过转化后的矩阵计算每个点的投影坐标,其中的投影坐标的z值即为深度值,当正常渲染场景时,基于相机空间渲染了一张纹理图,包含物体的纹理以及深度值,然后先转化为世界空间位置,灯光空间也是基于世界空间位置来说,如果做深度比较,必须把世界空间位置转化到灯光空间才可以做比较。
[0009]
本发明中,根据映射或者设定的最大深度基准z
max
和映射或者设定的最小深度基准z
min
确定相应的像素是否处于阴影中,由于将第一深度基准面z1和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值设定为最大深度基准z
max
,将第一深度基准面z1和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值设定为最小深度基准z
min
。这与该技术专利是完全相反的。


技术实现要素:

[0010]
针对现有技术之不足,本发明提供了一种三维可视化图形中的阴影渲染方法,该方法包括:为要渲染的区域确定第一深度基准面和第二深度基准面,将第一深度基准面和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一深度基准面和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。
[0011]
根据一个优选实施方式,该方法包括:限定要渲染的立体场景的全部或者部分的体的包络盒,其中,所述包络盒的垂直于光轴的第一虚拟面和第二虚拟面分别作为第一深度基准面和第二深度基准面,将第一和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。
[0012]
根据一个优选实施方式,一种三维可视化图形中的阴影渲染方法,该方法包括:根据当前视点位置和方向确定当前可见物体;在三维场景确定当前可见物体的光束包络盒;依据所述包络盒的垂直于光轴的切面与所述被照射物体相交的接近顺序来确定第一深度基准面和第二深度基准面;基于第一深度基准面和第二深度基准面来确定所述被照射物体在三维场景中形成的阴影,其中,第一深度基准面被映射为最大深度基准z
max
,而第二深度基准面被映射为最小深度基准z
min
,其中,第一深度基准面相对于第二深度基准面更靠近光源。
[0013]
根据一个优选实施方式,最大深度基准为1,最小深度基准为0。
[0014]
根据一个优选实施方式,对于平行光源,投影变换如下:令w=光柱宽度,h=光柱高度,n=z1,f=z2,投影变换矩阵m如下:
[0015][0016]
由此得到深度映射函数为:其中,z1≤z≤z2。
[0017]
根据一个优选实施方式,对于点光源,投影变换如下:
[0018]
令aspect=光锥的宽高比,fovy=光锥张角,n=z1,f=z2,优化后投影变换矩阵m如下:
[0019][0020]
只考虑深度方向的分量得到深度映射函数为:其中,z1≤z≤z2。
[0021]
根据一个优选实施方式,该方法还包括:当从第一深度基准面z1到相应的像素的直线距离小于对应的深度值之时,确定相应的像素处于阴影中。
[0022]
根据一个优选实施方式,一种计算设备,所述计算设备被配置为执行如前述优选实施方式之一所述的方法。
[0023]
根据一个优选实施方式,一种中央处理器,所述中央处理器被配置为执行本发明的方法。
[0024]
根据一个优选实施方式,一种图形处理器,所述图形处理器被配置为执行如前述优选实施方式之一所述的方法。
附图说明
[0025]
图1是本发明的一个优选实施方式的示意图;
[0026]
图2是现有技术中阴影映射的原理图,其中,图2a是一个空间点处于阴影内的原理示意图,图2b是一个空间点不处于阴影内的示意图;
[0027]
图3是现有技术的示意图;
[0028]
图4是计算机的浮点数精度分布图;
[0029]
图5是浮点数从0到1的密度变化趋势和现有技术主要利用的浮点位置示意图;
[0030]
图6是浮点数从0到1的密度变化趋势和本发明主要利用的浮点位置示意图;
[0031]
图7是本发明的一个优选实施方式的示意图;
[0032]
图8是采用平行光源的一个优选实施方式的示意图;
[0033]
图9是现有技术中利用平行光源的深度映射曲线;
[0034]
图10是本发明利用平行光源的深度映射曲线;
[0035]
图11是采用点光源的一个优选实施方式的示意图;
[0036]
图12是现有技术中利用点光源的深度映射曲线;
[0037]
图13是本发明利用点光源的深度映射曲线;和
[0038]
图14是本发明的一个优选实施方式的流程图。
[0039]
附图标记列表
[0040]
100:场景
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
200:包络盒
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
300:光源
[0041]
310:光轴
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
400:真实视点
ꢀꢀꢀꢀꢀꢀꢀ
z1:第一深度基准面
[0042]
z2:第二深度基准面z
min
:最小深度基准z
max
:最大深度基准
[0043]
za:视距zb:直线距离p1:第一空间点
[0044]
p2:第二空间点
具体实施方式
[0045]
下面结合附图1、2、3、4、5、6、7、8、9、10、11、12、13和14进行详细说明。
[0046]
实施例1
[0047]
本实施例公开了一种阴影生成方法,或者说一种阴影映射方法,或者说一种阴影渲染方法,或者说一种游戏场景内的阴影渲染方法,或者说一种虚拟场景内的阴影渲染方法,尤其是一种三维可视化图形中的阴影渲染方法,在不造成冲突或者矛盾的情况下,其他实施例的优选实施方式的整体和/或部分内容可以作为本实施例的补充。本发明的方法可以由本发明的系统和/或其他可替代的零部件实现。比如,通过使用本发明的系统中的各个零部件实现本发明的方法。
[0048]
根据一个优选实施方式,该方法可以包括为要渲染的区域确定第一深度基准面z1和第二深度基准面z2。该方法可以包括将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值设定为最大深度基准z
max
。该方法可以包括将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值设定为最小深度基准z
min
。优选地,该方法可以包括:根据设定的最大深度基准z
max
,和最小深度基准z
min
渲染阴影。优选地,该方法可以包括:根据设定的最大深度基准z
max
和最小深度基准z
min
确定相应的空间点是否处于阴影中。优选地,该方法可以用于游戏场景内的阴影渲染,特别是用于三维的游戏场景内的阴影渲染。
[0049]
根据一个优选实施方式,该方法可以包括:根据映射或者设定的最大深度基准z
max
和映射或者设定的最小深度基准z
min
确定相应的像素是否处于阴影中。由于将第一深度基准面z1和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值设定为最大深度基准z
max
,将第一深度基准面z1和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值设定为最小深度基准z
min
,导致本发明与现有技术存在差别。现有技术中,遮光点离光源越远具有更大的深度值,离光源越近具有更小的深度值。而本发明中,实
际上离光源越远的遮光点具有更小的深度值,离光源越近具有更大的深度值。要判断是否处于阴影内的空间点距离光源的直线距离也与现有技术不同。现有技术中,空间点离光源越远具有更大的直线距离,离光源越近具有更小的直线距离。而本发明中,实际上离光源越远的空间点具有更小的直线距离,离光源越近具有更大的直线距离。因此,该方法可以包括:当从第一深度基准面z1到相应的像素的直线距离小于对应的深度值之时,确定相应的像素处于阴影中。而如背景技术中提到的,现有技术中是当从第一深度基准面z1到像素的直线距离大于对应的深度值之时,确定该像素处于阴影中。
[0050]
根据一个优选实施方式,该方法可以包括:将包络盒中对应于显示图像的局部场景分为独立渲染的若干子盒。该方法可以包括:确定相应子盒内的最小深度值和图像区内的最大深度值。该方法可以包括:确定相应子盒对应的所有像素中具有到第一深度基准面z1的最大直线距离的像素。该方法可以包括:当相应子盒对应的所有像素中具有到第一深度基准面z1的最大直线距离的像素的最大直线距离小于相应子盒内的最小深度值之时,确定相应子盒对应的所有像素处于阴影中。该方法可以包括:响应于确定相应子盒对应的所有像素处于阴影中而不执行对相应子盒中的每个像素都读取深度值来确定每个像素都处于阴影中。本发明采用此方式至少能够实现以下有益技术效果:第一,将包络盒分为若干子盒后,分区渲染效果更好;第二,当相应子盒对应的所有像素中具有到第一深度基准面z1的最大直线距离的像素的最大直线距离小于相应子盒内的最小深度值之时,则必然该子盒内所有像素都处于阴影中,没有必要继续对每个像素都读取深度值判断是否处于阴影中,加快了阴影渲染的速度。根据一个优选实施方式,该方法可以包括:确定若干子盒中包络了一连续物体的所有子盒,确定该连续的物体的阴影的轮廓,将确定的若干子盒中包络了该连续物体的所有子盒对应的所有像素中相对更靠近阴影的轮廓的像素填充颜色深度越浅的阴影。
[0051]
根据一个优选实施方式,该方法可以包括:为要渲染的区域确定第一深度基准面z1和第二深度基准面z2,将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值映射为最大深度基准z
max
。该方法可以包括:将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值映射为最小深度基准z
min

[0052]
根据一个优选实施方式,。该方法可以包括:限定要渲染的立体场景100的全部或者部分的体的包络盒200,包络盒200的垂直于光轴310的第一虚拟面和第二虚拟面分别作为第一深度基准面z1和第二深度基准面z2。该方法可以包括:将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值映射为最大深度基准z
max
。该方法可以包括:将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值映射为最小深度基准z
min
。第一虚拟面可以相对于第二虚拟面更靠近于光源300。优选地,最大深度基准z
max
可以为1,最小深度基准z
min
可以为0。
[0053]
根据一个优选实施方式,该方法可以包括:为要渲染的区域确定第一深度基准面z1和第二深度基准面z2。该方法可以包括:将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值映射为1。该方法可以包括:将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值映射为0。现有技术中,是按照习惯把更靠近光源300的第一深度基准面z1的深度值映射为0,而把更远离光源300的第二深度基准面z2的深度值映射为1。但问题是靠近1的区域,浮点数精度比靠近0的区域差很多,以致于
视图的阴影会出现闪动。
[0054]
根据一个优选实施方式,该方法可以包括:限定要渲染的立体场景100的全部或者部分的体的包络盒200。该方法可以包括:将包络盒200的垂直于光轴310的第一虚拟面和第二虚拟面分别作为第一深度基准面z1和第二深度基准面z2。该方法可以包括:将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值映射为1。该方法可以包括:将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值映射为0。第一虚拟面可以相对于第二虚拟面更靠近于光源300。优选地,光轴310可以是指光源300的光轴310,更具体地,可以是指光源300发出的光束或者光柱的中心线。
[0055]
根据一个优选实施方式,。该方法可以包括:根据当前视点位置和方向确定当前可见物体。该方法可以包括:在三维场景100确定当前可见物体的光束包络盒。该方法可以包括:依据包络盒200的垂直于光轴310的切面与被照射物体相交的接近顺序来确定第一深度基准面z1和第二深度基准面z2。该方法可以包括:基于第一深度基准面z1和第二深度基准面z2来确定被照射物体在三维场景100中形成的阴影。优选地,第一深度基准面z1可以被映射为最大深度基准z
max
。第二深度基准面z2可以被映射为最小深度基准z
min
。优选地,第一深度基准面z1相对于第二深度基准面z2更靠近光源300。
[0056]
根据一个优选实施方式,该方法可以包括:
[0057]
s1:在三维场景100中确定被照射物体构成的包络盒200;
[0058]
s2:确定光源300光束在照射经过包络盒200时形成的光束包络线,其中,光束包络线在三维场景100中构成包络盒200;
[0059]
s3:依据包络盒200的垂直于光轴310的切面与被照射物体相交的接近顺序来确定第一深度基准面z1和第二深度基准面z2;
[0060]
s4:基于第一深度基准面z1和第二深度基准面z2来确定被照射物体在三维场景100中形成的阴影,其中,第一深度基准面z1被映射为最大深度基准z
max
,而第二深度基准面z2被映射为最小深度基准z
min
,其中,第一深度基准面z1相对于第二深度基准面z2更靠近光源300。优选地,光源300光束可以为长方体柱形、圆柱形和锥形中的至少一种。优选地,光束包络盒可以是包络盒。
[0061]
根据一个优选实施方式,参见图2和图3,图2和图3是本领域的现有技术,由于认知习惯和行业习惯,本领域的人员都习惯性地将深度基准由小到大按照从光源300方向往远离光源300方向的顺序进行设置。此处以图2为例叙述传统的阴影映射方法,图2很好地解释了阴影映射的原理。先参见图2a,将第一空间点p1在场景100内与第一深度基准面z1的直线距离zb与场景100中光源300与第一空间点p1的连线方向上的视距za相比较,如果直线距离zb大于视距za,则光源300与第一空间点p1的连线中有物体遮挡,该第一空间点p1在阴影中。再参见图2b,将第二空间点p2在场景100内与第一深度基准面z1的直线距离zb与场景100中光源300与第一空间点p1的连线方向上的视距za相比较,如果直线距离zb等于视距za,则光源300与第一空间点p1的连线中没有物体遮挡,该第二空间点p2不处于阴影中。优选地,视距za是第一深度基准面z1和遮挡物在光源300与第一空间点p1的连线方向的距离,也是光从第一深度基准面z1向第一空间点p1方向发射所能达到的距离。但是,正如背景技术中提到的,这种设置会引起渲染的阴影出现闪动。因此,申请人通过研究,在本领域的技术人员没有都没有考虑到浮点数精度变化趋势与阴影渲染的对象在最小深度基准z
min
和最大深度基准zmax
之间分布规律的关系的情况下,将最小深度基准z
min
和最大深度基准z
max
的位置交换。虽然违背了认知习惯和行业习惯,但是取得了现有技术根本没有启示的、意想不到的技术效果。为了便于理解,此处给出更细致的说明。参见图3,图3示出了一种现有技术。现有技术中是将第一深度基准面z1和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值映射为最小深度基准z
min
,将第一深度基准面z1和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值映射为最大深度基准z
max
,这与本发明的设置是相反的。参见图4,图4给出了一张浮点数精度分布图。以32位浮点数为例,即图4中处于上方的线段所示,接近0的地方,即10-12
附近的最小可辨别精度约为10-19
,而在接近1的地方,即100所处的最小可辨别精度为10-7
。如果把0到1内每一个浮点表达的值画在数轴上,会得到类似图5所示的密度效果。即,在越接近0的地方,点越密,越远离0的地方点越稀。需要注意的是,为了更直观地展示,其中仅示出了部分点以表示了浮点数从0到1的密度变化趋势,实际情况点数会更多。由此可见浮点数在计算机中的表示是不连续的。由于浮点数的不连续性,本身可以比较出大小的视距za和直线距离zb在进行一系列变换之后,可能就被映射到了[0,1]内的一个相同的位置,原来的zb>za可能会变成zb=za,并且在越远离0的地方,这种出错的机会越大,因为越远离0的地方点越稀。阴影计算过程中会把三维物体上的一个点,比如图2中的第一空间点p1经过一系列变换,最终转换到[0,1]内的一个具体的直线距离zb,然后再与预先渲染的场景100深度图中相应位置的最小深度,或者说视距za做对比,如果zb>z
a-m,则说明被遮挡,做变暗处理,否则不被遮挡,正常计算光照,其中,m是一个正值,而且是一个很小的正值,以避免一个点被其自身遮挡。此时如果场景100中的三维物体、光源300或者相机的位置稍微移动就会导致zb>z
a-m和zb=z
a-m这两种情况来回跳动,即参见图5所示情况,在点稀疏的地方两个差距不明显的点可能这里提到的情况,从而导致程序在变暗和正常光照之间来回跳动形成闪动,这种闪动在远离0的地方越明显。而如果把远离光源300的一端映射到0,近光源300的一端映射到1,就可以从视觉上减少这种闪动。虽然闪动不可避免,但闪动相对于现有技术而言会少很多。因为大多情况是在远离光源300的地方查看三维物体,而在0附近,可以更加精确的区分出浮点数大小。而参见图6,如果将最小和最大深度基准z
max
互换位置,则相应的点可以位于更靠近0值的区域附近,而此时数值的大小可以更精确的表示,从而可以精确地比较两个值的大小,进而改善闪动的情况。再参见图7,为了更逼真的模拟真实环境的阴影,一般包络盒200除了将真实视点400能看到的区域包络进去,还会稍微扩大一些,以将会投射到真实视点400能看到的区域的物体的阴影投射到真实视点400能看到的区域内,比如把右侧的建筑物投影到真实视点400能看到的区域。图7中包络盒200内的小虚线框可以是真实视点400能看到的区域,而包络盒200则包络了一个相对更大的体。真实视点400能看到的区域实际上大多都是在更靠近于第二深度基准面z2的位置,由此,将第二深度基准面z2设定为最小深度基准z
min
能改善闪动的情况,起到本领域现有技术意想不到的技术效果。再参见图8,在三维场景100内存在两个立体物体,在该图中以侧视图中的黑色方条表示这两个立体物体的侧面。在该图中,还可以看到该场景100内的光线入射方向为从右上方向左下方投射平行光。为了确定投影而虚拟设定包络盒200,该包络盒200靠近光线入射方向的包络面表示为z1,该包络盒200远离光线入射方向的包络面z2,其中,这两个包络面均与光线入射方向正交且分别与两个立体物体的最外侧顶点相切。沿光线投射方向定义深度值,即直线距离zb。对于该三维场景100内的物体而言,因其外形连续,其表面
各处的zb值本应为连续值。然而,由于计算机需要以离散数据来表达,故此存在误差。在图8中,右侧黑色方条代表的物体的右下角与光源300的距离大于右上角与光源300的距离,所以右下角的zb值精度更低。因此,对于右侧黑色柱状体而言,因其右下角更远离光源300,所以三维图形的底部区域更容易闪动,而这对三维场景100造成了困扰。
[0062]
根据一个优选实施方式,参见图8,对于平行光的投影,常规投影变换如下:
[0063]
令w=光柱宽度,h=光柱高度,n=z1,f=z2,优化前投影变换矩阵m如下:
[0064][0065]
只考虑深度方向的分量,即沿光线投射方向,可以得到深度映射函数为:
[0066]
其中,z1≤z≤z2,令z1=10,z2=1000,可以得到如图9所示的深度映射曲线。在这种情形下,可以看到在远端1000米的地方,即靠近场景100内被观察物体之处,深度值被映射到1,近端则映射到0。在优化之前,根据靠近场景100内被观察物体之处的数值接近1,故精度不够,由此会出现闪动问题。比如,假设空间点对应的z=900,
[0067]
对于平行光的投影,经本发明优化后的投影变换如下:
[0068]
令w=光柱宽度,h=光柱高度,n=z1,f=z2,优化后投影变换矩阵m如下:
[0069][0070]
深度映射函数为:其中,z1≤z≤z2,对应的深度映射曲线参见图10。优化之后:可以看到在远端1000米的地方,即靠近场景100内被观察物体之处,深度值被映射到0,近端则映射到1,优化后,因为因为的浮点数值在靠近场景100内被观察物体之处接近零,故精度高,不易出现闪动。比如,对于前面提及的优化前假设的z=900的空间点,
在优化后,其对应的z=110,其
[0071]
根据一个优选实施方式,参见图11,对于点光源300的投影方法,常规投影变换如下:
[0072]
令aspect=光锥的宽高比,fovy=光锥张角,n=z1,f=z2,优化前投影变换矩阵m如下:
[0073][0074]
只考虑深度方向的分量可以得到深度映射函数为:其中,z1≤z≤z2,
[0075]
令z1=10,z2=1000,可以得到如图12所示的深度映射曲线。优化前,远端1000米的地方,深度值被映射到1,近端则映射到0,并且,更糟糕的是接近0的高精度的值会被很快用完,远端只剩下低精度的值。
[0076]
对于点光源300的投影方法,经本发明优化后的投影变换如下:
[0077]
令aspect=光锥的宽高比,fovy=光锥张角,n=z1,f=z2,优化后投影变换矩阵m如下:
[0078][0079]
只考虑深度方向的分量可以得到深度映射函数为:其中,z1≤z≤z2。令z1=10,z2=1000,可以得到如图13所示的深度映射曲线。从图13可以看出,远端1000米的地方,深度值被映射到0,近端则映射到1。即,远端可以更多地利用高精度的值来减少闪动。
[0080]
根据一个优选实施方式,该方法可以包括:确定两个彼此平行且垂直于光轴310的第一虚拟面和第二虚拟面。第一虚拟面可以相对于第二虚拟面更靠近于光源300。该方法可以包括:将用于作为确定三维场景100中被照射物体的深度的第一虚拟平面的第一法向深
度值映射为1该方法可以包括:将用于确定三维场景100中被照射物体的深度的第二虚拟平面的第二法向深度值映射为0。
[0081]
根据一个优选实施方式,该方法可以包括:在限定要渲染的立体场景100的全部或者部分的体的包络盒200且确定第一深度基准面z1之后,确定第一深度基准面z1的向量与立体场景100内设定的水平面之间的夹角。该方法可以包括:根据夹角确定阴影的颜色深度。该方法可以包括:夹角的绝对值越大,阴影的颜色深度越高或者颜色深度越浅。优选地,夹角的绝对值越大,阴影的颜色深度越浅该方法可以包括:将要渲染的立体场景100放置在一虚拟地球的相应位置上。该方法可以包括:设定移动的光源作为要渲染的立体场景100内的虚拟太阳。该方法可以包括:根据真实世界的当前时间和当前时间内真实太阳相对于地球的运动轨迹控制虚拟太阳相对于虚拟地球的运动轨迹。优选地,根据真实世界的当前时间和当前时间内真实太阳相对于地球的运动轨迹控制虚拟太阳相对于虚拟地球的运动轨迹可以是周期性控制的。比如,周期可以是1秒、1分钟、5分钟、10分钟、30分钟或者1小时。周期的大小可以根据当前计算设备的性能设定。本发明采用此方式至少能够实现以下有益技术效果:让游戏者能够根据阴影颜色深浅变化和位置变化感受真实世界的时间,既能提高阴影的渲染真实性,又能让部分游戏者间接感觉时间的变化,防止部分游戏者沉沦游戏而不能感受时间消逝的问题,相当于对其起到心理暗示的作用。
[0082]
根据一个优选实施方式,该方法可以包括:在游戏场景中确定动态移动的游戏角色,通过阴影图绘制出游戏人物的阴影的轮廓,利用阴影填充位于轮廓内的像素。本发明采用此方式至少能够实现以下有益技术效果:渲染速度更快。优选地,该方法可以包括:在利用阴影填充位于轮廓内的像素之时,为相对更靠近阴影的轮廓的像素填充颜色深度越浅的阴影。
[0083]
根据一个优选实施方式,该方法可以包括:确定相应的阴影属于静态阴影还是动态阴影,针对静态阴影,在光源和造成阴影的物体的相对位置未改变的情况下基于前次确定的阴影进行渲染,针对动态阴影,采用实时渲染的方式确定阴影。本发明采用此方式至少能够实现以下有益技术效果:能够减少计算开销,渲染速度更快。优选地,该方法可以包括:在阴影渲染时,对静止物体应用静态深度纹理,对运动物体应用动态深度纹理。根据一个优选实施方式,一种计算设备,计算设备可以被配置为执行本发明的方法的全部或者本发明的方法的至少一部分。优选地,计算设备包括存储器、至少一个中央处理器和/或至少一个图形处理器。存储器可以存储一个或多个指令。至少一个中央处理器和/或至少一个图形处理器可以被配置为在执行一个或者多个指令时执行本发明的方法的全部或者本发明的方法的至少一部分。优选地,中央处理器即cpu,图形处理器即gpu。比如,该计算设备可以被配置为:为要渲染的区域确定第一深度基准面z1和第二深度基准面z2,将第一和第二深度基准面z2中相对更靠近光源300的第一深度基准面z1的深度值设定为最大深度基准z
max
,将第一和第二深度基准面z2中相对更远离光源300的第二深度基准面z2的深度值设定为最小深度基准z
min
,根据设定的最大深度基准z
max
,和最小深度基准z
min
渲染阴影。该计算设备可以被配置为:根据设定的最大深度基准z
max
和最小深度基准z
min
确定相应的空间点是否处于阴影中。该计算设备被配置为:从第一深度基准面z1到像素的直线距离小于对应的深度值之时,确定该像素处于阴影中。为了简要,这里仅仅是举例性质的,并未穷举。
[0084]
根据一个优选实施方式,一种中央处理器,中央处理器可以被配置为执行本发明
的方法的全部或者本发明的方法的至少一部分。该中央处理器可以藕接或者耦合到存储有一个或者多个指令的存储器,该中央处理器可以被配置为执行一个或者多个指令时执行本发明的方法的全部或者本发明的方法的至少一部分。
[0085]
根据一个优选实施方式,一种图形处理器,图形处理器可以被配置为执行本发明的方法的全部或者本发明的方法的至少一部分。该图形处理器可以藕接或者耦合到存储有一个或者多个指令的存储器。该图形处理器可以被配置为执行一个或者多个指令时执行本发明的方法的全部或者本发明的方法的至少一部分。
[0086]
需要注意的是,上述具体实施例是示例性的,本领域技术人员可以在本发明公开内容的启发下想出各种解决方案,而这些解决方案也都属于本发明的公开范围并落入本发明的保护范围之内。本领域技术人员应该明白,本发明说明书及其附图均为说明性而并非构成对权利要求的限制。本发明的保护范围由权利要求及其等同物限定。

技术特征:
1.一种阴影映射方法,其特征在于,所述方法至少包括:在限定要渲染的立体场景(100)的全部或者部分的体的包络盒(200)且确定第一深度基准面z1之后,确定第一深度基准面z1的向量与立体场景(100)内设定的水平面之间的夹角,根据夹角确定阴影的颜色深度。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据当前视点位置和方向确定当前可见物体;在三维场景(100)确定当前可见物体的光束包络盒;依据所述包络盒(200)的垂直于光轴(310)的切面与所述被照射物体相交的接近顺序来确定第一深度基准面(z1)和第二深度基准面(z2);将第一和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述夹角的绝对值越大,阴影的颜色深度越高或者颜色深度越浅。4.根据权利要求1~3任一项所述的方法,其特征在于,所述方法还包括:设定移动的光源作为要渲染的立体场景(100)内的虚拟太阳,根据真实世界的当前时间和当前时间内真实太阳相对于地球的运动轨迹控制虚拟太阳相对于虚拟地球的运动轨迹。5.根据权利要求1~4任一项所述的方法,其特征在于,所述方法还包括:根据真实世界的当前时间和当前时间内真实太阳相对于地球的运动轨迹控制虚拟太阳相对于虚拟地球的运动轨迹是周期性控制的。6.根据权利要求1~5任一项所述的方法,其特征在于,所述方法还包括:对于平行光源,投影变换如下:令w=光柱宽度,h=光柱高度,n=z1,f=z2,投影变换矩阵m如下:由此得到深度映射函数为:其中,z1≤z≤z2。7.根据权利要求1~6任一项所述的方法,其特征在于,所述方法还包括:对于点光源,投影变换如下:令aspect=光锥的宽高比,fovy=光锥张角,n=z1,f=z2,优化后投影变换矩阵m如下:
只考虑深度方向的分量得到深度映射函数为:其中,z1≤z≤z2。8.一种阴影映射装置,其特征在于,包括至少一个中央处理器和/或至少一个图形处理器;所述中央处理器和/或至少一个图形处理器被配置为:在限定要渲染的立体场景(100)的全部或者部分的体的包络盒(200)且确定第一深度基准面z1之后,确定第一深度基准面z1的向量与立体场景(100)内设定的水平面之间的夹角,根据夹角确定阴影的颜色深度。9.根据权利要求8所述的装置,其特征在于,所述中央处理器和/或至少一个图形处理器还配置为:根据当前视点位置和方向确定当前可见物体;在三维场景(100)确定当前可见物体的光束包络盒;依据所述包络盒(200)的垂直于光轴(310)的切面与所述被照射物体相交的接近顺序来确定第一深度基准面(z1)和第二深度基准面(z2);将第一和第二深度基准面中相对更靠近光源的第一深度基准面的深度值映射为最大深度基准,将第一和第二深度基准面中相对更远离光源的第二深度基准面的深度值映射为最小深度基准。10.根据权利要求8或9的装置,其特征在于,所述中央处理器和/或至少一个图形处理器还配置为:所述夹角的绝对值越大,阴影的颜色深度越高或者颜色深度越浅。

技术总结
本发明涉及一种阴影映射方法及装置,所述方法至少包括:在限定要渲染的立体场景(100)的全部或者部分的体的包络盒(200)且确定第一深度基准面Z1之后,确定第一深度基准面Z1的向量与立体场景(100)内设定的水平面之间的夹角,根据夹角确定阴影的颜色深度。本发明采用此方式至少能够实现以下有益技术效果:让游戏者能够根据阴影颜色深浅变化和位置变化感受真实世界的时间,既能提高阴影的渲染真实性,又能让部分游戏者间接感觉时间的变化,防止部分游戏者沉沦游戏而不能感受时间消逝的问题,相当于对其起到心理暗示的作用。相当于对其起到心理暗示的作用。相当于对其起到心理暗示的作用。


技术研发人员:赵耀 李泳 雷尧 王瑶瑶
受保护的技术使用者:北京达美盛软件股份有限公司
技术研发日:2019.01.07
技术公布日:2023/7/25
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐