动态三维场景中加速数据结构的构建方法

文档序号:6369103阅读:177来源:国知局
专利名称:动态三维场景中加速数据结构的构建方法
技术领域
本发明属于计算机图形处理技术领域,尤其涉及一种动态三维场景中加速数据结构的构建方法。
背景技术
随着计算机技术的日益发展,传统的光栅化渲染已经无法满足用户的需求。光线跟踪作为一种新的渲染方式替代光栅化渲染已成为大势所趋。光线跟踪的原理为采用光的可逆性,将光从视点发射,进入场景后引起一系列的光的折射和反射,经过多次迭代之后返回这一系列过程的一个和值,这个和值就是此视点观察场景的像素值。光线跟踪真实的模拟了光传播的过程,可以真实的还原场景,但是由于模拟过程计算量太大,需要使用辅助加速结构对场景进行划分,加速查找光线与场景交点的过程。
目前针对光线跟踪的辅助加速结构主要以下三种
I.Kd-tree
Kd-tree是一种经典的高维空间划分结构。特点在于无论空间的维数是多少,都可以将空间划分成为一颗二叉树。在相同的数据规模下,二叉树具有较低的查找代价。但是,二叉树的构建代价也是相当大的。使用Kd-tree作为辅助加速结构的光线跟踪,在静态场景下由于二叉树较低的查找代价,使得光线跟踪总体性能很好,但是在动态场景下需要频繁的重建二叉树,并且重建二叉树的代价很大,使得其性能低下。所以Kd-tree常用于静态场景的光线跟踪。2. BVH
BVH全称为层次包围体,是一种在碰撞检测中常使用的数据结构。特点在于包围体的形状多变,可以根据需要对包围体进行修改,从而合适的覆盖整个空间。BVH在查找时的代价较高,但是重建时所需要的代价很低。使用BVH作为辅助加速结构的光线跟踪,与Kd-tree正好相反。所以BVH常用于动态场景的光线跟踪。3. Grid
Grid是一种在并行计算中常用的方式,将空间划分成为一个个等大的格子。并行计算的每一个线程负责其中一个或者多个格子的计算。在一个分布均匀的场景中,Grid可以获得很好的性能。如果场景过于集中,将导致局部线程负荷过大,在局部形成瓶颈,使整个程序效率降低为串行。由于性能不稳定,使得Grid成为当前光线跟踪使用较少的方法。

发明内容
针对现有技术中针对光线跟踪辅助的加速数据结构存在的性能低下或者不稳定的技术问题,本发明提供了一种动态三维场景中加速数据结构的构建方法。本发明的技术方案如下
一种动态三维场景中加速数据结构的构建方法,其具体包含以下步骤
步骤(I),接收场景数据,将将场景数据标记成静态模型和动态模型;步骤(2),将所有的静态模型建立一个静态加速数据结构,所述静态加速数据结构采用空间分割的方法,将空间划分为两部分;
步骤(3),将所有的动态模型建立一个动态加速数据结构,所述动态加速数据结构采用层次结构的方法,首先构造底层的单个模型的层次结构,然后利用已经构造好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构造大的层次结构节点,依次递归,直到整个场景的动态模型都已合并完毕;
步骤(4),遍历结构接收静态结构和动态结构的划分结果,同时接收待查找的数据,将待查找的数据在静态和动态结构中进行比对,并将比对的结果返回。优选地,所述动态场景发生变化时,重复步骤(3)。优选地,所述空间分割的方法具体为根据松弛表面重叠启发函数,选取最优的划分位置与坐标轴,不断地将空间结构划分为两部分。优选地,所述层次结构的构建方法具体为底层的层次模型为单个模型的层次结构,此模型利用图元紧密启发函数,选取最优的划分平面,将父节点的层次包围盒划分为左右两个子包围盒,并且在构建过程中选取子节点的特征向量,根据子节点的特征向量构建父节点的特征向量,并且将节点的平移变换矩阵置为单位矩阵,此构建依次递归下去直到包围盒内的面片数小于一定阈值或者表面积小于一定阈值;当单个模型的层次结构构建结束之后,利用已经构建好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构建大的层次结构节点,依次递归,直至所有动态模型都被加入。优选地,当动态模型发生改变时,根据图元重叠代价函数评估此情况下数据结构的质量下降代价与重建代价;若质量下降代价小于重建代价,则利用动态模型的变换矩阵,自下而上的重置变换矩阵与特征向量,否则,根据动态数据结构的构建过程重新构建。优选地,所述遍历结构包括辅助查找结构,所述辅助查找结构用于记录上一次查找的结果;当辅助查找结构为空时,直接进行一次查找;当辅助查找结构不为空时,首先判断辅助查找结构中的信息是否满足光线要求且动态加速结构未发生重建,条件满足,返回辅助查找结构信息;否则,置辅助查找结构为空,按辅助查找结构为空的情况直接进行一次查找。优选地,当辅助查找结构为空时,直接进行一次查找,其具体为如果辅助查找结构为空,根据输入数据的法向量和位置,在静态模型和动态模型数据结构中同时进行查找;如果动态模型和静态模型均未查找到相应节点,进行下一个数据的处理;如果动态模型和静态模型中一种查找到相应节点,记录下此节点位置并标记其属于哪个模型,进行下一个数据的处理;如果动态模型和静态模型中均找到相应节点,记录下离目标节点近的位置并标记其属于哪个模型,进行下一个数据的处理。与现有技术相比,本发明提出的技术方案有如下有益效果上述动态三维场景中加速数据结构的构建方法,既能在静态部分获得空间划分的查找优势,同时又能在动态部分获得层次图的重建和更新优势,使得数据结构在整体上效率获得提升。


图I为本发明动态三维场景中加速数据结构的构建方法流程图。图2为光线击中动态加速结构,未击中静态加速结构。、
图3为光线击中静态加速结构,未击中动态加速结构。图4为光线同时击中静态加速结构和动态加速结构。图5为光线未击中动态加速结构和静态加速结构。图6为数据结构的数据域。
具体实施例方式以下结合附图和实施例,对本发明进行进一步的详细说明。图I为本发明动态三维场景中加速数据结构的构建方法的流程图。本发明公开了一种动态三维场景中加速数据结构的构建方法,其具体包含以下步骤
步骤(I),接收场景数据,将将场景数据标记成静态模型和动态模型;
步骤(2),将所有的静态模型建立一个静态加速数据结构,所述静态加速数据结构采用空间分割的方法,将空间划分为两部分;
步骤(3),将所有的动态模型建立一个动态加速数据结构,所述动态加速数据结构采用层次结构的方法,首先构造底层的单个模型的层次结构,然后利用已经构造好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构造大的层次结构节点,依次递归,直到整个场景的动态模型都已合并完毕;
步骤(4),遍历结构接收静态结构和动态结构的划分结果,同时接收待查找的数据,将待查找的数据在静态和动态结构中进行比对,并将比对的结果返回。上述动态三维场景中加速数据结构的构建方法,既能在静态部分采用空间分割,获得空间划分的查找优势,同时又能在动态部分采用层次结构的方法,获得层次图的重建和更新优势,使得数据结构在整体效率上获得提升。优选地,所述动态场景发生变化时,重复步骤(3)。在动态部分充分获得层次图的重建和更新优势。优选地,所述空间分割的方法具体为根据松弛表面重叠启发函数,选取最优的划分位置与坐标轴,不断地将空间结构划分为两部分。优选地,所述层次结构的构建方法具体为底层的层次模型为单个模型的层次结构,此模型利用图元紧密启发函数,选取最优的划分平面,将父节点的层次包围盒划分为左右两个子包围盒,并且在构建过程中选取子节点的特征向量,根据子节点的特征向量构建父节点的特征向量,并且将节点的平移变换矩阵置为单位矩阵,此构建依次递归下去直到包围盒内的面片数小于一定阈值或者表面积小于一定阈值;当单个模型的层次结构构建结束之后,利用已经构建好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构建大的层次结构节点,依次递归,直至所有动态模型都被加入。动态结构的构建方法为两层结构,底层结构为每一个模型建立节点,根据图元紧密启发函数法,选取最优的划分节点与划分坐标轴,以此为基准建立左右孩子节点,并根据左右孩子节点的最小包围盒建立父节点的最小包围盒并根据左右孩子节点的特征向量建立父节点的特征向量,将节点的变换矩阵置为单位矩阵;顶层结构利用已经构建好的底层结构,根据每个模型节点的特征向量,每次选取最相似的节点对,以此建立新的节点,并根据子节点对的特征向量,建立新节点的特征向量,直至所有动态模型都被加入为止。优选地,当动态模型发生改变时,根据图元重叠代价函数评估此情况下数据结构的质量下降代价与重建代价;若质量下降代价小于重建代价,则利用动态模型的变换矩阵,自下而上的重置变换矩阵与特征向量,否则,根据动态数据结构的构建过程重新构建。进一步加快了数据结构的整体效率。优选地,所述遍历结构包括辅助查找结构,所述辅助查找结构用于记录上一次查找的结果;当辅助查找结构为空时,直接进行一次查找;当辅助查找结构不为空时,首先判断辅助查找结构中的信息是否满足光线要求且动态加速结构未发生重建,条件满足,返回辅助查找结构信息;否则,置辅 助查找结构为空,按辅助查找结构为空的情况直接进行一次查找。在实际的光线追踪过程中,由于连续追踪的光线在空间上具有一定的连续性。可以通过记录上一次追踪结果的方式对下一次进行预测,如果预测成功,则继续进行下一次预测。如果预测失败,将重新对光线进行一次追踪。所以,我们首先在光线追踪结构上附加一个辅助查找结构,用于记录上次查找的结果。进一步加快了数据结构的整体效率。优选地,当辅助查找结构为空时,直接进行一次查找,其具体为如果辅助查找结构为空,根据输入数据的法向量和位置,在静态模型和动态模型数据结构中同时进行查找;如果动态模型和静态模型均未查找到相应节点,进行下一个数据的处理;如果动态模型和静态模型中一种查找到相应节点,记录下此节点位置并标记其属于哪个模型,进行下一个数据的处理;如果动态模型和静态模型中均找到相应节点,记录下离目标节点近的位置并标记其属于哪个模型,进行下一个数据的处理。当辅助查找结构为空时,直接进行一次查找。可能发生的情况如图2至图5所示四种情况。如图2的情况时,光线击中动态加速结构,未击中静态加速结构。在动态加速结构中查找击中节点,返回节点信息,并将结果记录到辅助查找结构。如图3的情况时,光线击中静态加速结构,未击中动态加速结构。在静态加速结构中查找击中节点,返回节点信息,并将结果记录到辅助查找结构中。如图4的情况时,光线同时击中静态加速结构和动态加速结构,在两个加速结构中同时查找击中节点,然后比对两个节点,选择离光线近的节点,返回节点信息,并将结果记录到辅助查找结构中。如图5的情况时,光线未击中动态加速结构和静态加速结构,返回空值,并置辅助查找结构为空。当辅助查找结构不为空时,首先判断辅助查找结构中的信息是否满足光线要求,且动态加速结构未发生重建,如果满足,返回辅助查找结构信息。如果不满足,置辅助查找结构为空,按辅助查找结构为空的情况直接进行一次查找。这里已经通过具体的实施例子对本发明进行了详细描述,提供上述实施例的描述为了使本领域的技术人员制造或适用本发明,这些实施例的各种修改对于本领域的技术人员来说是容易理解的。本发明并不限于这些例子,或其中的某些方面。本发明的范围通过附加的权利要求进行详细说明。上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种动态三维场景中加速数据结构的构建方法,其具体包含以下步骤 步骤(I),接收场景数据,将将场景数据标记成静态模型和动态模型; 步骤(2),将所有的静态模型建立一个静态加速数据结构,所述静态加速数据结构采用空间分割的方法,将空间划分为两部分; 步骤(3),将所有的动态模型建立一个动态加速数据结构,所述动态加速数据结构采用层次结构的方法,首先构造底层的单个模型的层次结构,然后利用已经构造好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构造大的层次结构节点,依次递归,直到整个场景的动态模型都已合并完毕; 步骤(4),遍历结构接收静态结构和动态结构的划分结果,同时接收待查找的数据,将待查找的数据在静态和动态结构中进行比对,并将比对的结果返回。
2.如权利要求I所述的动态三维场景中加速数据结构的构建方法,其特征在于所述动态场景发生变化时,重复步骤(3)。
3.如权利要求2所述的动态三维场景中加速数据结构的构建方法,其特征在于所述空间分割的方法具体为根据松弛表面重叠启发函数,选取最优的划分位置与坐标轴,不断地将空间结构划分为两部分。
4.如权利要求3所述的动态三维场景中加速数据结构的构建方法,其特征在于所述层次结构的构建方法具体为底层的层次模型为单个模型的层次结构,此模型利用图元紧密启发函数,选取最优的划分平面,将父节点的层次包围盒划分为左右两个子包围盒,并且在构建过程中选取子节点的特征向量,根据子节点的特征向量构建父节点的特征向量,并且将节点的平移变换矩阵置为单位矩阵,此构建依次递归下去直到包围盒内的面片数小于一定阈值或者表面积小于一定阈值;当单个模型的层次结构构建结束之后,利用已经构建好的底层层次结构,每次选取最相似的特征向量所在的模型合并,构建大的层次结构节点,依次递归,直至所有动态模型都被加入。
5.如权利要求I所述的动态三维场景中加速数据结构的构建方法,其特征在于当动态模型发生改变时,根据图元重叠代价函数评估此情况下数据结构的质量下降代价与重建代价;若质量下降代价小于重建代价,则利用动态模型的变换矩阵,自下而上的重置变换矩阵与特征向量,否则,根据动态数据结构的构建过程重新构建。
6.如权利要求I所述的动态三维场景中加速数据结构的构建方法,其特征在于所述遍历结构包括辅助查找结构,所述辅助查找结构用于记录上一次查找的结果;当辅助查找结构为空时,直接进行一次查找;当辅助查找结构不为空时,首先判断辅助查找结构中的信息是否满足光线要求且动态加速结构未发生重建,条件满足,返回辅助查找结构信息;否贝U,置辅助查找结构为空,按辅助查找结构为空的情况直接进行一次查找。
7.如权利要求6所述的动态三维场景中加速数据结构的构建方法,其特征在于当辅助查找结构为空时,直接进行一次查找,其具体为如果辅助查找结构为空,根据输入数据的法向量和位置,在静态模型和动态模型数据结构中同时进行查找;如果动态模型和静态模型均未查找到相应节点,进行下一个数据的处理;如果动态模型和静态模型中一种查找到相应节点,记录下此节点位置并标记其属于哪个模型,进行下一个数据的处理;如果动态模型和静态模型中均找到相应节点,记录下离目标节点近的位置并标记其属于哪个模型,进行下一个数据的处理。
全文摘要
本发明涉及计算机图形处理技术领域,本发明公开了一种动态三维场景中加速数据结构的构建方法,其具体包含以下步骤步骤(1)接收场景数据,将将场景数据标记成静态模型和动态模型;步骤(2)将所有的静态模型建立一个静态加速数据结构;步骤(3)将所有的动态模型建立一个动态加速数据结构;步骤(4)遍历结构接收静态结构和动态结构的划分结果。与现有技术相比,本发明提出的技术方案有如下有益效果上述动态三维场景中加速数据结构的构建方法,既能在静态部分获得空间划分的查找优势,同时又能在动态部分获得层次图的重建和更新优势,使得数据结构在整体上效率获得提升。
文档编号G06F17/30GK102682106SQ20121013743
公开日2012年9月19日 申请日期2012年5月7日 优先权日2012年5月7日
发明者卢光辉, 曹跃, 李鑫, 蔡洪斌, 赵帅, 邱航, 郭雨潇, 阮崇鹤, 陈雷霆 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1