CN104299257A - 一种基于室外太阳光实现实时动态阴影的方法 - Google Patents
一种基于室外太阳光实现实时动态阴影的方法 Download PDFInfo
- Publication number
- CN104299257A CN104299257A CN201410344363.7A CN201410344363A CN104299257A CN 104299257 A CN104299257 A CN 104299257A CN 201410344363 A CN201410344363 A CN 201410344363A CN 104299257 A CN104299257 A CN 104299257A
- Authority
- CN
- China
- Prior art keywords
- depth
- shadow
- scene
- pixel
- space
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/60—Shadow generation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种基于室外太阳光实现实时动态阴影的方法,该方法将像素的世界坐标转换为太阳光空间的坐标变换,得到阴影图中像素在太阳光空间中的新位置,第二遍绘制场景内物体时,逐像素对比相对光源的深度值和阴影图中的深度,当深度大于阴影图中的深度时,判定该像素处于阴影中,进行对应的阴影混合,否则,判定该像素是受光可见的。本发明将阴影算法映射到图形处理单元来执行,从而加速复杂三维场景中实时阴影的绘制,提高了绘制效率;在带来逼真的视觉效果,增强场景真实感的同时,保证了绘制的速度。
Description
技术领域
本发明涉及实时动态阴影技术领域,尤其涉及一种基于室外太阳光实现实时动态阴影的方法。
背景技术
现代图形处理单元(Graphic Processing Unit,GPU)技术的发展极大的推进了计算机实时的渲染技术的应用,能够产生更接近真实的阴影一直是视频游戏领域一个很有挑战的工作。阴影是不透明的物体阻挡光线而产生的黑暗范围,那些光源看不到表面将处于阴影中,而那些能被光源看到的表面将处于阴影之外,阴影的边界可以帮助人们理解物体的外型以及物体的相对位置,阴影在3D游戏中起着至关重要的作用,增加了图像的立体感和层次感,提高了虚拟环境的真实感程度。但是,目前游戏中实现阴影的方法绘制速度和效率都较低,在游戏绘制的时候,首先遍历场景中所有对象模型,而每个对象模型都有一个包围盒,在相机可见范围内,对相机中的模型进行遍历,基于平行光源为视点对场景进行绘制,将模型相对光源的深度信息绘制到一张阴影图(即深度图)中,再利用计算好的阴影贴图来绘制场景,在内存中绘制的阴影图始终是垂直于光源的方向。程序在每帧中都会生成这个阴影图,将某一帧之前和该帧所投射到阴影中的像素对应连接起来,得到一个四面体,而这个四面体所形成的周围包围盒最大,导致采样周围深度图粗糙,精度低。
发明内容
本发明的目的在于通过一种基于室外太阳光实现实时动态阴影的方法,来解决以上背景技术部分提到的问题。
为达此目的,本发明采用以下技术方案:
一种基于室外太阳光实现实时动态阴影的方法,其包括如下步骤:
A、遍历场景中所有对象;
B、检测相机的对象是否可见;
C、获取可见的投射对象列表和接受阴影对象;
D、从光源场景渲染整个场景,把深度图保存到纹理中;
E、构建light空间的相机矩阵;
F、构建正交投影变换矩阵;
G、构建旋转空间的变换矩阵;
H、将所述步骤E、F、G的计算结果相乘,获得采样矩阵;
I、将所述采样矩阵导入图形处理单元,通过采样深度缓冲器获得阴影值。
特别地,所述步骤B中对象是否可见分三种情况:一、完全可见;二、完全不可见;三、部分可见。
特别地,所述步骤C中将相机的可见对象和部分可见对象插入投射对象列表和接受阴影对象。
特别地,所述步骤D具体包括:基于平行光源为视点对场景进行绘制,将对象模型相对光源的深度信息绘制到一张阴影图即深度图中,从光源场景渲染整个场景,把深度图保存到纹理中。
特别地,所述步骤I具体包括:将所述采样矩阵导入图形处理单元,将像素的UV坐标转换为世界坐标,再将世界坐标转换为太阳空间的坐标,得到阴影图中像素在太阳光空间中的新位置,而深度图是记录相机内可见视锥体,放到太阳的位置进行正交照射整个场景,形成一个深度信息图,与最小深度的深度进行比较,若深度值大于最小深度,则该像素是受阴影的,否则是受光照的。
本发明提出的基于室外太阳光实现实时动态阴影的方法将像素的世界坐标转换为太阳光空间的坐标变换,得到阴影图中像素在太阳光空间中的新位置,第二遍绘制场景内物体时,逐像素对比相对光源的深度值和阴影图中的深度,当深度大于阴影图中的深度时,判定该像素处于阴影中,进行对应的阴影混合,否则,判定该像素是受光可见的。本发明将阴影算法映射到图形处理单元来执行,从而加速复杂三维场景中实时阴影的绘制,提高了绘制效率;在带来逼真的视觉效果,增强场景真实感的同时,保证了绘制的速度。
附图说明
图1为本发明基于室外太阳光实现实时动态阴影的方法流程图;
图2a为场景中一个模型的包围盒的俯视图;
图2b为相机内各个模型包围盒可见情况示意图;
图3为投射对象和接受阴影对象的形成示意图;
图4为在相机空间中视锥体模型的投影示意图;
图5为以视锥体为前提构建旋转矩阵的过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
请参照图1所示,图1为本发明基于室外太阳光实现实时动态阴影的方法流程图。
本实施例中基于室外太阳光实现实时动态阴影的方法具体包括如下步骤:
步骤S101、遍历场景中所有对象。
步骤S102、检测相机的对象是否可见。对象是否可见分三种情况:一、完全可见;二、完全不可见;三、部分可见。场景中一个模型的包围盒的俯视图如图2a所示。相机内各个模型包围盒可见情况示意图如图2b所示。
步骤S103、获取可见的投射对象列表和接受阴影对象。
遍历后把相机中的对象分为投射对象列表和接受阴影对象。如图3所示,一、相机的可见对象和部分可见对象插入投射对象列表和接受阴影对象。二、对于不可见对象,将对其进行重新检测,这次检测的体积是一个包围球,是以模型的包围盒中心为球心,包围盒的半径为球的半径建立的一个球体。如果包围球和视锥体存在交叉部分,就把该对象模型插入投射对象列表。三、在相机内部的可见区域不仅有对象模型,同时也有游戏场景中的地面,在游戏中地形有N多个地形块组成,把相机内可见和部分可见的地形块插入到接受阴影列表。
步骤S104、从光源场景渲染整个场景,把深度图保存到纹理中。在相机可见范围内,对相机中的模型进行遍历,基于平行光源为视点对场景进行绘制,将对象模型相对光源的深度信息绘制到一张阴影图即深度图中,从光源场景渲染整个场景,把深度图保存到纹理中。
步骤S105、构建light空间的相机矩阵。light空间即太阳光空间。该Light空间的up方向(即z方向),looked方向为相机的look at方向,Left方向是up叉乘look at方向。
如图4所示,把世界空间的视锥体的8个点从世界空间转化为light空间,并以此构建一个包围盒。该包围盒的最小z和最大z(即up方向的最小值和最大值)分别记为min_frustum_z,max_frustum_z,其中up方向是太阳光方向。构建投射对象列表的点集合,并转成light空间。并构建包围盒,令最小深度和最大深度分别为min_cast_box.z,max_cast_box.z。
确保min(min_frustum_z,min_cast_box.z)大于0,如果其值小于0,对其进行纠正,具体的做法是:只要把这些点沿着+z平移;构建一个平移矩阵。视锥体的8个点也沿着+z方向平移。
步骤S106、构建正交投影变换矩阵。在Light空间,构建视锥体的8个点的正交投影变换矩阵。具体做法是:计算8个点的AABB包围盒,根据AABB包围盒计算得到正交投影的中心点以及halfWidth,halfHeight,Depth参数信息。把8个点转成正交投影空间。
步骤S107、构建旋转空间的变换矩阵。如图5所示,左侧图为基于light空间下,包围盒在坐标系中的位置,右侧图为经过旋转θ后包围盒的坐标位置。构建一个旋转空间,在步骤S106的正交投影空间下,取近裁切面和远裁切面中心点和此空间下的坐标系,绕过中心点的z轴旋转,旋转度数是θ度数,把包围盒旋转到d状态。保证旋转以后近裁切面和远裁切面的连线平行于v方向。把8个点转成旋转空间(先平移到中心点,然后旋转)。归一化,把8个点构建包围盒并取包围盒的最小x和最大x最小y和最大y。
步骤S108、将所述步骤S106、S107、S108的计算结果相乘,获得采样矩阵。
步骤S109、将所述采样矩阵导入图形处理单元,通过采样深度缓冲器获得阴影值。具体过程如下:将所述采样矩阵导入图形处理单元,将像素的UV坐标转换为世界坐标,再将世界坐标转换为太阳空间的坐标,得到阴影图中像素在太阳光空间中的新位置,而深度图是记录相机内可见视锥体,放到太阳的位置进行正交照射整个场景,形成一个深度信息图,与最小深度的深度进行比较,若深度值大于最小深度,则该像素是受阴影的,否则是受光照的。
本发明的技术方案将像素的世界坐标转换为太阳光空间的坐标变换,得到阴影图中像素在太阳光空间中的新位置,第二遍绘制场景内物体时,逐像素对比相对光源的深度值和阴影图中的深度,当深度大于阴影图中的深度时,判定该像素处于阴影中,进行对应的阴影混合,否则,判定该像素是受光可见的。本发明的优点如下:一、将阴影算法映射到图形处理单元来执行,从而加速复杂三维场景中实时阴影的绘制,提高了绘制效率;在带来逼真的视觉效果,增强场景真实感的同时,保证了绘制的速度。二、通过旋转视锥体的8个点使其能填充率最大化,提高了深度图的填充率。虽然生成的阴影边缘有锯齿化,在游戏的后期制作时,可以采用扰动和模糊来处理,这样就能应用于所有的室外场景中由太阳光照射遮挡物体的阴影效果方案。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (5)
1.一种基于室外太阳光实现实时动态阴影的方法,其特征在于,包括如下步骤:
A、遍历场景中所有对象;
B、检测相机的对象是否可见;
C、获取可见的投射对象列表和接受阴影对象;
D、从光源场景渲染整个场景,把深度图保存到纹理中;
E、构建light空间的相机矩阵;
F、构建正交投影变换矩阵;
G、构建旋转空间的变换矩阵;
H、将所述步骤E、F、G的计算结果相乘,获得采样矩阵;
I、将所述采样矩阵导入图形处理单元,通过采样深度缓冲器获得阴影值。
2.根据权利要求1所述的基于室外太阳光实现实时动态阴影的方法,其特征在于,所述步骤B中对象是否可见分三种情况:一、完全可见;二、完全不可见;三、部分可见。
3.根据权利要求2所述的基于室外太阳光实现实时动态阴影的方法,其特征在于,所述步骤C中将相机的可见对象和部分可见对象插入投射对象列表和接受阴影对象。
4.根据权利要求3所述的基于室外太阳光实现实时动态阴影的方法,其特征在于,所述步骤D具体包括:基于平行光源为视点对场景进行绘制,将对象模型相对光源的深度信息绘制到一张阴影图即深度图中,从光源场景渲染整个场景,把深度图保存到纹理中。
5.根据权利要求1至4之一所述的基于室外太阳光实现实时动态阴影的方法,其特征在于,所述步骤I具体包括:将所述采样矩阵导入图形处理单元,将像素的UV坐标转换为世界坐标,再将世界坐标转换为太阳空间的坐标,得到阴影图中像素在太阳光空间中的新位置,深度图记录相机内可见视锥体,放到太阳的位置进行正交照射整个场景,形成一个深度信息图;与最小深度的深度进行比较,若深度值大于最小深度,则该像素是受阴影的,否则是受光照的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344363.7A CN104299257B (zh) | 2014-07-18 | 2014-07-18 | 一种基于室外太阳光实现实时动态阴影的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410344363.7A CN104299257B (zh) | 2014-07-18 | 2014-07-18 | 一种基于室外太阳光实现实时动态阴影的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104299257A true CN104299257A (zh) | 2015-01-21 |
CN104299257B CN104299257B (zh) | 2018-05-04 |
Family
ID=52318979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410344363.7A Active CN104299257B (zh) | 2014-07-18 | 2014-07-18 | 一种基于室外太阳光实现实时动态阴影的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104299257B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038897A (zh) * | 2017-12-06 | 2018-05-15 | 北京像素软件科技股份有限公司 | 阴影贴图生成方法及装置 |
CN108062752A (zh) * | 2017-12-13 | 2018-05-22 | 网易(杭州)网络有限公司 | 判断主光源的方位的方法、介质、装置和计算设备 |
CN108404412A (zh) * | 2018-02-02 | 2018-08-17 | 珠海金山网络游戏科技有限公司 | 一种次世代游戏渲染引擎的光源管理系统、装置及其方法 |
CN109658494A (zh) * | 2019-01-07 | 2019-04-19 | 北京达美盛科技有限公司 | 一种在三维可视化图形中的阴影渲染方法 |
CN110585713A (zh) * | 2019-09-06 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 游戏场景的阴影实现方法、装置、电子设备及可读介质 |
CN112419472A (zh) * | 2019-08-23 | 2021-02-26 | 南京理工大学 | 一种基于虚拟阴影图的增强现实实时阴影生成方法 |
CN113283543A (zh) * | 2021-06-24 | 2021-08-20 | 北京优锘科技有限公司 | 一种基于WebGL的图像投影融合方法、装置、存储介质和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547163A (zh) * | 2003-12-04 | 2004-11-17 | 北京金山数字娱乐科技有限公司 | 场景动态光影实现方法 |
US20110069068A1 (en) * | 2009-09-21 | 2011-03-24 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
CN103679818A (zh) * | 2013-12-17 | 2014-03-26 | 南京大学 | 一种基于虚拟面光源的实时场景绘制方法 |
-
2014
- 2014-07-18 CN CN201410344363.7A patent/CN104299257B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1547163A (zh) * | 2003-12-04 | 2004-11-17 | 北京金山数字娱乐科技有限公司 | 场景动态光影实现方法 |
US20110069068A1 (en) * | 2009-09-21 | 2011-03-24 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
CN103679818A (zh) * | 2013-12-17 | 2014-03-26 | 南京大学 | 一种基于虚拟面光源的实时场景绘制方法 |
Non-Patent Citations (1)
Title |
---|
赵丹: "实时阴影渲染技术的研究与应用", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038897A (zh) * | 2017-12-06 | 2018-05-15 | 北京像素软件科技股份有限公司 | 阴影贴图生成方法及装置 |
CN108038897B (zh) * | 2017-12-06 | 2021-06-04 | 北京像素软件科技股份有限公司 | 阴影贴图生成方法及装置 |
CN108062752A (zh) * | 2017-12-13 | 2018-05-22 | 网易(杭州)网络有限公司 | 判断主光源的方位的方法、介质、装置和计算设备 |
CN108062752B (zh) * | 2017-12-13 | 2023-07-25 | 杭州易现先进科技有限公司 | 判断主光源的方位的方法、介质、装置和计算设备 |
CN108404412A (zh) * | 2018-02-02 | 2018-08-17 | 珠海金山网络游戏科技有限公司 | 一种次世代游戏渲染引擎的光源管理系统、装置及其方法 |
CN108404412B (zh) * | 2018-02-02 | 2021-01-29 | 珠海金山网络游戏科技有限公司 | 一种次世代游戏渲染引擎的光源管理系统、装置及其方法 |
CN109658494B (zh) * | 2019-01-07 | 2023-03-31 | 北京达美盛软件股份有限公司 | 一种在三维可视化图形中的阴影渲染方法 |
CN109658494A (zh) * | 2019-01-07 | 2019-04-19 | 北京达美盛科技有限公司 | 一种在三维可视化图形中的阴影渲染方法 |
CN116485987A (zh) * | 2019-01-07 | 2023-07-25 | 北京达美盛软件股份有限公司 | 一种基于阴影渲染的真实环境模拟方法及装置 |
CN112419472A (zh) * | 2019-08-23 | 2021-02-26 | 南京理工大学 | 一种基于虚拟阴影图的增强现实实时阴影生成方法 |
CN112419472B (zh) * | 2019-08-23 | 2022-09-30 | 南京理工大学 | 一种基于虚拟阴影图的增强现实实时阴影生成方法 |
CN110585713A (zh) * | 2019-09-06 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 游戏场景的阴影实现方法、装置、电子设备及可读介质 |
CN113283543A (zh) * | 2021-06-24 | 2021-08-20 | 北京优锘科技有限公司 | 一种基于WebGL的图像投影融合方法、装置、存储介质和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104299257B (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102768765B (zh) | 实时点光源软阴影渲染方法 | |
CN104299257A (zh) | 一种基于室外太阳光实现实时动态阴影的方法 | |
CN103226830B (zh) | 三维虚实融合环境中视频纹理投影的自动匹配校正方法 | |
CN104331918A (zh) | 基于深度图实时绘制室外地表遮挡剔除以及加速方法 | |
CN105513112B (zh) | 图像处理方法和装置 | |
WO2018077071A1 (zh) | 一种全景图像的生成方法及装置 | |
Portalés et al. | Augmented reality and photogrammetry: A synergy to visualize physical and virtual city environments | |
CN107038745B (zh) | 一种3d旅游景观漫游交互方法及装置 | |
US9508191B2 (en) | Optimal point density using camera proximity for point-based global illumination | |
CN104103092A (zh) | 一种基于聚光灯实时动态阴影的实现方法 | |
CN105898271A (zh) | 360度全景视频的播放方法、播放模块及移动终端 | |
US9165397B2 (en) | Texture blending between view-dependent texture and base texture in a geographic information system | |
CN104318605B (zh) | 矢量实线与三维地形的并行贴合渲染方法 | |
CN103077546B (zh) | 二维图形的三维透视变换方法 | |
CN104103089A (zh) | 一种基于图像屏幕空间的实时软阴影实现方法 | |
CN111563948B (zh) | 基于gpu进行资源动态处理和缓存的虚拟地形渲染方法 | |
KR20080055581A (ko) | 3D 오브젝트의 셀프 셰도우(self-shadow)를만들기 위해 데이터를 미리-저장할 수 있는 장치, 방법,응용프로그램 및 컴퓨터 판독가능한 매체 | |
CN103700134A (zh) | 基于可控制纹理烘焙的三维矢量模型实时光影延迟着色渲染方法 | |
CN104217461B (zh) | 一种基于深度图模拟实时凹凸效果的视差映射方法 | |
CN102243768A (zh) | 一种三维虚拟场景立体画面的绘制方法 | |
CN108804061A (zh) | 虚拟现实系统的虚拟场景显示方法 | |
CN103903296A (zh) | 虚拟家装室内场景设计中的阴影渲染方法 | |
CN104677347A (zh) | 一种基于Kinect生成三维导航地图室内移动机器人 | |
CN109461197B (zh) | 一种基于球面uv和重投影的云实时绘制优化方法 | |
Sandnes et al. | Translating the viewing position in single equirectangular panoramic images |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |