一种差分阴影优化方法与流程

文档序号:12126617阅读:378来源:国知局
一种差分阴影优化方法与流程

本发明属于计算机技术领域,涉及三维场景渲染,具体为一种差分阴影优化方法。



背景技术:

输电线路仿真培训对提高电力员工的操作技能、防范伤亡事故以及确保电网的安全稳定运行具有重要的意义。然而,由于电网特殊的作业环境,使得传统的培训方式已无法满足电力安全培训的需要。

在使用虚拟现实技术构建电力虚拟环境进行技能培训中,输电线路虚拟巡视仿真培训系统再现输电设施的结构和工作原理,使实践教学不再局限于课堂和实验室。虚拟现实技术使操作人员沉浸在计算机仿真的虚拟环境中,借助于系统,学员可以重复、安全地观摩、演练,从各个角度全方位地观察和操作。而在虚拟环境中实现操作和交互要达到真实的效果,对系统的实时阴影计算提出了很高的要求。

现有技术常用的渲染手段是方差阴影贴图VSM(variance shadow map)算法,而渲染中利用切比雪夫不等式对深度值进行滤波处理时,t为像素深度值,Pmax(t)为某个点周围一定范围内大于深度t的点的比率,VSM算法用上限值Pmax(t)近似模拟了实际比率P(t)来进行计算,但其实Pmax(t)>P(t),只不过二者相差不大。但这个误差依然会导致一些问题,最大的问题就是漏光问题。如果光线路径中在很短的距离中出现了两个以上的复杂物体,那么这样的场景就非常容易出现漏光。



技术实现要素:

本发明要解决的技术问题是:仿真培训教学系统的仿真场景需要尽量还原真实场景,而现有渲染技术采用的差分阴影贴图VSM算法存在误差,会导致漏光问题。

本发明的技术方案为:一种差分阴影优化方法,用于仿真场景渲染,包括以下步骤:

1)首先获取光源来绘制场景,使用方差阴影贴图VSM方法第一次对场景进行渲染,渲染场景所有物体得到深度值,并存储为两个分量,分别写入深度值z-Depth和深度值平方z-Depth2,计算深度值在[z-Depth,z-Depth2]范围内的物体深度值期望μ和方差σ2,如公式(1)和(2)所示,

μ=E(x)=M1 (1)

σ2=E(x2)-E(x)2=M2-M12 (2)

x表示像素点的深度值;

2)利用切比雪夫不等式对深度值进行滤波处理,对任意常数ε:

P()表示概率函数,令t=E(x)+ε,且[t-E(x)]2≥E(x-E(x)2)=σ2,得:

公式(4)不等式右半部分为Pmax(t),得到深度值大于t的点,如果该点的经过第一次渲染得到的深度值小于t,那么将该点表示为阴影;

3)设置一个预分层函数,如公式(5),在进行差分阴影贴图计算前,先根据像素深度值的大小进行预分层处理:

式中:x为深度值;mi,ni为设定的第i层的上下界的值,通过预分层函数将所有像素深度值都压缩在单位空间中;

4)每层单独存储各自的方差阴影贴图VSM,根据分层后深度值所在的范围来划分渲染过程中像素所属层,在对每一层的渲染处理中,如果当前层的深度值比t大,表示它没有遮挡;

5)输出整体场景的阴影效果。

作为优选方式,考虑到系统实时计算的开销,将全部像素深度值分为4层:[0,0.27]、[0.25,0.52]、[0.5,0.77]以及[0.75,1],设置0.02的重叠量用于处理好相邻层的边界问题。

本发明改进了输电线路仿真培训系统阴影生成算法广泛采用方差阴影贴图(VSM)算法,针对VSM算法可能发生光漏的问题,提出一种通过预分层函数以达到对深度值的“分辖”控制,对深度值进行分段,判断它属于哪一层管辖的深度,然后由其管辖的层通过VSM算法计算其对应的阴影的方法。准确的实时阴影计算为输电线路场景渲染了一个逼真的光影效果,为学员展现了一个高仿真,深入沉浸的虚拟输电线路巡视培训环境,体现了多学科与多领域的交叉性。本项发明将为电力系统仿真培训中实时阴影算法奠定关键性的理论与应用基础,具有非常好的应用前景。本发明适用于输电线路仿真培训系统中场景阴影实时生成算法,在输电线路培训领域中真实的光影效果不仅能增强学员的沉浸感和真实感,而且真实的光影效果能够帮助学员更加清晰的感知线路设备的结构关系。

附图说明

图1为本发明方法步骤2)中的概率分布图。

图2为现有方法采用VSM算法生成的光影图。

图3本发明方法生成的光影图。

具体实施方式

下面说明本发明方法的具体实施。

本发明方法为一种差分阴影算法的优化,包括以下步骤:

1)首先获取光源来绘制场景,第一次对场景进行渲染,渲染场景所有物体得到深度值,并存储为两个分量,分别写入深度值z-Depth和深度值平方z-Depth2,计算[z-Depth,z-Depth2]范围内的物体深度值期望和方差,如公式(1)和(2)所示,

μ=E(x)=M1 (1)

σ2=E(x2)-E(x)2=M2-M12 (2)

x表示像素点的深度值;

2)利用切比雪夫不等式对深度值进行滤波处理,对任意常数ε:

令t=E(x)+ε,且[t-E(x)]2≥E(|x-E(x)|2)=σ2,可得:

公式(4)不等式右半部分就是Pmax(t),即得到范围内大于深度t的点,如果该点的深度值小于t,那么表示为阴影。

3)设置一个预分层函数,如公式(5),在进行差分阴影贴图计算前,先根据像素深度值的大小进行预分层处理:

式中:x为深度值;mi,ni为第i层的上下界。考虑到系统实时计算开销太大,可将全部像素深度值分为4层:[0,0.27]、[0.25,0.52]、[0.5,0.77]、[0.75,1],之所以要在每一层的区间设置0.02的重叠量,主要目的就是处理好相邻层的边界问题。通过预分层函数将所有像素深度值都压缩在单位空间中。

4)每层单独存储各自的方差阴影贴图VSM,根据分层后深度的范围来划分渲染过程中像素管理所属层。在每一层处理程序中,如果当前层的深度值比t大,表示它没有遮挡;

5)输出整体场景的阴影效果。

为了测试本发明改进后VSM算法的有效性,选取了一个典型易发生漏光的三维场景,屏幕分辨率为1920*1200,帧速为85fps。对比图2和3可以看出,改进前由于室外有物体遮挡光线,当光线继续照射房屋时,本来不应该出现在室内的光斑却出现在室内,明显不符合真实的光影效果,给观察者造成了视觉的误差。改进后的阴影图算法有效克服了漏光问题,从而获得高质量的阴影效果。

本发明技术是充分研究VSM算法的基础上,分析了其算法在出现多重遮挡的情况下出现漏光的原因,并针对漏光问题,对算法进行了改进,当检测到部分像素的深度值差值偏大时,即阴影效果中出现漏光,步骤3)的分层将这些像素分到俩层,从而彻底消除两者的相互影响,通过分层处理后偏离程度被大大降低,因此方差减小了许多,从而有效降低了漏光的发生。

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