一种基于聚光灯实时动态阴影的实现方法技术

技术编号:10547189 阅读:146 留言:0更新日期:2014-10-15 20:47
本发明专利技术公开了一种基于聚光灯实时动态阴影的实现方法,主要包括:遍历场景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染;在灯光空间下渲染场景时,获取离光源最近所有像素投射的深度图;正常渲染场景时,将相机空间转化到灯光空间下得到的像素的新位置的深度值进行比较,当像素的新位置深度值大于深度图时,该像素处于阴影中;然后将阴影与场景颜色混合,投射到屏幕上。本发明专利技术所述基于聚光灯实时动态阴影的实现方法,可以克服现有技术中使用范围窄、易出错、占用内存大和计算速度慢等缺陷,以实现使用范围宽、不易出错、占用内存小和计算速度快的优点。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,主要包括:遍历场景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染;在灯光空间下渲染场景时,获取离光源最近所有像素投射的深度图;正常渲染场景时,将相机空间转化到灯光空间下得到的像素的新位置的深度值进行比较,当像素的新位置深度值大于深度图时,该像素处于阴影中;然后将阴影与场景颜色混合,投射到屏幕上。本专利技术所述基于聚光灯实时动态阴影的实现方法,可以克服现有技术中使用范围窄、易出错、占用内存大和计算速度慢等缺陷,以实现使用范围宽、不易出错、占用内存小和计算速度快的优点。【专利说明】
本专利技术涉及图像处理
,具体地,涉及一种基于聚光灯实时动态阴影的实 现方法。
技术介绍
随着计算机图形学的发展和可编程的不断普及,虚拟的三维世界模拟现实真实 性,游戏中更多是实现视觉化的表现,近年来对阴影的研究越来越多,这种效果的实现增加 了图像的立体感和层次感,而实时阴影计算是计算机图形学领域的一个高级课题。 目前游戏中是利用Z-buffer消隐算法来实现的,它是以新坐标系的Z轴上的一 点为圆心建立的坐标系,将物体在空间所有的点以光源为中心向新坐标系XY面投影,并进 行点的取整处理,然后利用Z-buffer消隐处理办法,判断改点的受光特点。这个算法使用 范围窄,易出错,占有大量的内存,算法速度慢。基于上述问题需要提供了一种基于屏幕空 间聚光灯生成阴影效果。 在实现本专利技术的过程中,专利技术人发现现有技术中至少存在使用范围窄、易出错、占 用内存大和计算速度慢等缺陷。
技术实现思路
本专利技术的目的在于,针对上述问题,提出一种基于聚光灯实时动态阴影的实现方 法,以实现使用范围宽、不易出错、占用内存小和计算速度快的优点。 为实现上述目的,本专利技术采用的技术方案是:一种基于聚光灯实时动态阴影的实 现方法,主要包括: a、 遍历场景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染; b、 在灯光空间下渲染场景时,获取离光源最近所有像素投射的深度图; c、 正常渲染场景时,将相机空间转化到灯光空间下得到的像素的新位置的深度值进行 比较,当像素的新位置深度值大于深度图时,该像素处于阴影中;然后将阴影与场景颜色混 合,投射到屏幕上。 进一步地,所述步骤b,具体包括: bl、把相机放到光源位置渲染场景时,构建一个灯光空间; b2、在灯光空间下,把灯光空间下的世界位置转化为视锥体投影空间,并对其进行归一 化,得到在投影空间下的深度图; b3、正常渲染场景时,把基于屏幕空间的像素 U、V,转化为世界坐标,再转化为灯光空 间,得到该空间下的像素的新位置的深度值。 进一步地,所述步骤bl,具体包括: 首先把模型空间转化到世界坐标空间,这个是在Direct3D中实现的,经过硬件坐标转 换的世界空间矩阵记作:WorldMatrix ; 对任何一个场景中的相机都是基于世界空间的,当相机放到光源位置进行渲染场景 时,首先构建一个光源空间,将相机朝向和光源方向朝向一致,相机的方向规定为z轴,通 过摄像机位置和朝向确定一个灯光空间。 进一步地,所述通过摄像机位置和朝向确定一个灯光空间的操作,具体是: 米用DirectX下的接口中实现LightViewMatrix : D3DXMATRIX * D3DXMatrixLookAtLH( _inout D3DXMATRIX *p0ut, -in const D3DXVECT0R3 *pEye, _in const D3DXVECT0R3 *pAt, -in const D3DXVECT0R3 *pUp ); 通过以上的代码生成一个灯光空间的矩阵LightViewMatrix,这个矩阵只能表示相机 的局部位置。 进一步地,所述步骤b2,具体包括: 基于步骤bl,为了确定相机所看到的精确位置即在图形学中称作为灯光空间的投影矩 阵; 基于上述的灯光空间下,根据可见视锥体的预设数个点并根据其包围盒构建一个投影 矩阵 LightProjMatrix ; 把该灯光空间位置转换到视锥体投影空间,把转化后的矩阵记作ViewMatrix,具体是 通过 ViewMatrix = LightViewMatrix *LightProjMatrix ; 把ViewMatrix传入GPU中,计算每个点的投影坐标,投影坐标的Z值即为深度值 shadow map,这个深度值记录着离光源最近的所有像素投射的深度; 把这些深度值保存到一张二维的渲染目标上,然后将深度值进行归一化处理,即把坐 标缩放在 Μ ,ζ? 之间。 进一步地,所述步骤b3,具体包括: 当正常渲染场景时,基于相机空间渲染了一张纹理图,包含物体的纹理以及深度值,然 后先转化为世界空间位置; 灯光空间也是基于世界空间位置来说,如果做深度比较,必须把世界空间位置转化到 灯光空间才能够做比较。 进一步地,在步骤a中,场景中对象列表的可见性包括:⑴完全可见;⑵完全不可 见;⑶部分可见。 本专利技术各实施例的基于聚光灯实时动态阴影的实现方法,由于主要包括:遍历场 景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染;在灯光空间下渲染 场景时,获取离光源最近所有像素投射的深度图;正常渲染场景时,将相机空间转化到灯光 空间下得到的像素的新位置深度值进行比较,当像素的新位置的深度值大于深度图时,该 像素处于阴影中;然后将阴影与场景颜色混合,投射到屏幕上;从而可以克服现有技术中 使用范围窄、易出错、占用内存大和计算速度慢的缺陷,以实现使用范围宽、不易出错、占用 内存小和计算速度快的优点。 本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本专利技术而了解。 下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。 【专利附图】【附图说明】 附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实 施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中: 图1 (a)为本专利技术基于聚光灯实时动态阴影的实现方法的场景中一个模型的包围盒的 俯视图,图1 (b)本专利技术基于聚光灯实时动态阴影的实现方法的相机内各个模型包围盒可 见情况的侧视图; 图2为本专利技术基于聚光灯实时动态阴影的实现方法中摄像机空间转化为投影空间的 示意图; 图3为本专利技术基于聚光灯实时动态阴影的实现方法中摄像机空间转化为灯光空间的 示意图; 图4为本专利技术基于聚光灯实时动态阴影的实现方法的流程图。 【具体实施方式】 以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实 施例仅用于说明和解释本专利技术,并不用于限定本专利技术。 根据本专利技术实施例,如图1、图2、图3和图4所不,提供了一种基于聚光灯实时动 态阴影的实现方法。 在游戏中,GPU往往对绘制大量的光影效果,现在的游戏阴影效果越来越复杂,由 于过于复杂的阴影使显卡不能够支持,在现实中阴影效果因光线被物体遮挡而产生,在3D 环境中通过图形模拟也能达到这一效果,当场景中几何体或者灯光位置变动的时候,能实 现动态阴影技术,这是一个高级的技术同时也是计算机图形学研究的一个重点本文档来自技高网...

【技术保护点】
一种基于聚光灯实时动态阴影的实现方法,其特征在于,主要包括:a、遍历场景中可见对象列表,只对场景中的可见或者部分可见的对象进行渲染;b、在灯光空间下渲染场景时,获取离光源最近所有像素投射的深度图;c、正常渲染场景时,将相机空间转化到灯光空间下得到的像素的新深度值进行比较,当像素的新位置深度值大于深度图时,该像素处于阴影中;然后将阴影与场景颜色混合,投射到屏幕上。

【技术特征摘要】

【专利技术属性】
技术研发人员:张翼
申请(专利权)人:无锡梵天信息技术股份有限公司
类型:发明
国别省市:江苏;32

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

1