基于Shadow Maps的实时阴影生成算法改进

基于Shadow Maps的实时阴影生成算法改进
张伟;奚俊峰
【摘 要】尼卡巴嗪To build vivider shadows for real-time rendering in three-dimensional animation, Shadow Maps algorithm is studied and improved. By taking main value of average segmentation and logarithmic segmentation as the parameter to divide the shadow scene, the perspective aliasing is relieved. And by building and buffing the shadow maps twice with proper offset, the shadow acne, which caused by self-shadow error, is cleared up. The improved algorithm is implemented based on OpenGL with common graphic hardware and Windows XP. It's shown that the algorithm can build high quality shadows with satisfying the demand of the real-time rendering.%为了在三维动画场景中实时生成更逼真的阴影,分析了Shadow Maps 阴影生成算法走样和失真问题的原因.采用平均分割与对数分割相结合的方法改进了透视走样同题,采用双阴影图法改进了自阴影绘制问题.在Windows XP环境中,基于OpenGL库,编程实现了Shadow Maps算法改进.实验表明,在目前流行的硬件配置环境下,改进后的算法在阴影生成过程中能满足实时渲染帧率要求,同时增强虚拟场景阴影质量.
【期刊名称】《兰州交通大学学报》
【年(卷),期】2011(030)001
【总页数】5页(P22-26)
【关键词】Shadow Maps算法;三维仿真;实时绘制
【作 者】张伟;奚俊峰
【作者单位】水翼兰州交通大学,机电技术研究所,甘肃,兰州,730070;兰州交通大学,机电技术研究所,甘肃,兰州,730070
【正文语种】中 文
【中图分类】TP37
0 引言
阴影作为三维场景中的重要因素,可以为场景提供丰富的视觉信息[1]:阴影有助于理解物体
间的相互位置关系和大小,利用投射阴影可以决定物体在空间中的位置;而且有助于理解复杂物体的几何信息.随着人们对三维场景真实感要求的不断提高,阴影生成算法越来越受到人们的重视.
阴影生成算法需要兼顾画面质量和运算时间的要求。目前计算机实时生成三维虚拟场景阴影的算法主要有:Shadow Vo lumes阴影体算法[2]和Shadow M aps阴影图算法[3].作为一种实时动态生成阴影的算法,L.William s提出的Shadow M aps阴影图算法具有不受场景复杂度和多边形数量限制的优点,得到广泛的研究和应用.但在实际应用中,该算法存在着锯齿状走样和失真等缺陷.H aines提出了一种将硬阴影渲染到纹理图中,然后沿阴影轮廓产生近似半影的方法[4].Fan Zhang等人提出GLPR[5]算法,较好的解决了Shadow M aps算法的走样问题.但上述算法计算较复杂,实时性存在不足.
本文就Shadow M aps阴影图算法进行分析,提出了对其改进的方法,即对透视走样问题采用平均分割与对数分割相结合的方法,采用双阴影图法解决自阴影绘制问题.改进算法比较简单,在满足实时渲染帧率要求的同时能明显提高阴影质量.
安贞医院护士被打
1 相关概念
1.1 阴影
阴影的基本含义是虚拟场景中光源照射不到的部分[6].如图1所示,一个场景由光源照亮,如果从接收体上的P2看出去完全看不到光源,则认为该点处于阴影的本影中,因为光源发出的光不能到达该点;如果从接收体P1点看出去能部分看见光源,则认为Pl点处于阴影的半影中.本影与半影构成了整个阴影部分.马茂元
图1 阴影形成示意图Fig.1 The shadow ofan object
1.2 帧率
三维图像的显示速度通常以帧率(Frame Per Seconds,fps)来度量.帧率是指在1 s内,计算机所能显示的画面数.它可以反映图像的实时性和交互性,如果帧率达到15 fps,那么应用程序就具有实时性的显示能力,用户可以只关注画面中相关的具体操作.如果帧率达到72 fps以上,则不会感觉到图像的绘制过程.对于阴影算法而言,度量算法性能的重要参数就是它的绘制速度,即帧率.
2 Shadow Maps算法
Shadow Maps阴影图算法是一种基于图像空间的阴影算法,对阴影的处理过程完全基于屏幕的像素,不依赖于场景的复杂度及其他额外信息,被广泛采用.
2.1 Shadow M aps算法及实现过程邬跃
该算法对场景进行两遍绘制,图2是一个以绘制茶壶场景为例的阴影图算法实现过程.
图2 阴影图生成过程Fig.2 Procedure of Shadow Maps algorithm
首先,将视点移动到光源处渲染场景,关闭纹理及光照,将场景渲染到深度缓冲区.在场景渲染到深度缓冲区之后,可以将深度缓冲区中的深度值保存到纹理对象中.于是,场景的深度信息被储存在一幅深度纹理图中.
然后,从真实视点角度,以常规方式绘制场景.对于每一个绘制点,计算其在光源裁剪空间中的深度值D2,并将此深度值与第一遍绘制后生成的纹理图中相应的深度值D1做比较.若D 2>D1,则表示该点与光源之间还有其他物体,该点位于阴影中,否则,当前点不在阴影中.
2.2 Shadow M aps算法的优点
从阴影图算法的实现过程中可以看出,阴影图算法有以下优点:阴影图算法是基于图像空间的算法,算法复杂度不会随着场景中三维物体复杂度增加而增加;能实现自阴影效果,算法稳定性强;算法的执行效率高,能够得到图形硬件的支持,易于编程实现;只使用投影纹理影射和深度比较;对于动态场景,实时生成阴影图和渲染场景,仅需两次渲染过程.
2.3 Shadow M aps算法的缺点
标准Shadow Maps算法由于对虚拟场景采用平均分割以及计算机本身精度等原因,存在着图像空间算法固有的缺点:
1)走样:虚拟物体投射的阴影出现明显的锯齿状走样,由于透视变换的影响在虚拟场景中接近视点的位置走样现象尤为严重,影响场景的真实感.
2)自阴影:在物体被照射表面上出现随机的“黑点”(Shadow acnes),产生不正确的自阴影.
3)纹理缓存空间不足:高质量的阴影效果依赖于一个足够大的阴影图,但受到目前图形硬件的限制(如DirectX图形库提供的最大深度纹理为2048 ×2048),因此没有足够的纹理空间存储大的阴影图.
3 Shadow M aps算法的改进
由于Shadow M aps算法存在着上述缺陷,在实际应用中很难取得较好的视觉效果,因此需要对其进行改进,本文主要就走样及自阴影这两类不足提出改进方法.
3.1 锯齿状走样的分析及改进
在阴影图算法中,走样问题产生的主要原因是阴影图的采样不充分.从阴影图的基本原理可以知道,SM算法是在像素级别上采用离散采样.当将视域空间下的坐标转换到光源空间时,由于转换矩阵的不一致,就产生转换后的像素比阴影图中的像素小,这时造成的走样称为投影走样;经过透视变换在视野中造成近大远小的视觉效果,在视点附近产生的锯齿状走样称为透视走样.
图3所示为走样现象产生原因分析示意.光束通过一个在纹理空间中面积为ds×ds的纹素,经过物体后投影在视觉空间中的长度为dz,dp为物体在图像平面中的投影大小,dy为物体在视点空间中的高度,z为物体在模型空间中的大小,视截体近裁剪面与视点的距离为n,视截体近裁剪面与视点的距离为f.图中可以看出,.
图3 走样产生原因分析示意图Fig.3 Analysis of aliasing
由可得阴影的走样误差为
在式(1)中,若dz/zds的值过大会引起透视走样,cosρ/cosθ值过大会引起投影走样.

本文发布于:2024-09-20 20:40:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/71454.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:阴影   算法   场景   走样   空间   物体   生成
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议