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

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

Info

Publication number
CN104123748A
CN104123748A CN201410346294.3A CN201410346294A CN104123748A CN 104123748 A CN104123748 A CN 104123748A CN 201410346294 A CN201410346294 A CN 201410346294A CN 104123748 A CN104123748 A CN 104123748A
Authority
CN
China
Prior art keywords
shadow map
pointolite
screen space
light source
shadow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410346294.3A
Other languages
English (en)
Inventor
张翼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Of Ancient India Day Infotech Share Co Ltd In Wuxi
Original Assignee
Of Ancient India Day Infotech Share Co Ltd In Wuxi
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Of Ancient India Day Infotech Share Co Ltd In Wuxi filed Critical Of Ancient India Day Infotech Share Co Ltd In Wuxi
Priority to CN201410346294.3A priority Critical patent/CN104123748A/zh
Publication of CN104123748A publication Critical patent/CN104123748A/zh
Pending legal-status Critical Current

Links

Abstract

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

Description

基于屏幕空间中点光源实现实时动态阴影的方法
技术领域
本发明涉及实时动态阴影技术领域,尤其涉及一种基于屏幕空间中点光源实现实时动态阴影的方法。
背景技术
在虚拟环境中阴影能有效的表现各种物体间的遮挡关系,从而增加图像的立体感和层次感,而阴影的产生,前提是需要有光源的存在。目前在大多数项目中,这种光源大致可以分为三类:太阳光,点光源,聚光灯。对这三类光源实现阴影的算法有很多种,主要算法例如扫描线算法、两次消隐算法、光线跟踪算法、辐射度算法等等。上述算法虽然都能较好的完成阴影的计算,但是也存在一些共有的缺陷,生成阴影普遍速度较慢,不能适应实时绘制的需求。
发明内容
本发明的目的在于通过一种基于屏幕空间中点光源实现实时动态阴影的方法,来解决以上背景技术部分提到的问题。
为达此目的,本发明采用以下技术方案:
一种基于屏幕空间中点光源实现实时动态阴影的方法,包括如下步骤:
A、遍历相机内可见的对象;
B、构建一个四面体包围点光源;
C、确定所述点光源的坐标方向;
D、在程序每帧渲染中获得四张shadow map;
E、将所述四张shadow map合并为一张shadow map;
F、把相机移动到四面体外观察场景,逐像素和shadow map深度值比较;
G、根据步骤F的比较结果,若像素的深度大于shadow map对应点的深度值,则判定该像素处于阴影中,否则判定该像素是受光可见的。
特别地,所述步骤B中四面体由四个大小相等的三角面构成,从四面体的中心到四个面形成四个视锥体,将四面体的中心定为点光源空间的中心。
特别地,所述步骤E具体包括:E1、对四张shadow map进行缩放变换,使任何一个shadow map占据正方形的四分之一;E2、绘制其中一个shadow map时,利用蒙版过滤,依次绘制,最终将四张shadow map合并为一张shadow map。
本发明提出的基于屏幕空间中点光源实现实时动态阴影的方法利用四面体包围点光源来计算场景中实时阴影效果,这样可以将全方位的计算动态场景映射到物体表面,其计算速度块,比较灵活,适应实时绘制的需求。
附图说明
图1为本发明实施例提供的基于屏幕空间中点光源实现实时动态阴影的方法流程图;
图2为本发明实施例提供的基于相机为视角的四面体;
图3为本发明实施例提供的视角在X轴方向的视锥体;
图4为本发明实施例提供的四面体生成的四张贴图;
图5a为本发明实施例提供的四张shadow map经缩放后的示意图一;
图5b为本发明实施例提供的四张shadow map经缩放后的示意图二;
图6为本发明实施例提供的蒙板缓冲图;
图7为本发明实施例提供的蒙板过滤后得到一张新的shadow map图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
请参照图1所示,图1为本发明实施例提供的基于屏幕空间中点光源实现实时动态阴影的方法流程图。
本实施例中基于屏幕空间中点光源实现实时动态阴影的方法具体包括如下步骤:
步骤S101、遍历相机内可见的对象。遍历场景中的对象是否在虚拟相机可见范围,只渲染相机内可见的区域。
步骤S102、构建一个四面体包围点光源。如图2所示,在本实施例中四面体由四个大小相等的三角面构成,为了区分这四个面,现将把四个面颜色定为红,绿,蓝,黄。从四面体的中心到四个面形成四个视锥体,将四面体的中心定为点光源空间的中心。如果把眼睛放在光源位置,则可以得到4个视锥体包括四面体的每个面。
步骤S103、确定所述点光源的坐标方向。首先把相机放到四面体的中心,也就是光源位置,构建一个光源空间,一个空间的构成需要一个三维向量。如图3所示,把相机看的方向(X方向)规定为垂直于面的中心,对于另外Y和Z两个向量,通过计算图中的视角FovY和FovX确定。可以推导出:
a b = sin a - - - ( 2 )
由上述公式(1)和(2)可得:
∠θ=180-2*a     (4)
从角a和角β,可以得到:
b 2 d = tan θ 2 - - - ( 6 )
由此推出:
b 2 = d * tan θ 2 - - - ( 7 )
f d = cos FovY 2 - - - ( 8 )
故:
f = d * cos FovY 2 - - - ( 9 )
b 2 f = tan FovY 2 - - - ( 10 )
由公式(7)、(8)、(9)、(10)可以计算出:
FovX = 2 * tan - 1 tan - 1 ( b 2 f ) = 2 * tan - 1 ( d * tan θ 2 d * cos FovY 2 * ) ≈ 143.986
从上述一系列的计算中可以确定X轴和Y轴的视锥体区域,构建一个视锥体透视矩阵,即一个light空间。
步骤S104、在程序每帧渲染中获得四张shadow map即深度图。如图4所示,图4为本发明实施例提供的四面体生成的四张贴图。
步骤S105、将所述四张shadow map合并为一张shadow map。4张shadow map的利用率不高,为了使shadow map利用率最大化,需要对其进行优化。具体实现过程如下:
步骤S1051、对四张shadow map进行缩放变换,使任何一个shadow map占据正方形的四分之一。将两组shadow map进行缩放变换,使任何一个shadow map占据正方形的四分之一,缩放后的shadow map如图5a和图5b所示。
步骤S1052、绘制其中一个shadow map时,利用蒙版过滤,依次绘制,最终将四张shadow map合并为一张shadow map。利用蒙板图示6所示的蒙版进行过滤,通过蒙版过滤,如图7所示,得到一张新的shadow map图。这样一来,基于光源空间的生成的四张深度图经过缩放变换和蒙板过滤后,合并到一张利用率高的深度图中。
步骤S106、把相机移动到四面体外观察场景,逐像素和shadow map深度值比较。当把相机移动到四面体外观察场景时,当看到某一点像素,总能在四个视锥体中找到这个像素,若与light空间中的深度值做比较,需要将看到该像素的世界坐标位置转化为light空间位置。
步骤S107、根据步骤S106的比较结果,若像素的深度大于shadow map对应点的深度值,则判定该像素处于阴影中,否则判定该像素是受光可见的。
若像素的深度大于shadow map对应点的深度值,则判定该像素处于阴影中,进行对应的阴影混合。当像素的深度等于shadow map对应点的深度值时,说明该像素是受光可见的。
本发明的技术方案利用四面体包围点光源来计算场景中实时阴影效果,这样可以将全方位的计算动态场景映射到物体表面,其计算速度块,比较灵活,适应实时绘制的需求。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (3)

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。
CN201410346294.3A 2014-07-18 2014-07-18 基于屏幕空间中点光源实现实时动态阴影的方法 Pending CN104123748A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410346294.3A CN104123748A (zh) 2014-07-18 2014-07-18 基于屏幕空间中点光源实现实时动态阴影的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410346294.3A CN104123748A (zh) 2014-07-18 2014-07-18 基于屏幕空间中点光源实现实时动态阴影的方法

Publications (1)

Publication Number Publication Date
CN104123748A true CN104123748A (zh) 2014-10-29

Family

ID=51769145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410346294.3A Pending CN104123748A (zh) 2014-07-18 2014-07-18 基于屏幕空间中点光源实现实时动态阴影的方法

Country Status (1)

Country Link
CN (1) CN104123748A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106910240A (zh) * 2017-01-24 2017-06-30 成都通甲优博科技有限责任公司 一种实时阴影的生成方法及装置
CN107274476A (zh) * 2017-08-16 2017-10-20 城市生活(北京)资讯有限公司 一种阴影图的生成方法及装置
CN107580209A (zh) * 2017-10-24 2018-01-12 维沃移动通信有限公司 一种移动终端的拍照成像方法及装置
CN112069568A (zh) * 2020-08-06 2020-12-11 广州杰赛科技股份有限公司 一种基于空间可见性分析的视频监控覆盖效果仿真方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8462156B1 (en) * 2005-12-22 2013-06-11 Nvidia Corporation Method and system for generating shadows in a graphics processing unit
CN103366396A (zh) * 2013-07-06 2013-10-23 北京航空航天大学 基于局部阴影图的高质量软阴影快速生成方法
CN103927772A (zh) * 2014-04-30 2014-07-16 厦门美图之家科技有限公司 一种图标合成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8462156B1 (en) * 2005-12-22 2013-06-11 Nvidia Corporation Method and system for generating shadows in a graphics processing unit
CN103366396A (zh) * 2013-07-06 2013-10-23 北京航空航天大学 基于局部阴影图的高质量软阴影快速生成方法
CN103927772A (zh) * 2014-04-30 2014-07-16 厦门美图之家科技有限公司 一种图标合成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
过洁等: ""基于阴影图的阴影生成算法研究现状"", 《计算机辅助设计与图形学学报》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106910240A (zh) * 2017-01-24 2017-06-30 成都通甲优博科技有限责任公司 一种实时阴影的生成方法及装置
CN107274476A (zh) * 2017-08-16 2017-10-20 城市生活(北京)资讯有限公司 一种阴影图的生成方法及装置
CN107274476B (zh) * 2017-08-16 2020-12-18 城市生活(北京)资讯有限公司 一种阴影图的生成方法及装置
CN107580209A (zh) * 2017-10-24 2018-01-12 维沃移动通信有限公司 一种移动终端的拍照成像方法及装置
CN107580209B (zh) * 2017-10-24 2020-04-21 维沃移动通信有限公司 一种移动终端的拍照成像方法及装置
CN112069568A (zh) * 2020-08-06 2020-12-11 广州杰赛科技股份有限公司 一种基于空间可见性分析的视频监控覆盖效果仿真方法
CN112069568B (zh) * 2020-08-06 2024-02-06 广州杰赛科技股份有限公司 一种基于空间可见性分析的视频监控覆盖效果仿真方法

Similar Documents

Publication Publication Date Title
CN104183016B (zh) 一种快速的2.5维建筑物模型的构建方法
CN102768765B (zh) 实时点光源软阴影渲染方法
CN105825544A (zh) 一种图像处理方法及移动终端
CN106558017B (zh) 球形显示图像处理方法及系统
CN105469386B (zh) 一种确定立体相机高度与俯仰角的方法及装置
CN104123748A (zh) 基于屏幕空间中点光源实现实时动态阴影的方法
CN104103089A (zh) 一种基于图像屏幕空间的实时软阴影实现方法
CN105574931A (zh) 一种电子地图道路绘制方法及装置
CN104103092A (zh) 一种基于聚光灯实时动态阴影的实现方法
CN104732592A (zh) 一种基于二维led旋转屏的实时三维数据生成方法
CN103700134A (zh) 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法
CN105574933A (zh) 物体全方位轮廓精确绘制方法
CN104677347A (zh) 一种基于Kinect生成三维导航地图室内移动机器人
CN109461197B (zh) 一种基于球面uv和重投影的云实时绘制优化方法
CN107203962B (zh) 一种利用2d图片制作伪3d图像的方法及电子设备
CN108804061A (zh) 虚拟现实系统的虚拟场景显示方法
CN104299257A (zh) 一种基于室外太阳光实现实时动态阴影的方法
CN104183009B (zh) 一种基于场景光照图的大场景非直接光照方法
CN106355634A (zh) 模拟太阳的方法及装置
CN102663805A (zh) 一种基于投影的视锥体裁剪的方法
CN103945209B (zh) 一种基于分块投影的dibr方法
CN204559792U (zh) 用于显示屏显示立体图像或视频的装置及显示设备
CN109544671A (zh) 一种基于屏幕空间的视频在三维场景中投影映射方法
CN100555334C (zh) 阴影绘制方法及装置
CN116596985B (zh) 一种自适应光照模型建模方法与系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20141029