首页 / 专利库 / 电脑图像 / 视锥体裁剪 / 一种基于KD树的阴影体优化方法

一种基于KD树的阴影体优化方法

阅读:944发布:2020-05-17

专利汇可以提供一种基于KD树的阴影体优化方法专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供了一种基于KD树的阴影体优化方法,其中,上述方法包括:提取相邻面位于 光源 两侧的共享边作为阴影体的共享轮廓边;基于KD树对场景数据进行分割,提取只有一个相邻面的边进行遮挡计算,对于没有遮挡的边界提取为阴影体的边界轮廓边;基于共享轮廓边和边界轮廓边建立阴影体;基于KD树对阴影体数据进行分割,通过阴影体剔除 包围体 ,对阴影进行剔除操作,提高处理阴影体 顶点 的速率。采用本发明实施例提供的上述技术方案,解决了传统阴影体 算法 中无法处理存在非闭合几何体场景的问题,并通过CPU端的阴影体裁剪工作,大大节省了往GPU端传入的数据量,减少了GPU的负担。,下面是一种基于KD树的阴影体优化方法专利的具体信息内容。

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所述的方法,其中所述使用视锥体构建用于阴影体剔除的包围体包括:
无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体,其中
如果是点光源,若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;或
如果是平行光,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。

说明书全文

一种基于KD树的阴影体优化方法

技术领域

[0001] 本发明涉及计算机图形渲染领域,更具体地说,涉及一种基于KD(K维空间)树的阴影体优化方法。

背景技术

[0002] 阴影是指空间中的光线被遮挡了的一定区域。阴影效果可以帮助人们更好地感知物体之间的距离和相对位置,同时帮助人们获取阴影遮挡物及阴影接收体的几何形状等信息。
[0003] 相关技术中,到目前为止还没有标准的动态阴影渲染技术。为了渲染出逼真的动态阴影效果,相关研究人员已经做出了很多尝试,也提出了不少真实感阴影渲染算法。在这些不同的算法中,阴影体算法是一种主流的高效动态阴影算法。
[0004] 阴影体算法始终被两个关键的步骤所限制着:一个是轮廓边的提取,另一个是阴影体的渲染。对于轮廓边的提取,现在提取的方法是通过判断共享边的相邻面的向光性,但该方法存在的问题是要求模型是封闭的,像树叶这样的场景就无法适用了。对于阴影体的渲染,没有做任何CPU端的裁剪工作,所有的阴影体数据都送入图形处理单元GPU渲染获得模板值,极大增加了GPU的负担。
[0005] 对于相关技术中场景存在非闭合模型和阴影体渲染开销极大的问题,目前尚未提出有效的解决方案。

发明内容

[0006] 本发明提供了一种基于KD树的阴影体优化方法,以至少解决上述问题。
[0007] 本发明提供的方法包括:
[0008] 步骤1、提取三维场景中共享轮廓边;
[0009] 步骤2、提取三维场景中边界轮廓边;
[0010] 步骤3、根据所述共享轮廓边和所述边界轮廓边建立阴影体;
[0011] 步骤4、对阴影体进行剔除。
[0012] 其中,所述步骤1包括:
[0013] 遍历场景中所有面,将边的相邻面信息添加到边信息中,对边的相邻面进行向光性计算,判断该边是否为共享轮廓边;
[0014] 计算相邻面法向量与光线方向的夹,判断其向光性,若两个相邻面的向光性不一致,则判定该边为共享轮廓边;若只存在一个相邻面,则将该边放入待处理的边界列表中;
[0015] 根据入射光向量与面的法线向量判断面的向光性,若 则表示该面面向光源;若 则表示该面背向光源,其中,表示入射光向量,表示面的法线向量。
[0016] 其中,步骤2包括:遍历所述步骤1中得到的所述边界列表,判断每个边界在灯光方向与三维场景形成的遮挡关系,如果边界没有被遮挡,则判定该边界为边界轮廓边。
[0017] 其中,所述判断边界为边界轮廓边的过程具体为:
[0018] (1)对于点光源,使用边界的端点与光源位置的连线作为相交测试线段;对于平行光源,使用边界的端点沿光源方向无限延伸形成的线段作为相交测试线段;
[0019] (2)使用相交测试线段和三维场景进行空间相交测试,利用KD树管理三维场景数据的优势,对相交测试的计算进行加速,计算相交测试线段与三维场景的KD树节点的相交情况,若相交,则进入下一级的KD树节点的相交判断;若不相交,则返回相交测试结果为否;若执行到与KD树叶子节点的相交测试,则计算相交测试线段与叶子节点内所有面片的相交情况;
[0020] (3)如果边界的两个端点都没有通过相交测试,则判断边界为边界轮廓边。
[0021] 其中,所述步骤4包括:基于所述步骤3建立的阴影体,对三维场景中阴影体数据进行KD树划分,减少阴影体的渲染批次;使用视锥体构建用于阴影体剔除的包围体,使用该包围体对阴影体数据进行裁剪,渲染处于包围体内的阴影体数据,减少渲染量。
[0022] 其中,所述使用该包围体对阴影体数据进行裁剪包括:
[0023] 若阴影体的KD树节点与阴影体剔除包围体相交,则继续判断下一级KD树节点;若不相交,对该节点进行裁剪。
[0024] 其中,所述使用视锥体构建用于阴影体剔除的包围体包括:
[0025] 无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体,其中
[0026] 如果是点光源,若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;或
[0027] 如果是平行光,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。
[0028] 采用本发明实施例提供的上述技术方案,解决了传统阴影体算法中无法处理存在非闭合几何体场景的问题,并通过CPU端的阴影体裁剪工作,大大节省了往GPU端传入的数据量,减少了GPU的负担。附图说明
[0029] 图1为本发明实施例的基本流程图
[0030] 图2为本发明实施例的判断边界为边界轮廓边的流程图;
[0031] 图3为本发明实施例的构建阴影体剔除的包围体的流程图。具体实施例
[0032] 如图1所示,为本发明的一种基于KD树的阴影体优化方法,其包括:
[0033] 步骤1,提取三维场景中共享轮廓边;
[0034] 步骤2,提取三维场景中边界轮廓边;
[0035] 步骤3,根据所述共享轮廓边和所述边界轮廓边建立阴影体;
[0036] 步骤4,对阴影体进行剔除。
[0037] 如图2所示,为本发明实施例的构建阴影体剔除的包围体的流程图。其中步骤1具体为:遍历场景中所有面,将边的相邻面信息添加到边信息中,对边的相邻面进行向光性计算,判断该边是否为共享轮廓边。
[0038] 计算相邻面法向量与光线方向的夹角,判断其向光性,若两个相邻面的向光性不一致,则判定该边为共享轮廓边;若只存在一个相邻面,则将该边放入待处理的边界列表中。
[0039] 根据入射光向量与面的法线向量判断面的向光性,若 则表示该面面向光源;若 则表示该面背向光源。其中,表示入射光向量,表示面的法线向量。
[0040] 优选地,步骤2具体为:遍历步骤1中得到的所述边界列表,判断每个边界在灯光方向与三维场景形成的遮挡关系,如果边界没有被遮挡,则判定该边界为边界轮廓边;对三维场景数据进行KD树划分,以备加速遮挡计算使用。
[0041] 优选地,判断边界为边界轮廓边的过程具体为:
[0042] (1)对于点光源,使用边界的端点与光源位置的连线作为相交测试线段;对于平行光源,使用边界的端点沿光源方向无限延伸形成的线段作为相交测试线段;
[0043] (2)使用相交测试线段和三维场景进行空间相交测试,利用KD树管理三维场景数据的优势,对相交测试的计算进行加速。计算相交测试线段与三维场景的KD树节点的相交情况,若相交,则进入下一级的KD树节点的相交判断;若不相交,则返回相交测试结果为否;若执行到与KD树叶子节点的相交测试,则计算相交测试线段与叶子节点内所有面片的相交情况;
[0044] (3)如果边界的两个端点都没有通过相交测试,则判断边界为边界轮廓边。
[0045] 优选地,步骤4具体为:基于步骤3构建阴影体后,对三维场景中阴影体数据进行KD树划分,减少阴影体的渲染批次;使用视锥体构建用于阴影体剔除的包围体,使用该包围体对阴影体数据进行裁剪,渲染处于包围体内的阴影体数据,减少渲染量。
[0046] 优选地,使用该包围体对阴影体数据进行裁剪具体为:
[0047] 若阴影体的KD树节点与阴影体剔除包围体相交,则继续判断下一级KD树节点;若不相交,对该节点进行裁剪。
[0048] 如图3所示,使用视锥体构建用于阴影体剔除的包围体具体为:
[0049] (1)无论是点光源还是平行光,都是基于视锥体对应的多面体进行处理,最终得到阴影体剔除的包围体;
[0050] (2)对于点光源的处理。若点光源在视锥体内,则直接使用视锥多面体作为阴影体剔除的包围体;若点光源不在视锥体内,分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,使用光源位置与该边构建新的几何面,得到的多面体即为阴影体剔除的包围体;
[0051] (3)对于平行光的处理。分别判断光源与视锥多面体各面的位置关系,若该面面向光源,将面的四条边加入到待处理的边集合,并从视锥多面体中去除该面;遍历边集合,对于只在集合中出现一次的边,将该边沿光源方向无限拉伸构建新的几何面,得到的多面体即为阴影体剔除的包围体。
[0052] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0053] 尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈