CN107481314A - 一种基于kd树的阴影体优化方法 - Google Patents
一种基于kd树的阴影体优化方法 Download PDFInfo
- Publication number
- CN107481314A CN107481314A CN201710524634.0A CN201710524634A CN107481314A CN 107481314 A CN107481314 A CN 107481314A CN 201710524634 A CN201710524634 A CN 201710524634A CN 107481314 A CN107481314 A CN 107481314A
- Authority
- CN
- China
- Prior art keywords
- light source
- boundary
- shadow
- edge
- volume
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000005457 optimization Methods 0.000 title claims abstract description 7
- 240000007509 Phytolacca dioica Species 0.000 title abstract 8
- 238000009877 rendering Methods 0.000 claims description 16
- 230000027870 phototropism Effects 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000008030 elimination Effects 0.000 claims description 7
- 238000003379 elimination reaction Methods 0.000 claims description 7
- 238000000605 extraction Methods 0.000 abstract description 6
- 239000007787 solid Substances 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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)
- Length Measuring Devices By Optical Means (AREA)
- Image Generation (AREA)
Abstract
本发明实施例提供了一种基于KD树的阴影体优化方法,其中,上述方法包括:提取相邻面位于光源两侧的共享边作为阴影体的共享轮廓边;基于KD树对场景数据进行分割,提取只有一个相邻面的边进行遮挡计算,对于没有遮挡的边界提取为阴影体的边界轮廓边;基于共享轮廓边和边界轮廓边建立阴影体;基于KD树对阴影体数据进行分割,通过阴影体剔除包围体,对阴影进行剔除操作,提高处理阴影体顶点的速率。采用本发明实施例提供的上述技术方案,解决了传统阴影体算法中无法处理存在非闭合几何体场景的问题,并通过CPU端的阴影体裁剪工作,大大节省了往GPU端传入的数据量,减少了GPU的负担。
Description
技术领域
本发明涉及计算机图形渲染领域,更具体地说,涉及一种基于KD(K维空间)树的阴影体优化方法。
背景技术
阴影是指空间中的光线被遮挡了的一定区域。阴影效果可以帮助人们更好地感知物体之间的距离和相对位置,同时帮助人们获取阴影遮挡物及阴影接收体的几何形状等信息。
相关技术中,到目前为止还没有标准的动态阴影渲染技术。为了渲染出逼真的动态阴影效果,相关研究人员已经做出了很多尝试,也提出了不少真实感阴影渲染算法。在这些不同的算法中,阴影体算法是一种主流的高效动态阴影算法。
阴影体算法始终被两个关键的步骤所限制着:一个是轮廓边的提取,另一个是阴影体的渲染。对于轮廓边的提取,现在提取的方法是通过判断共享边的相邻面的向光性,但该方法存在的问题是要求模型是封闭的,像树叶这样的场景就无法适用了。对于阴影体的渲染,没有做任何CPU端的裁剪工作,所有的阴影体数据都送入图形处理单元GPU渲染获得模板值,极大增加了GPU的负担。
对于相关技术中场景存在非闭合模型和阴影体渲染开销极大的问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种基于KD树的阴影体优化方法,以至少解决上述问题。
本发明提供的方法包括:
步骤1、提取三维场景中共享轮廓边;
步骤2、提取三维场景中边界轮廓边;
步骤3、根据所述共享轮廓边和所述边界轮廓边建立阴影体;
步骤4、对阴影体进行剔除。
其中,所述步骤1包括:
遍历场景中所有面,将边的相邻面信息添加到边信息中,对边的相邻面进行向光性计算,判断该边是否为共享轮廓边;
计算相邻面法向量与光线方向的夹角,判断其向光性,若两个相邻面的向光性不一致,则判定该边为共享轮廓边;若只存在一个相邻面,则将该边放入待处理的边界列表中;
根据入射光向量与面的法线向量判断面的向光性,若则表示该面面向光源;若则表示该面背向光源,其中,表示入射光向量,表示面的法线向量。
其中,步骤2包括:遍历所述步骤1中得到的所述边界列表,判断每个边界在灯光方向与三维场景形成的遮挡关系,如果边界没有被遮挡,则判定该边界为边界轮廓边。
其中,所述判断边界为边界轮廓边的过程具体为:
(1)对于点光源,使用边界的端点与光源位置的连线作为相交测试线段;对于平行光源,使用边界的端点沿光源方向无限延伸形成的线段作为相交测试线段;
(2)使用相交测试线段和三维场景进行空间相交测试,利用KD树管理三维场景数据的优势,对相交测试的计算进行加速,计算相交测试线段与三维场景的KD树节点的相交情况,若相交,则进入下一级的KD树节点的相交判断;若不相交,则返回相交测试结果为否;若执行到与KD树叶子节点的相交测试,则计算相交测试线段与叶子节点内所有面片的相交情况;
(3)如果边界的两个端点都没有通过相交测试,则判断边界为边界轮廓边。
其中,所述步骤4包括:基于所述步骤3建立的阴影体,对三维场景中阴影体数据进行KD树划分,减少阴影体的渲染批次;使用视锥体构建用于阴影体剔除的包围体,使用该包围体对阴影体数据进行裁剪,渲染处于包围体内的阴影体数据,减少渲染量。
其中,所述使用该包围体对阴影体数据进行裁剪包括:
若阴影体的KD树节点与阴影体剔除包围体相交,则继续判断下一级KD树节点;若不相交,对该节点进行裁剪。
其中,所述使用视锥体构建用于阴影体剔除的包围体包括:
无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体,其中
如果是点光源,若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;或
如果是平行光,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。
采用本发明实施例提供的上述技术方案,解决了传统阴影体算法中无法处理存在非闭合几何体场景的问题,并通过CPU端的阴影体裁剪工作,大大节省了往GPU端传入的数据量,减少了GPU的负担。
附图说明
图1为本发明实施例的基本流程图;
图2为本发明实施例的判断边界为边界轮廓边的流程图;
图3为本发明实施例的构建阴影体剔除的包围体的流程图。
具体实施例
如图1所示,为本发明的一种基于KD树的阴影体优化方法,其包括:
步骤1,提取三维场景中共享轮廓边;
步骤2,提取三维场景中边界轮廓边;
步骤3,根据所述共享轮廓边和所述边界轮廓边建立阴影体;
步骤4,对阴影体进行剔除。
如图2所示,为本发明实施例的构建阴影体剔除的包围体的流程图。其中步骤1具体为:遍历场景中所有面,将边的相邻面信息添加到边信息中,对边的相邻面进行向光性计算,判断该边是否为共享轮廓边。
计算相邻面法向量与光线方向的夹角,判断其向光性,若两个相邻面的向光性不一致,则判定该边为共享轮廓边;若只存在一个相邻面,则将该边放入待处理的边界列表中。
根据入射光向量与面的法线向量判断面的向光性,若则表示该面面向光源;若则表示该面背向光源。其中,表示入射光向量,表示面的法线向量。
优选地,步骤2具体为:遍历步骤1中得到的所述边界列表,判断每个边界在灯光方向与三维场景形成的遮挡关系,如果边界没有被遮挡,则判定该边界为边界轮廓边;对三维场景数据进行KD树划分,以备加速遮挡计算使用。
优选地,判断边界为边界轮廓边的过程具体为:
(1)对于点光源,使用边界的端点与光源位置的连线作为相交测试线段;对于平行光源,使用边界的端点沿光源方向无限延伸形成的线段作为相交测试线段;
(2)使用相交测试线段和三维场景进行空间相交测试,利用KD树管理三维场景数据的优势,对相交测试的计算进行加速。计算相交测试线段与三维场景的KD树节点的相交情况,若相交,则进入下一级的KD树节点的相交判断;若不相交,则返回相交测试结果为否;若执行到与KD树叶子节点的相交测试,则计算相交测试线段与叶子节点内所有面片的相交情况;
(3)如果边界的两个端点都没有通过相交测试,则判断边界为边界轮廓边。
优选地,步骤4具体为:基于步骤3构建阴影体后,对三维场景中阴影体数据进行KD树划分,减少阴影体的渲染批次;使用视锥体构建用于阴影体剔除的包围体,使用该包围体对阴影体数据进行裁剪,渲染处于包围体内的阴影体数据,减少渲染量。
优选地,使用该包围体对阴影体数据进行裁剪具体为:
若阴影体的KD树节点与阴影体剔除包围体相交,则继续判断下一级KD树节点;若不相交,对该节点进行裁剪。
如图3所示,使用视锥体构建用于阴影体剔除的包围体具体为:
(1)无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体;
(2)对于点光源的处理。若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;
(3)对于平行光的处理。分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (7)
1.一种基于KD树的阴影体优化方法,其特征在于,包括:
步骤1、提取三维场景中共享轮廓边;
步骤2、提取三维场景中边界轮廓边;
步骤3、根据所述共享轮廓边和所述边界轮廓边建立阴影体;
步骤4、对阴影体进行剔除。
2.根据权利要求1所述的方法,其中所述步骤1包括:
遍历场景中所有面,将边的相邻面信息添加到边信息中,对边的相邻面进行向光性计算,判断该边是否为共享轮廓边;
计算相邻面法向量与光线方向的夹角,判断其向光性,若两个相邻面的向光性不一致,则判定该边为共享轮廓边;若只存在一个相邻面,则将该边放入待处理的边界列表中;
根据入射光向量与面的法线向量判断面的向光性,若则表示该面面向光源;若则表示该面背向光源,其中,表示入射光向量,表示面的法线向量。
3.根据权利要求2所述的方法,其中步骤2包括:遍历所述步骤1中得到的所述边界列表,判断每个边界在灯光方向与三维场景形成的遮挡关系,如果边界没有被遮挡,则判定该边界为边界轮廓边。
4.根据权利要求3所述的方法,其中所述判断边界为边界轮廓边的过程具体为:
(1)对于点光源,使用边界的端点与光源位置的连线作为相交测试线段;对于平行光源,使用边界的端点沿光源方向无限延伸形成的线段作为相交测试线段;
(2)使用相交测试线段和三维场景进行空间相交测试,利用KD树管理三维场景数据的优势,对相交测试的计算进行加速,计算相交测试线段与三维场景的KD树节点的相交情况,若相交,则进入下一级的KD树节点的相交判断;若不相交,则返回相交测试结果为否;若执行到与KD树叶子节点的相交测试,则计算相交测试线段与叶子节点内所有面片的相交情况;
(3)如果边界的两个端点都没有通过相交测试,则判断边界为边界轮廓边。
5.根据权利要求1所述的方法,所述步骤4包括:基于所述步骤3建立的阴影体,对三维场景中阴影体数据进行KD树划分,减少阴影体的渲染批次;使用视锥体构建用于阴影体剔除的包围体,使用该包围体对阴影体数据进行裁剪,渲染处于包围体内的阴影体数据,减少渲染量。
6.根据权利要求5所述的方法,其中所述使用该包围体对阴影体数据进行裁剪包括:
若阴影体的KD树节点与阴影体剔除包围体相交,则继续判断下一级KD树节点;若不相交,对该节点进行裁剪。
7.根据权利要求5所述的方法,其中所述使用视锥体构建用于阴影体剔除的包围体包括:
无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体,其中
如果是点光源,若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;或
如果是平行光,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524634.0A CN107481314B (zh) | 2017-06-30 | 2017-06-30 | 一种基于kd树的阴影体优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524634.0A CN107481314B (zh) | 2017-06-30 | 2017-06-30 | 一种基于kd树的阴影体优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107481314A true CN107481314A (zh) | 2017-12-15 |
CN107481314B CN107481314B (zh) | 2020-10-27 |
Family
ID=60596015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710524634.0A Active CN107481314B (zh) | 2017-06-30 | 2017-06-30 | 一种基于kd树的阴影体优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107481314B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052950A (zh) * | 2021-03-31 | 2021-06-29 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101165721A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 光线跟踪的方法和系统 |
CN103279972A (zh) * | 2013-05-08 | 2013-09-04 | 中国科学院软件研究所 | 一种基于kd树的并行多维自适应采样与重构方法 |
CN105513122A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 阴影体的建立方法及装置 |
-
2017
- 2017-06-30 CN CN201710524634.0A patent/CN107481314B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101165721A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 光线跟踪的方法和系统 |
CN103279972A (zh) * | 2013-05-08 | 2013-09-04 | 中国科学院软件研究所 | 一种基于kd树的并行多维自适应采样与重构方法 |
CN105513122A (zh) * | 2014-09-24 | 2016-04-20 | 中兴通讯股份有限公司 | 阴影体的建立方法及装置 |
Non-Patent Citations (1)
Title |
---|
谢文明: "光线追踪在空间目标与地球场景渲染中的研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113052950A (zh) * | 2021-03-31 | 2021-06-29 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
CN113052950B (zh) * | 2021-03-31 | 2021-12-17 | 完美世界(北京)软件科技发展有限公司 | 光照计算方法、装置、计算机设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107481314B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107123164A (zh) | 保持锐利特征的三维重建方法及系统 | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
US8743114B2 (en) | Methods and systems to determine conservative view cell occlusion | |
WO2022121525A1 (zh) | 三维场景数据的渲染方法及装置、存储介质、电子装置 | |
CN103279989A (zh) | 一种三维激光成像系统平面点云数据三角化处理方法 | |
WO2023024482A1 (zh) | 一种室内结构化重建方法、装置及计算机可读存储介质 | |
CN109166145A (zh) | 一种基于聚类分割的果树叶片生长参数提取方法及系统 | |
CN103310481A (zh) | 一种基于模糊熵迭代的点云精简方法 | |
CN103714575A (zh) | 一种sph与动态表面网格相结合的流体仿真方法 | |
CN109410213A (zh) | 基于包围盒的多边形图元裁剪方法、计算机可读存储介质、电子设备 | |
CN110176064A (zh) | 一种摄影测量生成三维模型的主体对象自动识别方法 | |
CN109461197B (zh) | 一种基于球面uv和重投影的云实时绘制优化方法 | |
CN104361625A (zh) | 一种基于射线原理的带边界保留的云数据精简算法 | |
US12094060B2 (en) | Low-poly mesh generation for three-dimensional models | |
CN114429535A (zh) | 一种三角网格曲面的光滑裁剪方法及装置 | |
CN107481314B (zh) | 一种基于kd树的阴影体优化方法 | |
Strodthoff et al. | Automatic decomposition of 3D solids into contractible pieces using Reeb graphs | |
CN107341823A (zh) | 一种基于特征融合的最小分支立体匹配方法 | |
JP6901885B2 (ja) | 前景抽出装置及びプログラム | |
JP7026029B2 (ja) | 画像処理装置、方法及びプログラム | |
CN116310060A (zh) | 一种渲染数据的方法、装置、设备及存储介质 | |
CN114155263B (zh) | 一种倾斜摄影模型建筑轮廓线自动提取方法、系统及装置 | |
CN115392001A (zh) | 两个空间封闭三角网格模型拓扑互锁判别方法 | |
CN113902887A (zh) | 三维可视边生成方法、系统、计算机及可读存储介质 | |
CN111833452B (zh) | 多面体切割三角网的切割方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |