CN103700137A - 一种时空相关的层次遮挡剔除方法 - Google Patents
一种时空相关的层次遮挡剔除方法 Download PDFInfo
- Publication number
- CN103700137A CN103700137A CN201310631959.0A CN201310631959A CN103700137A CN 103700137 A CN103700137 A CN 103700137A CN 201310631959 A CN201310631959 A CN 201310631959A CN 103700137 A CN103700137 A CN 103700137A
- Authority
- CN
- China
- Prior art keywords
- node
- occlusion
- query
- visible
- previous frame
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种时空相关的层次遮挡剔除方法,该方法的步骤为:(1)按照自顶向下层次遍历的方式对场景结构树中的结点进行访问,根据上一帧的结点可见信息,计算出当前帧需要进行遮挡查询的结点集合,包括上一帧不可见的终止结点和上一帧可见的叶子结点,并把上一帧可见的叶子结点的包围盒作为遮挡物进行绘制;(2)对上一帧不可见的终止结点进行遮挡查询,并根据查询结果更新相关结点的可见信息;(3)对上一帧可见的叶子结点进行遮挡查询,并根据查询结果更新相关结点的可见信息。本方法可以有效地对大规模三维场景进行遮挡剔除,提高遮挡剔除的速度和精度。
Description
技术领域
本发明涉及三维场景的图形绘制领域,更具体地讲,涉及一种对三维场景进行遮挡剔除的方法。
背景技术
遮挡剔除能够有效地剔除对最终图像没有贡献的物体,避免绘制场景中被遮挡住的物体。典型的遮挡剔除方法主要分为两类:物体空间的遮挡剔除方法和图像空间的遮挡剔除方法。图像空间的遮挡剔除方法能够利用图形硬件的遮挡查询功能来判断物体的可见性,因此,该类遮挡剔除方法的执行效率比物体空间的遮挡剔除方法高。大部分快速的遮挡剔除方法都利用了图形硬件的遮挡查询功能,并结合一定的查询策略对场景层次结构树进行遍历,判断各个结点的可见性,剔除被遮挡的结点。
在本发明前,北卡罗来纳大学教堂山分校的Govindaraju等人使用三个GPU交替进行遮挡查询[Govindaraju N K,Sud A,Yoon S E,et al.Interactive visibilityculling in complex environments using occlusion-switches[C].Proceedings of the2003 ACM symposium on Interactive3D graphics(I3D03),2003:103-112],其中,两个GPU交替进行包围体的绘制和三维物体的遮挡查询,第三个GPU根据遮挡查询的结果,对三维场景中的可见物体进行绘制。德国波恩大学的Guthe等人提出了三维场景中物体遮挡的统计模型[Guthe M,BalázsKlein R.NearOptimal Hierarchical Culling:Performance Driven Use of Hardware OcclusionQueries[J].Rendering Techniques.Springer,2006:207-214],该模型可以估计出三维场景中各物体被遮挡的概率,他们通过遮挡统计模型估计出三维场景树中各个结点被遮挡的概率,有选择性地对部分结点优先进行遮挡查询。
上述的遮挡剔除方法都没有考虑结点所处的层次对遮挡查询结果产生的影响,没有充分利用结点的层次信息。因此,它们的遮挡剔除速度和精度均在一定程度上受到了影响。本发明提出了一种时空相关的层次遮挡剔除方法,该方法利用了结点可见信息的时空相关性,并根据结点的层次信息,对位于同一层次的结点,只发送一次多结点的遮挡查询,从而提高了遮挡剔除的效率。
发明内容
本发明的目的是:克服现有遮挡剔除方法没有充分利用结点的层次信息,提供了一种时空相关的层次遮挡剔除方法,该方法可以有效地对三维场景进行遮挡剔除,提高了三维场景遮挡剔除的速度和精度。
为了实现上述目的,本发明的原理是:利用结点可见信息的时空相关性,并根据结点的层次信息,优先对某些结点进行遮挡查询,从而提高了遮挡剔除的效率。结点可见信息的时间相关性是指视点连续变化时,上一帧大部分的可见物体通常在当前帧还是可见的,上一帧大部分的不可见物体在当前帧还是不可见的。对于上一帧可见的叶子结点,本发明将其作为当前帧的遮挡物,并提前对其包围盒进行绘制;对于上一帧不可见的终止结点,本发明对处于同一层次的多个结点,只发射一次多结点的遮挡查询,减少了遮挡查询的次数。结点可见信息的空间相关性是指可见信息和不可见信息在父子结点间的传递,如果某个结点不可见,则其子孙结点均为不可见;如果某个结点可见,则其祖先结点均为可见。本发明仅对三维场景层次结构树中可见的叶子结点和不可见的终止结点进行遮挡查询,减少了遮挡查询的次数。同时,为了减少CPU停止等待查询结果返回的时间,在遮挡查询结果没有返回时,CPU继续向GPU发送其余结点的遮挡查询请求。
本发明所采取的技术方案是:首先,按照自顶向下层次遍历的方式对场景结构树中的结点进行访问,根据上一帧的结点可见信息,计算出当前帧需要进行遮挡查询的结点集合,包括上一帧不可见的终止结点和上一帧可见的叶子结点,并把上一帧可见的叶子结点作为遮挡物,提前对其包围盒进行绘制;然后,对上一帧不可见的终止结点进行遮挡查询,并根据查询结果更新相关结点的可见信息;最后,对上一帧可见的叶子结点进行遮挡查询,并根据查询结果更新相关结点的可见信息。
本发明与现有技术相比的优点在于:充分利用了结点可见信息的时空相关性,并结合结点的层次信息,对三维场景进行遮挡查询,有效地提高了遮挡剔除的效率。
附图说明
图1为三维场景的场景结构树;
图2A是可见信息在父子结点间的传递关系;
图2B是不可见信息在父子结点间的传递关系;
图3为本发明时空相关的层次遮挡剔除方法的流程图。
具体实施方法
下面结合附图和实施例对本发明作进一步详细的描述,在介绍本发明的具体实施方法之前,首先对三维场景的场景结构树、结点可见信息的时间相关性和空间相关性、单结点的遮挡查询和多结点的遮挡查询进行说明。
三维场景的场景结构树构造方法可以采用二叉空间分割或者八叉树空间分割、Kd树空间分割等方法,对三维场景进行组织。图1为利用二叉空间分割方法生成的场景结构树,该树的结点属性包括结点的可见信息和结点的包围盒信息,其中,结点的可见信息是指结点在当前帧是否可见。对于叶子结点,其包围盒可以采用AABB(Axis-aligned bounding box,轴对称包围盒)、OBB(Oriented Bounding Boxes,有向包围盒)等;对于非叶子结点,其包围盒为其子孙结点中所有是叶子结点的结点包围盒的并集。
可见的叶子结点是指可见信息为可见的叶子结点,不可见的终止结点是指可见信息为不可见而且其父亲结点可见信息为可见的结点。在图1中,圆形结点表示当前帧可见的结点,方形结点表示当前帧不可见的结点,其中,可见的叶子结点为结点9和结点10,不可见的终止结点为结点3、结点8和结点11。
结点可见信息的时间相关性是指视点在连续变化时,上一帧大部分可见的物体通常在当前帧还是可见的,上一帧大部分不可见的物体在当前帧还是不可见的。
结点可见信息的空间相关性是指可见信息和不可见信息在父子结点间的传递,如果某个结点不可见,则其子孙结点均为不可见;如果某个结点可见,则其祖先结点均可见。如图2A所示,可见信息可以由孩子结点传递给其祖先结点;如图2B所示,不可见信息可以由父亲结点传递给其子孙结点。
单结点的遮挡查询是指对一个结点单独发射一次遮挡查询请求,GPU通过对该结点的包围盒进行深度测试,返回该结点的包围盒所通过测试的像素个数。如果有像素通过,则该结点被判断为可见,否则,该结点被判为不可见。
多结点的遮挡查询是指对于处于同一层的终止结点只向GPU发射一次遮挡查询请求,即GPU对这些结点的包围盒的集合进行深度测试。如果没有像素通过,则这些结点都被判断为不可见;只有当有像素通过时,才需要对所涉及的每个结点发射一次单节点的遮挡查询。
本发明提出的时空相关的层次遮挡剔除方法的流程如图3所示,其步骤如下:
(1)按照自顶向下层次遍历的方式对场景结构树中的结点进行访问,根据上一帧的结点可见信息,计算出当前帧需要进行遮挡查询的结点集合,包括上一帧不可见的终止结点和上一帧可见的叶子结点,并把上一帧可见的叶子结点的包围盒作为遮挡物进行绘制:
(1.1)将场景结构树的根结点压入层次遍历队列;
(1.2)从层次遍历队列中取出队首结点,读取该结点上一帧的可见信息,并把其在当前帧的可见信息置为不可见。如果队首结点不可见,则进入步骤(1.3),否则,进入步骤(1.4);
(1.3)将层次遍历队列的队首结点从队列中弹出,并压入不可见的终止结点栈;
(1.4)如果层次遍历队列的队首结点是叶子结点,则绘制该结点的包围盒,然后,将该结点从层次遍历队列中弹出,并压入可见的叶子结点栈,否则,将该结点的孩子结点压入层次遍历队列,然后将该结点从队列中弹出;
(1.5)如果层次遍历队列为空,则场景结构树的遍历结束,否则,进入步骤(1.2)。
(2)利用不可见结点的空间相关性,对处于同一层次的上一帧不可见的终止结点,只发射一次多结点的遮挡查询,并根据多结点的遮挡查询结果,更新相关结点的可见信息或者对所涉及的每个结点都发射单节点的遮挡查询:
(2.1)如果不可见的终止结点栈为空,则进入步骤(2.4),否则,从不可见的终止结点栈中,读取出栈顶结点及其在场景结构树中所处的层次L,然后将栈顶结点从栈中弹出并压入查询队列;
(2.2)如果不可见的终止结点栈为空,则进入步骤(2.3),否则,如果栈顶结点的层次等于L,则将栈顶结点从栈中弹出并压入查询队列,并重复进入步骤(2.2),否则,进入步骤(2.3);
(2.3)针对步骤(2.1)和步骤(2.2)中新进入查询队列的结点,向GPU发射一次多结点的遮挡查询;
(2.4)如果查询队列的队首结点的遮挡查询结果没有从GPU返回,则进入步骤(2.1),否则,如果队首结点的遮挡查询为多结点的遮挡查询,则进入步骤(2.5),否则,进入步骤(2.6);
(2.5)对于队首结点的遮挡查询为多结点的遮挡查询,根据队首结点的遮挡查询结果,对查询队列中的结点进行处理,有如下两种情况:
(2.5a)如果遮挡查询结果为不可见,则将该次多结点的遮挡查询所涉及的结点从查询队列中删除,并将这些结点置为不可见,进入步骤(2.7);
(2.5b)如果遮挡查询结果为可见,则将该次多结点的遮挡查询所涉及的结点从查询队列中删除,然后,将这些结点压入查询队列的队尾,并对每个结点向GPU发射一次单结点的遮挡查询,进入步骤(2.7);
(2.6)对于队首结点的遮挡查询为单结点的遮挡查询,根据队首结点的遮挡查询结果,对查询队列中的结点进行处理,有如下两种情况:
(2.6a)如果遮挡查询结果为不可见,则将该结点从查询队列中删除,并将其置为不可见,进入步骤(2.7);
(2.6b)如果遮挡查询结果为可见,则将该结点从查询队列中删除,并将该结点及其祖先结点都置为可见,进入步骤(2.7);
(2.7)如果查询队列不为空,则进入步骤(2.4),否则,如果不可见的终止结点栈不为空,则进入步骤(2.1),否则,上一帧不可见的终止结点的遮挡查询结束。
(3)对上一帧可见的叶子结点进行遮挡查询,并根据查询结果更新相关结点的可见信息:
(3.1)如果上一帧可见的叶子结点栈为空,则进入步骤(3.2),否则,将栈顶结点从上一帧可见的叶子结点栈中弹出并压入查询队列,然后向GPU发射对该结点的单结点的遮挡查询;
(3.2)如果查询队列为空,则进入步骤(3.5),如果查询队列的队首结点的遮挡查询结果没有从GPU返回,则进入步骤(3.1),否则,如果队首结点的遮挡查询为可见,则进入步骤(3.3),否则,进入步骤(3.4);
(3.3)将该结点从查询队列中删除,并将该结点及其祖先结点都置为可见,进入步骤(3.5);
(3.4)将该结点从查询队列中删除,并将其置为不可见,进入步骤(3.5);
(3.5)如果查询队列不为空,进入步骤(3.2),否则,如果可见的叶子结点栈不为空,进入步骤(3.1),否则,对上一帧可见的叶子结点遮挡查询结束。
本发明中未详细阐述的部分属于本领域技术人员的公知技术。
最后所应说明的是,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明时空相关的层次遮挡剔除方法的前提下,还可以做出若干改进或等同替换,这些改进和等同替换也应视为本发明的保护范围。
Claims (2)
1.一种时空相关的层次遮挡剔除方法,其特征在于包括步骤如下:
(1)按照自顶向下层次遍历的方式对场景结构树中的结点进行访问,根据上一帧的结点可见信息,计算出当前帧需要进行遮挡查询的结点集合,包括上一帧不可见的终止结点和上一帧可见的叶子结点,并把上一帧可见的叶子结点的包围盒作为遮挡物进行绘制;其中,场景结构树中的结点属性包括结点的可见信息和结点的包围盒信息;可见的叶子结点是指可见信息为可见的叶子结点,不可见的终止结点是指可见信息为不可见而且其父亲结点可见信息为可见的结点;
(2)对上一帧不可见的终止结点进行遮挡查询,并根据查询结果更新相关结点的可见信息;
(3)对上一帧可见的叶子结点进行遮挡查询,并根据查询结果更新相关结点的可见信息,即如果某个叶子的遮挡查询结果为不可见,则将该叶子结点的可见信息重置为不可见;如果某个叶子的遮挡查询为可见,则将该叶子结点及其祖先结点的可见信息都置为可见。
2.根据权利要求1所述的时空相关的层次遮挡剔除方法,其特征在于:所述步骤(2)对上一帧不可见的终止结点进行遮挡查询,包括步骤如下:
(2.1)如果不可见的终止结点栈为空,则进入步骤(2.4),否则,从不可见的终止结点栈中,读取出栈顶结点及其在场景结构树中所处的层次L,然后将栈顶结点从栈中弹出并压入查询队列;
(2.2)如果不可见的终止结点栈为空,则进入步骤(2.3),否则,如果栈顶结点的层次等于L,则将栈顶结点从栈中弹出并压入查询队列,并重复进入步骤(2.2),否则,进入步骤(2.3);
(2.3)针对步骤(2.1)和步骤(2.2)中新进入查询队列的结点,向GPU发射一次多结点的遮挡查询;
(2.4)如果查询队列的队首结点的遮挡查询结果没有从GPU返回,则进入步骤(2.1),否则,如果队首结点的遮挡查询为多结点的遮挡查询,则进入步骤(2.5),否则,进入步骤(2.6);
(2.5)对于队首结点的遮挡查询为多结点的遮挡查询,根据队首结点的遮挡查询结果,对查询队列中的结点进行处理,有如下两种情况:
(2.5a)如果遮挡查询结果为不可见,则将该次多结点的遮挡查询所涉及的结点从查询队列中删除,并将这些结点置为不可见,进入步骤(2.7);
(2.5b)如果遮挡查询结果为可见,则将该次多结点的遮挡查询所涉及的结点从查询队列中删除,然后,将这些结点压入查询队列的队尾,并对每个结点向GPU发射一次单结点的遮挡查询,进入步骤(2.7);
(2.6)对于队首结点的遮挡查询为单结点的遮挡查询,根据队首结点的遮挡查询结果,对查询队列中的结点进行处理,有如下两种情况:
(2.6a)如果遮挡查询结果为不可见,则将该结点从查询队列中删除,并将其置为不可见,进入步骤(2.7);
(2.6b)如果遮挡查询结果为可见,则将该结点从查询队列中删除,并将该结点及其祖先结点都置为可见,进入步骤(2.7);
(2.7)如果查询队列不为空,则进入步骤(2.4),否则,如果不可见的终止结点栈不为空,则进入步骤(2.1),否则,上一帧不可见的终止结点的遮挡查询结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310631959.0A CN103700137A (zh) | 2013-12-01 | 2013-12-01 | 一种时空相关的层次遮挡剔除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310631959.0A CN103700137A (zh) | 2013-12-01 | 2013-12-01 | 一种时空相关的层次遮挡剔除方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103700137A true CN103700137A (zh) | 2014-04-02 |
Family
ID=50361654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310631959.0A Pending CN103700137A (zh) | 2013-12-01 | 2013-12-01 | 一种时空相关的层次遮挡剔除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103700137A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321198A (zh) * | 2015-06-09 | 2016-02-10 | 苏州蜗牛数字科技股份有限公司 | 一种基于3d场景gpu端软件遮挡查询的图形绘制方法 |
CN106355644A (zh) * | 2016-08-31 | 2017-01-25 | 北京像素软件科技股份有限公司 | 三维电子游戏画面中的物体模型剔除方法及装置 |
CN107823886A (zh) * | 2017-12-06 | 2018-03-23 | 北京像素软件科技股份有限公司 | 遮挡属性配置方法、装置及可读存储介质 |
CN109663358A (zh) * | 2018-12-21 | 2019-04-23 | 成都四方伟业软件股份有限公司 | 动态场景剔除遮挡物体的方法、装置及电子设备 |
CN111784612A (zh) * | 2020-07-08 | 2020-10-16 | 网易(杭州)网络有限公司 | 游戏中剔除场景物体模型的方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339667A (zh) * | 2008-05-27 | 2009-01-07 | 中国科学院计算技术研究所 | 一种虚拟动态群体的可见性判断方法 |
-
2013
- 2013-12-01 CN CN201310631959.0A patent/CN103700137A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339667A (zh) * | 2008-05-27 | 2009-01-07 | 中国科学院计算技术研究所 | 一种虚拟动态群体的可见性判断方法 |
Non-Patent Citations (3)
Title |
---|
BITTNER J等: "Coherent hierarchical culling: Hardware occlusion queries made useful", 《COMPUTER GRAPHICS FORUM》 * |
王海颍: "基于改进型遮挡查询的复杂场景漫游算法", 《计算机应用与软件》 * |
聂俊岚等: "一种基于GPU的遮挡剔除算法改进研究", 《微计算机信息》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105321198A (zh) * | 2015-06-09 | 2016-02-10 | 苏州蜗牛数字科技股份有限公司 | 一种基于3d场景gpu端软件遮挡查询的图形绘制方法 |
CN106355644A (zh) * | 2016-08-31 | 2017-01-25 | 北京像素软件科技股份有限公司 | 三维电子游戏画面中的物体模型剔除方法及装置 |
CN107823886A (zh) * | 2017-12-06 | 2018-03-23 | 北京像素软件科技股份有限公司 | 遮挡属性配置方法、装置及可读存储介质 |
CN107823886B (zh) * | 2017-12-06 | 2021-02-09 | 北京像素软件科技股份有限公司 | 遮挡属性配置方法、装置及可读存储介质 |
CN109663358A (zh) * | 2018-12-21 | 2019-04-23 | 成都四方伟业软件股份有限公司 | 动态场景剔除遮挡物体的方法、装置及电子设备 |
CN111784612A (zh) * | 2020-07-08 | 2020-10-16 | 网易(杭州)网络有限公司 | 游戏中剔除场景物体模型的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109701273B (zh) | 游戏数据的处理方法、装置、电子设备及可读存储介质 | |
CN103700137A (zh) | 一种时空相关的层次遮挡剔除方法 | |
CN102509317B (zh) | 一种实时碰撞检测系统的实现方法 | |
CN105389850B (zh) | 一种大规模三维场景的可见性生成方法 | |
CN102831631B (zh) | 一种大规模三维动画的渲染方法及渲染装置 | |
CN107798721B (zh) | 一种点云数据的处理方法及装置和点云渲染方法及装置 | |
CN101984443B (zh) | 一种改进的柔性织物碰撞处理方法 | |
CN110738721A (zh) | 基于视频几何分析的三维场景渲染加速方法及系统 | |
CN109144095A (zh) | 用于无人驾驶飞行器的基于嵌入式立体视觉的障碍躲避系统 | |
CN106446351A (zh) | 一种面向实时绘制的大规模场景组织与调度技术及仿真系统 | |
US8279227B2 (en) | Method for detecting collisions among large numbers of particles | |
CN102426424B (zh) | 基于分布式架构的临近空间飞行器视景仿真方法 | |
CN108470174B (zh) | 障碍物分割方法及装置、计算机设备及可读介质 | |
CN1815473A (zh) | 引用虚拟环境中的对象 | |
CN101908068A (zh) | 一种基于四叉树索引的海量激光扫描点云实时绘制方法 | |
CN109745704B (zh) | 一种体素地形的管理方法 | |
CN103065353A (zh) | 三维模型特征提取方法和系统、三维模型检索方法和系统 | |
CN105530554B (zh) | 一种视频摘要生成方法及装置 | |
CN101414383A (zh) | 图像处理设备和图像处理方法 | |
US11771992B2 (en) | Information processing method, apparatus, and device, and storage medium | |
CN111870952A (zh) | 一种高度图生成方法、装置、设备及存储介质 | |
CN113781631A (zh) | 一种海量点云数据处理与可视化方法及系统 | |
CN106570926A (zh) | 一种飞行视景仿真中高效的粒子云层绘制方法 | |
CN112711863A (zh) | 基于bim技术快速提取坐标的方法、系统、设备及介质 | |
CN112023400A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140402 |