基于屏幕空间中点光源实现实时动态阴影的方法

文档序号:6620778阅读:1372来源:国知局
基于屏幕空间中点光源实现实时动态阴影的方法
【专利摘要】本发明公开一种基于屏幕空间中点光源实现实时动态阴影的方法,包括:A、遍历相机内可见的对象。B、构建一个四面体包围点光源。C、确定所述点光源的坐标方向。D、在程序每帧渲染中获得四张shadow?map。E、将所述四张shadow?map合并为一张shadow?map。F、把相机移动到四面体外观察场景,逐像素和shadow?map深度值比较。G、若像素的深度大于shadow?map对应点的深度值,则判定该像素处于阴影中,否则判定该像素是受光可见的。本发明利用四面体包围点光源来计算场景中实时阴影效果,这样可以将全方位的计算动态场景映射到物体表面,其计算速度块,比较灵活,适应实时绘制的需求。
【专利说明】基于屏幕空间中点光源实现实时动态阴影的方法

【技术领域】
[0001] 本发明涉及实时动态阴影【技术领域】,尤其涉及一种基于屏幕空间中点光源实现实 时动态阴影的方法。

【背景技术】
[0002] 在虚拟环境中阴影能有效的表现各种物体间的遮挡关系,从而增加图像的立体感 和层次感,而阴影的产生,前提是需要有光源的存在。目前在大多数项目中,这种光源大致 可以分为三类:太阳光,点光源,聚光灯。对这三类光源实现阴影的算法有很多种,主要算法 例如扫描线算法、两次消隐算法、光线跟踪算法、辐射度算法等等。上述算法虽然都能较好 的完成阴影的计算,但是也存在一些共有的缺陷,生成阴影普遍速度较慢,不能适应实时绘 制的需求。


【发明内容】

[0003] 本发明的目的在于通过一种基于屏幕空间中点光源实现实时动态阴影的方法,来 解决以上【背景技术】部分提到的问题。
[0004] 为达此目的,本发明采用以下技术方案:
[0005] -种基于屏幕空间中点光源实现实时动态阴影的方法,包括如下步骤:
[0006] A、遍历相机内可见的对象;
[0007] B、构建一个四面体包围点光源;
[0008] C、确定所述点光源的坐标方向;
[0009] D、在程序每巾贞渲染中获得四张 shadow map ;
[0010] E、将所述四张 shadow map 合并为一张 shadow map ;
[0011] F、把相机移动到四面体外观察场景,逐像素和shadow map深度值比较;
[0012] G、根据步骤F的比较结果,若像素的深度大于shadow map对应点的深度值,贝IJ判 定该像素处于阴影中,否则判定该像素是受光可见的。
[0013] 特别地,所述步骤B中四面体由四个大小相等的三角面构成,从四面体的中心到 四个面形成四个视锥体,将四面体的中心定为点光源空间的中心。
[0014] 特别地,所述步骤E具体包括:E1、对四张 shadow map进行缩放变换,使任何一个 shadow map占据正方形的四分之一;E2、绘制其中一个shadow map时,利用蒙版过滤,依次 绘制,最终将四张 shadow map合并为一张 shadow map。
[0015] 本发明提出的基于屏幕空间中点光源实现实时动态阴影的方法利用四面体包围 点光源来计算场景中实时阴影效果,这样可以将全方位的计算动态场景映射到物体表面, 其计算速度块,比较灵活,适应实时绘制的需求。

【专利附图】

【附图说明】
[0016] 图1为本发明实施例提供的基于屏幕空间中点光源实现实时动态阴影的方法流 程图;
[0017] 图2为本发明实施例提供的基于相机为视角的四面体;
[0018] 图3为本发明实施例提供的视角在X轴方向的视锥体;
[0019] 图4为本发明实施例提供的四面体生成的四张贴图;
[0020] 图5a为本发明实施例提供的四张 shadow map经缩放后的示意图一;
[0021] 图5b为本发明实施例提供的四张 shadow map经缩放后的示意图二;
[0022] 图6为本发明实施例提供的蒙板缓冲图;
[0023] 图7为本发明实施例提供的蒙板过滤后得到一张新的shadow map图。

【具体实施方式】
[0024] 下面结合附图和实施例对本发明作进一步说明。可以理解的是,此处所描述的具 体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描 述,附图中仅示出了与本发明相关的部分而非全部内容。
[0025] 请参照图1所示,图1为本发明实施例提供的基于屏幕空间中点光源实现实时动 态阴影的方法流程图。
[0026] 本实施例中基于屏幕空间中点光源实现实时动态阴影的方法具体包括如下步 骤:
[0027] 步骤S101、遍历相机内可见的对象。遍历场景中的对象是否在虚拟相机可见范围, 只渲染相机内可见的区域。
[0028] 步骤S102、构建一个四面体包围点光源。如图2所示,在本实施例中四面体由四个 大小相等的三角面构成,为了区分这四个面,现将把四个面颜色定为红,绿,蓝,黄。从四面 体的中心到四个面形成四个视锥体,将四面体的中心定为点光源空间的中心。如果把眼睛 放在光源位置,则可以得到4个视锥体包括四面体的每个面。
[0029] 步骤S103、确定所述点光源的坐标方向。首先把相机放到四面体的中心,也就是 光源位置,构建一个光源空间,一个空间的构成需要一个三维向量。如图3所示,把相机看 的方向(X方向)规定为垂直于面的中心,对于另外Y和Z两个向量,通过计算图中的视角 FovY和FovX确定。可以推导出:
[0030]

【权利要求】
1. 一种基于屏幕空间中点光源实现实时动态阴影的方法,其特征在于,包括如下步 骤: A、 遍历相机内可见的对象; B、 构建一个四面体包围点光源; C、 确定所述点光源的坐标方向; D、 在程序每巾贞渲染中获得四张 shadow map ; E、 将所述四张 shadow map合并为一张 shadow map ; F、 把相机移动到四面体外观察场景,逐像素和shadow map深度值比较; G、 根据步骤F的比较结果,若像素的深度大于shadow map对应点的深度值,则判定该 像素处于阴影中,否则判定该像素是受光可见的。
2. 根据权利要求1所述的基于屏幕空间中点光源实现实时动态阴影的方法,其特征在 于,所述步骤B中四面体由四个大小相等的三角面构成,从四面体的中心到四个面形成四 个视锥体,将四面体的中心定为点光源空间的中心。
3. 根据权利要求1或2任一项所述的基于屏幕空间中点光源实现实时动态阴影的方 法,其特征在于,所述步骤E具体包括:E1、对四张 shadow map进行缩放变换,使任何一个 shadow map占据正方形的四分之一;E2、绘制其中一个shadow map时,利用蒙版过滤,依次 绘制,最终将四张 shadow map合并为一张 shadow map。
【文档编号】G06T17/00GK104123748SQ201410346294
【公开日】2014年10月29日 申请日期:2014年7月18日 优先权日:2014年7月18日
【发明者】张翼 申请人:无锡梵天信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1