CN105389850B - 一种大规模三维场景的可见性生成方法 - Google Patents

一种大规模三维场景的可见性生成方法 Download PDF

Info

Publication number
CN105389850B
CN105389850B CN201510740102.1A CN201510740102A CN105389850B CN 105389850 B CN105389850 B CN 105389850B CN 201510740102 A CN201510740102 A CN 201510740102A CN 105389850 B CN105389850 B CN 105389850B
Authority
CN
China
Prior art keywords
pvs
dimensional scenic
dimensions
distance
ray
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.)
Active
Application number
CN201510740102.1A
Other languages
English (en)
Other versions
CN105389850A (zh
Inventor
李胜
汪国平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
A New Generation Of Information Technology Research Institute (peking University Tianjin)
Original Assignee
A New Generation Of Information Technology Research Institute (peking University Tianjin)
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by A New Generation Of Information Technology Research Institute (peking University Tianjin) filed Critical A New Generation Of Information Technology Research Institute (peking University Tianjin)
Priority to CN201510740102.1A priority Critical patent/CN105389850B/zh
Publication of CN105389850A publication Critical patent/CN105389850A/zh
Application granted granted Critical
Publication of CN105389850B publication Critical patent/CN105389850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques
    • G06F18/2321Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
    • G06F18/23213Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Graphics (AREA)
  • Remote Sensing (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种大规模三维场景的新型可见性生成方法。本方法为:1)构建待处理三维场景的层次包围盒结构;2)将包含该三维场景的三维空间按照空间特征剖分成若干互不重叠的单元view cell,得到一层次树;3)对该三维空间中采样射线计算出每个单元对应的PVS和QPVS;4)并开始三维场景的漫游,根据当前视点的位置,找到层次树中所在单元;将该单元的PVS和QPVS分别处理,判断出利用QPVS所构建出队列中的物体的可见性,并相应地更新PVS信息,自底向上更新三维空间层次树中所有层次view cell的PVS和QPVS信息,直至漫游过程结束。

Description

一种大规模三维场景的可见性生成方法
技术领域
本发明涉及一种大规模三维场景的可见性计算方法。属于虚拟现实、三维计算机图形与可视化、计算机软件技术领域。
背景技术
大规模三维场景的可见性(visibility)分析是海量三维场景管理、组织与绘制的重要组成部分。通过相关可见性的分析与计算可以裁减掉场景中绝大多数不可见的部分,避免场景内部完全暴力的可见性计算方法。可见性分析算法通常会计算得到一个潜在可见集合(Potential Visible Set,PVS),PVS是三维场景中所有物体集合的一个子集,是用算法估算出的一个可见物体及其可见表面的集合。实际在线漫游浏览三维场景时,需要绘制的并不是三维场景中的所有物体,而是出现在该PVS集合中的物体及其表面。如此,可以大大减少需要进行三维场景仿真与绘制的数据总量。
因此,如何更加快速地计算得到PVS,并且使PVS尽可能地接近实际精确的可见物体的集合,是可见性分析与计算的根本任务。
可见性分析与计算得到的结果分为两种类型:保守可见性(conservative)和近似可见性(approximate)。如果通过可见性计算得到的是保守可见集合,则它至少包含了所有的可见物体,同时还会保留一些多余的但实际并不可见的物体。利用该类型可见性信息进行绘制时可以保证绘制结果的准确性,但会牺牲一定的绘制速度;如果得到的是近似可见集合(approximate visibility set),则该集合只是精确可见集合(exact visible set)的一个部分,它不能保证包含所有的可见物体,利用该类型可见性信息进行绘制时不能保证绘制的结果的准确性。为了能够计算获得近似可见集合,两种类型的方法常被采用:采样方法(sampling)和激进方法(aggressive method)。采样方法利用随机的或者制定好的采样策略来估算可见集合,期望得到的结果尽量不错过可见物体,此方法牺牲了结果的准确性,换来了实施方法的速度和方便性。而激进方法(aggressive method)则基于与计算保守可见性类似的方法,只是在处理可见性的过程中,对于那些被评估具有可见的可能性不大的物体或对图像贡献较小的物体,则直接忽略并被视为不可见。只有在对三维场景计算与图像质量的要求较低的情况下,才能够使用上述近似可见性(approximate)的计算算法。
可见性计算的算法按照计算空间的划分主要分为两大类:基于点的方法(from-point)和基于区域的方法(from-region)。from-point类型的算法是基于当前视点的某个精确位置进行可见性的计算,而from-region的算法则是为视点所处的空间区域范围计算在该范围内可能看见物体的集合。from-region算法优点在于其区域的有效性和方便预取,由于计算出的PVS对于一个区域范围之内(即观察单元,view cell)都是有效的,也就是对三维场景进行虚拟漫游时视点位于该区域范围之内的连续帧都使用这个PVS进行绘制而无需更换待绘制的内容;与此同时,当视点处于某一个view cell中时,可以很方便的将相邻的view cell的可见集合提前取到内存中做好数据准备以便于后续绘制使用。
from-point的代表性算法中如下文所述。
可见性计算的核心是遮挡的判断,为了加快判断某个物体是否被遮挡的速度,hierarchical occlusion map通过在线层次遮挡关系的构建(Hansong Zhang,DineshManocha,Thomas Hudson,and Kenneth E.Hoff III.Visibility culling usinghierarchical occlusion maps.In SIGGRAPH’97,pages 77–88,August 1997.),加快遮挡判断的速度。尔后,显卡也为用户提供了进行遮挡查询的接口(API),判断一个物体是否被遮挡变得非常简单,不需要动手编写程序建立buffer,只需要通过API发送查询的命令即可。Coherent hierarchical culling(Bittner,J.,M.Wimmer,H.Piringer,andW.Purgathofer.2004."Coherent Hierarchical Culling:Hardware Occlusion QueriesMade Useful."Computer Graphics Forum(Proceedings of Eurographics 2004)23(3),pp.615–624.)和near optimal hierarchical culling(Michael Guthe,Balázs,andReinhard Klein.Near Optimal Hierarchical Culling:Performance Driven Use ofHardware Occlusion Queries.In proceedings of Eurographics Symposium onRendering 2006,The Eurographics Association,June 2006)两篇文献讨论了如何有效的利用这一接口,加快可见性剔除(visibility culling)速度。
除此之外,FastV:From-point Visibility Culling on Complex Models(A.Chandak,L.Antani,M.Taylor,and D.Manocha.Fastv:From-point visibilityculling on complex models.Eurographics Symposium on Rendering,2009.)提出一种较新颖的方法。它将空间切分成小块的观察视域体(view frustum),然后为每块空间找到最近的遮挡面片,接着进行遮挡融合(occlusion fusion),该方法可并行度高。
From-point类的场景可见性计算算法按照前述可见性结果为依据分为三类,激进策略aggressive、保守策略conservative和准确exact的算法。激进Aggressive的算法得到的PVS是EVS(exact visible set)的子集,会造成一定的误差,因此在误差比较小或者对于图像质量要求不高的情况下该算法适用。
关于conservative算法,在A Survey of Visibility for WalkthroughApplications(D.Cohen-Or,Y.Chrysanthou,and C.Silva.A survey of visibility forwalkthrough applications.SIGGRAPH Course Notes#30,2001.)中论述了利用occlusionfusion实现的算法,或者利用extended projection,即扩大物体的投影面积进行裁剪而实现的算法,还有利用虚拟遮挡物(virtual occluder,对于某个view cell中的任何一点,该物体都被完全遮挡,因此可以利用它作为遮挡物)进行裁剪的方法。
Exact算法是指通过算法直接得到最精确的可见物体的集合,这个问题处理起来极为复杂,理论上的精确可见性采用aspect graph理论和方法,其计算复杂度最坏情况为O(n9),其中n为三维场景中面片的复杂度,这几乎是不可能实现的任务。因此Exact类算法只具有理论分析意义,而不具备任何实用价值。
from-region类可见性方法对三维场景最具有实用价值。该方法有一个重要问题需要解决,即观察空间单元(view cell)所对应三维空间中区域的切分问题。一般方法均采用均匀切分的办法,但是在(MATTAUSCH,O.,BITTNER,J.,AND WIMMER,M.2006.Adaptivevisibility-driven view cell construction.In Rendering Techniques’06,195–206.)中提出了另外一种方法,先粗略估计三维场景中物体的分布,然后根据场景中物体可见密度来进行view cell的切分。
该方法另外一个重要的问题就是在观察空间单元所在区域内发射射线进行采样的方法。首先,空间会被切分成许多观察单元(view cell),然后,在观察单元中找到足够多的采样点,从每个采样点发射一条射线到整个场景中,每条射线则对应于与它相交的最近的物体。最终,将所有射线所对应的物体合起来得到的物体集合就是希望求解的PVS。Adaptive Border sampling(Peter Wonka,Michael Wimmer,Kaichi Zhou,StefanMaierhofer,Gerd Hesina,Alexander Reshetov,Guided visibility sampling,ACMTransactions on Graphics(TOG),v.25n.3,July 2006)和Adaptive global visibilitysampling(Bittner J.,Mattausch O.,Wonka P.,Havran V.,Wimmer M.:Adaptive globalvisibility sampling.In Proceedings of ACM SIGGRAPH 2009(New Orleans,LA,USA,August 2009).)等论文中都提出了非常详细的采样策略,以获取更合适的采样射线,从而获得更加精确地可见物体集合。
综上所述,from-point和from-region这两类算法都可以求解可见性(visibility)问题的策略,但是,两种方法的区别很大,各自的适用范围以及优劣都有所区别。from-point的方法得到的结果往往是精确的,也比较灵活,但是该类型方法往往只能适合于处理较小规模场景和较少数量的三维模型图元(含几何信息以及纹理材质信息等),当面对大规模场景以及千万以上数量级(如面片数)的模型进行绘制时,该类型方法进行可见性处理将会占用较长的时间,影响在线绘制的速度,使得模型或者场景难以达到实时绘制的要求;from-region类型的方法可能无法得到最精确的结果,适用于对于误差有一定容忍度的情况,并且也不适用于动态三维环境,但是from-region的可见性整个计算过程由于属于预处理过程并可以在离线中完成,因此可以大大地节省在线绘制时所消耗的时间。同时,由于可以在离线预处理中提前生成可见性信息,所以能够处理的场景和模型的规模以及数量都是几乎没有限制的,可以处理非常大规模的场景和数据。
但是以往的from-region方法在进行预处理时所进行剖分的可见性基本单元(view cell)往往是规则的,而与三维场景内容所占据的三维空间没有任何关联,由此也会破坏三维空间的连通性完整性等,也就是一个view cell内包含的并不一定是一个完整的具有相同属性信息的空间或者三维几何的组合,这样往往会形成与一个view cell对应的可见性信息(保存在PVS中)的支离破碎和冗余。针对该问题,本发明提出一种大规模三维场景的可见性生成方法。
此外,为了克服from-region类方法生成的可见性不够精确的问题,本发明还设计了可见性信息补充完善的方法,通过预计算生成的查询潜在可见集合(Query PotentialVisible Set,QPVS)作为可见性信息补充完善的候选,在在线漫游绘制阶段进行在线可见性判断,并把确定可见的信息补充到PVS中,从而提高了PVS可见性信息的精度和准确性。
发明内容
本发明针对大规模三维场景尤其是城市建筑场景,提出一种大规模三维场景的可见性生成方法。三维场景往往指由多个物体构成的占据一定三维空间的数据集合,每个物体由一个或者多个三维模型表示。而大规模三维场景往往包含物体(模型)数目巨大,占据的三维空间的尺度范围大,并且包含海量的数据元素。本发明首先从大规模三维场景的内容出发,分析其所蕴含的三维空间特征,然后据此进行合理的空间剖分并形成view cell以及层次view cell,由此生成该view cell的可见性信息。由于view cell所对应空间剖分的完整性和一致性,该可见性信息冗余小,存储量少。
本方案思路主要由两个部分组成,预处理可见性计算以及实时在线绘制的可见性信息使用与动态完善的过程。预处理过程中,首先对三维场景采用k-means聚类的方法进行准确的三维场景层次树结构,并基于采样的方法计算出每个view cell的PVS;实时绘制的时候,利用GPU硬件提供的遮挡查询命令查询一些不确定是否可见的物体的状态,如果可见,则添加到对应view cell的PVS中,从而动态修补和完善PVS。
与现有技术相比,本发明的积极效果在于:
我们采用基于k-means聚类的方法对三维场景所占据空间进行层次的划分,该划分能够准确反映出组成三维场景的各个三维物体之间的结构和组合关系,由该空间划分所表示的观察单元(view cell)可以形成该单元之内较为统一的潜在可见集合PVS,利用该划分的空间进行采样(sampling)可以提高PVS的精确程度,在实时绘制的过程中,利用硬件的遮挡查询命令动态修补PVS,使得PVS的精确度进一步提高。
附图说明
图1为本发明可见性生成系统完整流程图;
图2为基于层次k-means聚类的三维空间层次view cell构造流程图;
图3为层次k-means聚类示意图;
图4为原始三维城市场景图
(a)顶视图,(b)斜视图;
图5为初始聚类之后的场景分割示意图(k=3),以粗线条表示分割边界;
图6为经过二次聚类所形成场景分割图(k=3),以虚线表示分割边界;
图7为经过三次聚类所形成场景分割图(k=3),以细线条表示分割边界。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
一、预处理过程,预处理部分也分为两个部分。
第一部分预处理:就是分别执行构建三维场景层次包围盒、构建三维空间层次view cell、生成三维空间大量随机采样射线三个重要的步骤,为后续的可见性生成做准备。
第1,构建整个三维场景的层次包围盒结构(Bounding Volume Hierarchy,BVH),BVH是一层次树结构(用其它类似的树结构,例如kd-tree,二叉树,八叉树都可以),并将BVH的相关信息,包括树的层次,父子结点兄弟结点信息,结点包围盒信息(包括包围盒大小,包围盒原点坐标等),写入存储结构中,以便后面进行查询与射线相交的场景中的模型以及几何面片时读取并使用。为整个模型创建空间结构的目的是希望能够加快后面的搜索速度,即为了快速计算射线与场景中物体进行求交。
第2,对包含该三维场景的三维空间构建一棵层次树,这棵层次树实际上是将三维空间剖分成了若干个互不重叠的小单元,而这样的每个单元就是一个所谓的view cell,为每个view cell求出它对应的PVS。在本过程中,我们提出了基于层次k-means聚类方法进行三维空间中层次view cell的构建,该构建方法使得空间的划分与三维场景的内容密切相关,所划分的三维场景的不同部分具有不同的模型的属性,例如大量密集的三维建筑群会被划分为一个整体,而道路等模型稀疏的部分被划分为一个整体。利用上述方法和规则所获得的空间划分能够获得更加准确的可见性PVS信息,所划分的层次空间节点的数目更少,树的层数(深度)更少。也就是用更合理的(即能够体现三维场景中模型的分布特性的)空间层次划分组织代替传统的与三维场景本身内容无关的空间层次划分组织形式。
1、利用k-means进行三维场景的聚类和剖分的基本原理(实质是对三维场景的聚类获得对应三维空间的剖分)
对于一个表示三维场景的网格或者三角面片的模型取其顶点(或者代表性顶点),用每个顶点的三维坐标构成的向量(x,y,z),或者加上顶点的颜色或者纹理信息形成向量(x,y,z,r,g,b)甚至其它顶点的属性信息(如材质,语义属性等)来表示需要聚类的顶点,得到顶点对应的复合向量。对于这个顶点的向量集合运行k-means聚类,又称k-均值聚类方法,其中k代表希望得到的类别的数目。得到的聚类结果应当是若干个向量的集合,其中每一个向量都属于且仅属于一个集合。这样针对表示每个顶点的向量进行分类,就可以得到顶点的分类信息。因此对于三维空间的点集运行k-means聚类的结果应当是所有的点都被赋予了一个类别,也就是对空间场景进行了划分,而且根据k-means的原理,在空间位置或者色彩纹理或者某些属性更加接近的点,被归为一类的可能性也是越大的。k-means聚类方法的优点在于算法简单、速度快。如果有n个点,k个类,迭代了t次,那么算法的时间复杂度就是O(nkt),时间复杂度趋近于线性,因此对于大样本具有较高的效率。
2、k-means聚类方法流程
1)随机指定k个顶点,该顶点的含义既可以指三维场景中的一个物体(使用其几何中心坐标),或者一块网格(使用其几何中心坐标),也可以指单个三角面片,取其中某个顶点(或者代表性顶点或者其几何重心坐标),用所选每一顶点的三维坐标构成的向量(x,y,z),还可以附加加上顶点的颜色或者纹理信息(r,g,b)(如果顶点本身是一个物体或者一块网格,则可以使用该其的颜色或纹理的均值,或者使用其代表性颜色或纹理),此外还可以对每个顶点附加其它辅助属信息如材质等等,以此k个顶点作为k个类的初始的中心点;
2)计算每个顶点到k个初始中心点的矢量距离,离哪个中心点距离最近就认为这个顶点属于哪一类。具体的计算并非完全依赖于三维空间的欧式距离,还可以附加色彩空间中的距离,以及附加属性空间中的向量距离,这些距离可以通过加权的方式综合起来作为一个统一的度量。
3)计算每一类中所有点的均值,作为该类的新的中心点;
4)得到了新的中心点,跳转到(2)。算法的终止条件是新的中心点集合和老的中心点集合的距离小于设定阈值(阈值需要自己手动设置)或者迭代的次数大于了设定上限。每一聚类结果对应一个子空间,最终将三维空间聚类为k个子空间。
3、基于三维场景的聚类得到场景的层次树结构
在步骤2(k-means聚类方法流程)中已经形成的聚类所对应的空间剖分基础之上,对其每一个子空间再次使用k-means聚类方法进行子空间内模型或者面片的聚类,对应形成三维空间的子剖分,即view cell单元。层次k-means的算法流程如下:
1)在输入的顶点集合上运行k-means聚类方法。
2)对于得到的每一类点集上继续重复上述聚类及剖分过程直到到达指定的空间剖分精度或者指定的层数,从而获得足够的类别数目。通过层次k-means聚类的方法,当k很大时聚类的速度可以大幅度提高并且避免了不必要的计算。图3是层次k-means方法的一个示意图,在图中k=3。
最终,根据得到的三维空间的多层次单元view cell的逻辑关系得到该三维空间的层次树。
通过上述聚类及对应空间剖分方法的运行,如果我们将k-means聚类的k值也就是类别的数目设的比较小,那么得到的结果可能是代表一个楼群或者几栋相邻楼房的点云被分为了一类。在这一类中对所有点继续运行k-means聚类,可能得到的结果就是每一栋楼的点被分为了一类。这实际上就是空间的树形层次结构,每个父节点的所有子节点对于父节点所表示的点云进行了进一步的细分,得到了更加精细的结构。在这样的层次树结构当中,离根节点越远,深度越深的类别所包含的点的个数越少,代表的结构面积或者体积也越小。
第3,利用合理的空间采样(sampling)策略,生成大量的三维空间中的采样射线。进行采样时候,所采用的取样策略是随机采样,也就是在空间中均匀分布的顶点,然后在每个点随机的生成方向,从而得到随机的射线。该采样射线生成方法参考文献(Bittner J.,Mattausch O.,Wonka P.,Havran V.,Wimmer M.:Adaptive global visibilitysampling.In Proceedings of ACM SIGGRAPH 2009(New Orleans,LA,USA,August2009).)。
第二部分的预处理:就是为每个view cell生成它对应的PVS,从而达到生成可见性信息的目的。步骤如下:
第一步,将每条采样射线逐一地在BVH中搜索,找到在整个场景中距离射线起始点最近的相交物体。这个过程其实类似于基于BVH的光线跟踪(ray tracing),过程描述如下:射线自顶向下、逐层的与BVH的包围盒求交,如果与某一层的结点包围盒是相交的,则接着向下,与该层结点的子结点的包围盒求交,直到叶节点为止。
如果射线与某叶结点相交,则将射线与该叶节点所包含物体的每个三角面片求交。只要它与其中任何一个三角面片相交,则射线是真正与该物体相交的,此时,更新当前的最短距离。将最短的距离记录下来的同时,把该最短距离所对应的物体记录下来。最终,遍历完整个BVH后,得到与采样每条射线相交的最近物体及其最近距离。
第二步,将每条采样射线逐一地在层次树(即层次view cell空间)中搜索,找到所有与当前射线相交的view cell,进而,将上一步中计算所得的与当前射线相交的物体(可能存在0/1/2个)加入到当前view cell的PVS中。也就是说,从该view cell中一定能看到与该射线相交的最近的物体。
基于层次树的光线跟踪采样的基本思路如下:
(1)先用整个层次树所对应的三维空间包围盒更新每一射线的最近距离和最远距离;
(2)求出射线和当前view cell所对应的结点的切分面的距离,如果这个距离小于最近距离或者大于最远距离,说明射线只与当前结点的一部分相交,就可以裁掉一个子结点。如果这个距离刚好在二者之间,说明射线与结点的两个子结点都是相交的。
第三步,对于每个view cell所计算出的PVS中的每一个物体T,将物体T三维空间中相邻某一个设定距离内的所有物体T’找出来,如果物体T’并不在当前view cell的PVS中,则将其加入另一个命名为QPVS(Query Potential Visible Set)的集合中,一个viewcell仅对应生成唯一QPVS,但是一个QPVS中可能有多个物体。由于随机采样的策略所采样的结果毕竟有限,所以很有可能某些实际可见的物体没有能够采样到从而被遗漏掉,所以这个QPVS中的物体就是预测的有很大可能是属于该view cell的exact visible set里的物体。于是将QPVS作为能够补齐PVS的候选物体的集合,在线浏览或者漫游时通过实时遮挡查询确定在候选集合中的这些物体的真正可见性。
如何选择合适的物体加入QPVS中作为候选,我们采用下述的策略。对于某个viewcell的PVS中的每一个物体T,根据view cell和物体T周围采样射线的数目情况,计算出一个适当的距离阈值d。接着,判断场景中的所有物体,与这个物体T的距离小于d的其他物体如果不在当前view cell的PVS中就将其加入QPVS,作为后续遮挡查询的候选。该方法的合理处理策略如下:当一个物体周围采样数目比较大的时候,错过了可见物体的可能性会比较小,这个时候,就确定一个较小的距离d,只有比较少的物体会添加到QPVS中进行后续过程中的额外查询;但是如果采样数目比较小的话,则要确定一个比较大的d,就可以添加较多的物体到QPVS中。如此就可以保证错过的物体会比较少,而QPVS中的物体实际是可见物体的可能性也比较大。
第四步,在所有射线都已经与BVH及层次树执行完遍历,并且其相关信息与对应view cell整合好以后,将view cell的所有可见性信息(即PVS,QPVS)写入外存储结构中。
以上就是整个预处理过程,它得到了以层次树为形式存储的view cell的信息以及每个view cell所对应的PVS以及QPVS。这些信息将在实时绘制中被用到。上述可见性信息的构建过程中,BVH的构建复杂度为O(nlog(n)),层次树的构建复杂度也是O(nlog(n)),而BVH和层次树的遍历复杂度皆为O(log(n))。
二、实时在线绘制时可见性信息的使用和更新
在进行完预处理的过程以后,接下来是三维场景的漫游及其对应实时绘制。三维场景的漫游的过程描述如下:
首先,加载三维空间层次树的所有view cell和层次view cell的信息。view cell的信息被作为一棵层次树来组织,包含view cell的包围盒边界。
第二步,确定当前视点的位置,找到当前视点所在view cell,该步骤可以通过在层次树的每个层次使用视点位置与切分平面比较其所处半空间即可。
第三步:根据当前视点所在view cell(实质是自根结点至叶结点的一系列结点及其对应的view cell),加载所有view cell所对应的PVS和QPVS。
第四步,将该叶结点对应的即最精细的view cell的PVS和QPVS中的物体分别放入不同的队列,即将PVS放入内存队列Q1,将QPVS放入内存队列Q2。先对Q1和Q2中的物体分别进行视域体裁剪(view frustum culling),如果物体在视域体(view frustum)之外,则将该物体从Q1和Q2中分别删除;针对Q1和Q2中剩余的物体,按照距离视点的远近分别排序得到优先级队列Q1和Q2,这两个优先队列都保证距离视点最近的物体放在最前端。
第五步,构建好优先队列以后,按照先处理PVS信息后处理QPVS的顺序对这两个优先级队列进行处理。先将Q1中的物体依次取出,设取出的物体为T,T是明确可见的,则直接取得T的网格或者面片信息,发送给显卡进行绘制;然后处理Q2中所包含的物体,按照优先级顺序依次取出的物体为T,则发送遮挡查询命令(一般通过硬件遮挡查询方式实现),在Q1队列绘制结果的基础上对该物体T的包围盒进行遮挡查询,查询比较的对象就是绘制Q1中物体所形成的遮挡缓冲。为了进一步加快速度,可以在Q1队列中物体进行绘制的同时可进行Q2中物体的遮挡查询,而不需要每次发送完查询命令后等待查询结果,也就是无需等待而继续处理后面的物体。而在每次处理一个新物体之前,先查看是否有查询结果返回,如果Q2中的某个物体的返回结果为该物体可见,则将该物体的从Q2对应的QPVS中删除,加入到Q1所对应的PVS中。自底向上更新所有层次view cell中的PVS和QPVS信息。同时,将上述信息更新至外存储对应view cell的PVS和QPVS信息。
第六步,继续漫游,视点更新,转至第二步,循环第二至第六步的过程。通过对整个三维场景进行连续不断地漫游(上述步骤中的第二步至第五步皆发生在场景漫游阶段),同时在view cell中反复进行QPVS查询,相应地更新PVS,便可以得到一个非常接近于EVS(exact visible set)的PVS。当PVS在相当长一段时间之内不再进行更新,说明PVS已经非常接近EVS,当前算法和漫游过程结束。

Claims (9)

1.一种大规模三维场景的可见性生成方法,其步骤为:
1)构建待处理三维场景的层次包围盒结构,并将该层次包围盒结构信息存入存储结构中;
2)将包含该三维场景的三维空间逐层剖分成若干互不重叠的单元view cell,得到该三维空间的层次树;
3)在该三维空间中生成采样点,并为每一采样点生成采样射线;然后根据采样射线计算出每个单元view cell对应的潜在可见集合PVS和候选潜在可见集合QPVS;
4)加载每个单元view cell信息,开始进行三维场景的漫游;
5)在三维场景漫游过程中,首先确定当前视点的位置,根据层次树找到当前视点所在单元view cell;然后将该单元view cell的潜在可见集合PVS和候选潜在可见集合QPVS中的物体先进行视域体裁剪,将PVS中通过视域体裁剪的物体按照距离视点的远近进行排列得到一个优先队列,将QPVS中通过视域体裁剪的物体按照距离视点的远近得到另一个优先队列;
6)构建好两个优先队列以后,先对与PVS对应的队列中的物体按顺序绘制,然后对另一个队列中的物体的进行可见性判断,得到其可见性信息并相应地更新两个队列;
7)自底向上更新三维空间层次树中所有层次view cell的PVS和QPVS信息,直到漫游过程结束。
2.如权利要求1所述的方法,其特征在于,将该三维场景的三维空间逐层剖分成若干个互不重叠的单元view cell的方法为:首先采用k-means聚类方法对该三维场景内的顶点进行聚类,聚类的结果对应得到该三维空间剖分成的多个子空间;然后对每一子空间采用k-means聚类方法再次进行聚类并得到相应的子空间剖分,重复上述聚类及剖分过程直到到达设定条件,每一个剖分得到的子空间对应一个单元view cell,根据多层次单元viewcell的逻辑关系得到该三维空间的层次树。
3.如权利要求2所述的方法,其特征在于,得到该包含三维场景的三维空间的多个子空间的方法为:
31)随机选取该三维场景中的k个顶点作为k个类的初始中心点;
32)计算该三维场景中每个顶点到k个初始中心点的距离,将其聚类到距离最近的初始中心点对应类中;
33)计算每一类中所有顶点的均值,作为这一类的新的中心点;
34)得到每一类的新中心点后,重复步骤32)、33),直到满足设定条件,最终每一聚类结果对应该三维空间中的一个子空间,最终将三维场景聚类并剖分三维空间为多个子 空间。
4.如权利要求3所述的方法,其特征在于,所述顶点为三维场景中的一个物体、或者一块网格、或者单个三角面片;所述顶点信息中还包括顶点的颜色信息、纹理信息或者材质信息。
5.如权利要求4所述的方法,其特征在于,每一顶点的所有信息构成一个复合向量,两个顶点之间的矢量距离为三维空间的欧式距离或色彩空间中的距离或者纹理信息的距离或者材质信息的距离或者上述距离的按照不同权重综合。
6.如权利要求1或2或3所述的方法,其特征在于,计算所述潜在可见集合PVS的方法为:对于每一条采样射线,将该射线逐一地在三维场景层次包围盒结构中搜索,找到在该三维场景中距离该射线起始点最近的相交物体;然后将该射线在三维空间层次树中搜索,找到所有与该射线相交的所有单元view cell,从而将所有与该射线相交的物体加入到与该射线相交的所有单元view cell的潜在可见集合PVS中。
7.如权利要求6所述的方法,其特征在于,找到在该三维场景中距离该射线起始点最近的相交物体的方法为:将射线自顶向下、逐层的与层次包围盒结构的包围盒求交,如果与某一层的结点包围盒是相交的,则接着向下,与该层结点的子结点的包围盒求交,直到叶节点为止;如果射线与某叶结点相交,则将射线与该叶节点所包含物体的每个三角面片求交,只要该射线与其中任何一个三角面片相交,则确定该射线与该物体相交并更新当前的最短距离;遍历完整个层次包围盒结构后,得到与该射线相交最近的物体以及最近的距离。
8.如权利要求1所述的方法,其特征在于,对PVS队列、QPVS队列中的物体进行可见性判断和绘制的方法为:设取出的物体为T,如果物体T是PVS队列中的物体,则直接取得物体T的网格或面片信息,发送给显卡进行绘制;如果物体T是QPVS队列中的物体,则发送查询命令,对物体T的包围盒进行遮挡查询,如果查询结果为该物体T可见,则将该物体T的从QPVS队列中删除并加入到PVS队列中。
9.如权利要求1所述的方法,其特征在于,计算所述候选潜在可见集合QPVS的方法为:首先根据单元view cell与该单元view cell的潜在可见集合PVS中每一物体T周围采样射线的数目确定一设定距离d,然后查找该三维场景中与该物体T的距离小于该设定距离d的物体,如果该物体不在该单元view cell的潜在可见集合PVS中,则将该物体加入单元viewcell的候选潜在可见集合QPVS。
CN201510740102.1A 2015-11-03 2015-11-03 一种大规模三维场景的可见性生成方法 Active CN105389850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510740102.1A CN105389850B (zh) 2015-11-03 2015-11-03 一种大规模三维场景的可见性生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510740102.1A CN105389850B (zh) 2015-11-03 2015-11-03 一种大规模三维场景的可见性生成方法

Publications (2)

Publication Number Publication Date
CN105389850A CN105389850A (zh) 2016-03-09
CN105389850B true CN105389850B (zh) 2018-05-01

Family

ID=55422098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510740102.1A Active CN105389850B (zh) 2015-11-03 2015-11-03 一种大规模三维场景的可见性生成方法

Country Status (1)

Country Link
CN (1) CN105389850B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105844698B (zh) * 2016-03-15 2018-08-17 北京大学(天津滨海)新一代信息技术研究院 一种基于自然交互的物理仿真方法
CN106355644A (zh) * 2016-08-31 2017-01-25 北京像素软件科技股份有限公司 三维电子游戏画面中的物体模型剔除方法及装置
CN106844610B (zh) * 2017-01-18 2020-03-24 上海交通大学 一种分布式结构化三维点云图像处理方法及系统
CN107749078B (zh) * 2017-11-22 2020-10-27 长春理工大学 超大规模三维场景的直接光照效果绘制方法
CN108257103B (zh) * 2018-01-25 2020-08-25 网易(杭州)网络有限公司 游戏场景的遮挡剔除方法、装置、处理器及终端
CN109410333B (zh) * 2018-09-19 2023-01-17 北京大学 一种高质量超面片聚类生成方法
CN109598424A (zh) * 2018-11-21 2019-04-09 山东交通学院 一种用于游艇舱室内装场景的方案评估方法及其系统
EP3712802A1 (en) * 2019-03-19 2020-09-23 Robert Bosch GmbH Method for representing an environment of a mobile platform
CN111045664B (zh) * 2019-11-21 2021-03-09 珠海剑心互动娱乐有限公司 一种获取场景物件视觉参数的方法及系统
CN114494550B (zh) * 2021-12-30 2022-11-22 北京城市网邻信息技术有限公司 基于WebGPU的渲染方法、电子设备及存储介质
CN114708140B (zh) * 2022-06-07 2022-09-13 中国电建集团华东勘测设计研究院有限公司 一种基于单元的数值计算模型实时交互剖切可视化方法
CN115205454B (zh) * 2022-06-23 2023-09-26 南京捷希科技有限公司 适用于射线追踪无线信道建模的空间分割加速方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1439493A2 (en) * 2003-01-17 2004-07-21 Hybrid Graphics Oy Occlusion culling method
CN101145345A (zh) * 2006-09-13 2008-03-19 华为技术有限公司 音频分类方法
CN101369345A (zh) * 2008-09-08 2009-02-18 北京航空航天大学 一种基于绘制状态的多属性对象绘制顺序优化方法
CN104599243A (zh) * 2014-12-11 2015-05-06 北京航空航天大学 一种多视频流与三维场景的虚实融合方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1439493A2 (en) * 2003-01-17 2004-07-21 Hybrid Graphics Oy Occlusion culling method
CN101145345A (zh) * 2006-09-13 2008-03-19 华为技术有限公司 音频分类方法
CN101369345A (zh) * 2008-09-08 2009-02-18 北京航空航天大学 一种基于绘制状态的多属性对象绘制顺序优化方法
CN104599243A (zh) * 2014-12-11 2015-05-06 北京航空航天大学 一种多视频流与三维场景的虚实融合方法

Also Published As

Publication number Publication date
CN105389850A (zh) 2016-03-09

Similar Documents

Publication Publication Date Title
CN105389850B (zh) 一种大规模三维场景的可见性生成方法
CN105378796B (zh) 可伸缩体积3d重构
CN110443893B (zh) 大规模建筑场景渲染加速方法、系统、装置和存储介质
Sillion et al. Efficient impostor manipulation for real‐time visualization of urban scenery
Bauchet et al. Kinetic shape reconstruction
US7561156B2 (en) Adaptive quadtree-based scalable surface rendering
CN101241603B (zh) 一种电磁场强度实时可视化方法
US7990380B2 (en) Diffuse photon map decomposition for parallelization of global illumination algorithm
CN101944239A (zh) 三维模型分割方法、装置以及包含该装置的图像处理系统
CN104504760B (zh) 实时更新三维图像的方法和系统
CN114386293B (zh) 一种虚实合成的激光雷达点云生成方法和装置
Chao et al. Improved hybrid bounding box collision detection algorithm
Jin et al. IMC-NET: Learning Implicit Field with Corner Attention Network for 3D Shape Reconstruction
Rosenberg et al. Real-time particle isosurface extraction
Li et al. Feature-based visibility-driven CLOD for terrain
Dey et al. Procedural feature generation for volumetric terrains using voxel grammars
Hu et al. Parallel BVH construction using locally density clustering
Luo et al. Quad-tree atlas ray casting: a gpu based framework for terrain visualization and its applications
JP2021033682A (ja) 画像処理装置、方法及びプログラム
Su et al. View frustum culling algorithm based on optimized scene management structure
Germs et al. Geometric simplification for efficient occlusion culling in urban scenes
de Carvalho Jr et al. An improved view frustum culling method using octrees for 3D real-time rendering
CN106548505A (zh) 用于三维射线跟踪的场景模型快速三角化方法
Zhu et al. A novel method for cloth-body collision detection
Mattausch et al. Adaptive Visibility-Driven View Cell Construction.

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