CN109712242A - 一种支持大规模三维场景虚拟漫游的模型数据组织方法 - Google Patents
一种支持大规模三维场景虚拟漫游的模型数据组织方法 Download PDFInfo
- Publication number
- CN109712242A CN109712242A CN201811545152.4A CN201811545152A CN109712242A CN 109712242 A CN109712242 A CN 109712242A CN 201811545152 A CN201811545152 A CN 201811545152A CN 109712242 A CN109712242 A CN 109712242A
- Authority
- CN
- China
- Prior art keywords
- node
- triangle
- model
- network
- point
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种支持大规模三维场景虚拟漫游的模型数据组织方法,通过以街区建筑群为节点,以三角形网的方法把节点连接起来,从而实现模型的LOD显示和由近及远的渐进下载和动态加载;节点的高级LOD可以用三角形子网代替;通过三角形网格的嵌套,可使复杂多样的物体模型得到灵活管理。方法还包含了基于六相邻顶点的三角形网构造方法、动态加载的内存管理策略、渐进下载的带宽管理策略。本发明基于三角形网的方法能有效实现大规模三维场景的渐进下载、动态加载和显示管理,并比传统的方法有更加良好的性能。
Description
技术领域
本发明涉及虚拟现实实时渲染三维应用领域,更具体地,涉及一种支持大规模三维场景虚拟漫游的模型数据组织方法。
背景技术
随着虚拟现实、GIS、计算机游戏等技术的发展,三维图形实时渲染技术目前已应用游戏娱乐、教育、医疗、城市规划、展会宣传等多个领域。三维图形实时渲染研究领域中,其中一个方向是研究如何支持超大场景,或者说海量数据场景的实时渲染。很多应用,例如数字城市,有需要进行城市级别的实时漫游。但目前多数的三维场景实时应用和软件平台都还不支持超大场景,原因是实时三维场景的运行要受到用户计算机的CPU和内存限制。三维场景太大、面数太多,内存会装不下,实时渲染的计算量也会超过CPU的负荷,导致场景不能流畅渲染,甚至不能加载。然而像数字城市、大地形GIS这样的海量数据场景却是现代信息系统发展的趋势。
另一方面,把虚拟现实应用发布在互联网上(称为Web3D应用),也是时代发展的趋势。在数字城市、娱乐游戏、展会宣传、GIS、旅游等领域都有着大量的需求。目前Web3D应用的场景只能做得很小。普通用户的电脑虽能跑起几百兆的中型场景,而下载这样的场景却需要等待相当长时间,用户无法忍受。即除了CPU和内存,场景的运行还受到网络带宽的限制。当今视频流媒体技术已经得到长足发展,一部电影,我们可以只等待一分钟,在电影只下载了前面一点点的时候,我们就可以开始看了,而不是等待整部电影下载完才能看。我们常常期望:要是虚拟现实Web3D场景也可以这样就好了,让用户只等待一点点时间,先下载完用户视点周围的景物,先运行起场景,然后其他景物可以在用户一边漫游时一边下载。这种技术称为“三维图形数据流式渐进传输”,或者可更形象地称为“图形流媒体”,是非常值得研究的技术。
虚拟现实应用之所以不能运行太大场景,是因为存在CPU和内存的瓶颈。一个场景中如果面数太多,实时渲染的计算量就会很大,CPU就算不过来了。为了克服CPU的瓶颈,很早就有了LOD(Level Of Detail)和纹理Mipmap的技术。这些技术能有效缓解CPU的运算量。
但是这些方法无法克服内存瓶颈的限制。虽然目前的计算机内存量比十年前翻了好多倍,然而内存也不是可以无限增加。目前,高端的家用电脑内存可以达到8G,高端的工作站可以上到几十G,但这样对于数字城市动则以T来计算的数据量还是远远不够的。更不要说把这些数据放到网上。为了一并克服内存的瓶颈限制,Li Xuelong提出一种分页LOD(Paged LOD)的方法。这种方法可以使三维数据可以分批驻留内存,在需要时加载,不需要时卸载,从而使得三维场景可以不受内存限制。这种方法是一种好的思路,但除了把模型的各级LOD分开储存,更重要的还要解决数据如何组织的问题,否则当场景特别大时,大量的时间会被浪费在LOD文件查找上。对于地形数据,Cline和Egbert提出了一种四叉树的算法,这是一种巧妙的算法,它用一种嵌套的和自适应的网格来控制地形的细节显示。这种方法比传统LOD方法更加自动化,建模更加方便,再配以动态加载的方法,可以克服内存的瓶颈。之后大量学者深入研究和应用了四叉树的方法,解决了大地形显示和渐进传输的问题。Google Earth的出现标志着这种方法取得了巨大的成功。四叉树方法为针对地形而研制的,其应用条件为:形体必须是连续整片的四边形面壳。地形以外的模型,例如建筑物、汽车、动植物等,多数并不符合这样的要求。
对于Web3D的大场景应用,除了要克服CPU和内存的限制,还要考虑网络带宽的限制。为此,学者们提出了渐进网格(Progressive mesh)流式编码技术。它能把物体的密集网格表示为一种高效无损且具有连续分辨率的流编码。渐进网格把物体网格分为表示最低分辨率的“基网格流”(Based mesh)和“网格增量流”(Record),物体模型的分辨率随着“网格增量”数目的增加而逐渐提高。这种方法实现了网格模型物体(如三维扫描的文物)的流式渐进传输。不过这种方法也有缺点:一是这种方法解决了由粗到精的渐进传输,却未解决由近及远的渐进传输。二是这种方法不适用于非网格模型。而事实上,在数字城市、娱乐游戏等应用中,更多的是形体组合模型而非网格模型。这里说的“网格模型”是指由大量行列点集组成单个物体的模型。一般来说,由计算机自动建模得到模型,如DEM地形、三维扫描物件,通常是网格模型。而“形体组合模型”是指那些不由行列点集组成,而是由很多基本体(如长方体、椎体、棱柱、圆柱、圆球等等)组合而成的模型。一般来说,人力所建的,如建筑物、交通工具、家具小品等,多数是形体组合模型。
综上所述,前人做了大量相关的工作,其中四叉树和渐进网格的方法在大规模地形场景上取得了成功,但在大规模的形体组合模型(如建筑模型)上仍不能很好地工作。
发明内容
本发明为克服上述现有技术中景物显示受形体限制,渐进传输无法实现由近及远且不适用于非网格模型的问题,提供一种支持大规模三维场景虚拟漫游的模型数据组织方法。
本发明旨在至少在一定程度上解决上述技术问题。
为解决上述技术问题,本发明的技术方案如下:
一种支持大规模三维场景虚拟漫游的模型数据组织方法,所述方法包括如下步骤:
S1:根据三维场景的平面地图,将整个场景区域按街区划分为若干个子区域,将一个子区域内的建筑群作为节点,把所有节点连结成一个三角形网,每一个节点对应一组LOD模型,包括高精度、中等精度和低精度模型。其中高精度LOD可展开成下一层三角形网,一个子区域内除地形以外的所有物体均创建在同一个LOD模型内,当一个子区域面积超过设定值,使用嵌套的三角形网代替当前子区域节点的高精度模型,嵌套的三角形网子网格中节点对应多级精度的LOD模型文件,当计算机需要加载或显示总网中有嵌套三角形网格的节点高精度模型的时,对该子网格进行加载或显示处理,嵌套的三角形网子网格根据需要继续嵌套下一层三角形网子网格,将超大场景的细节信息包含在嵌套的多级三角形网;
S2:将步骤S1所述节点的信息记录在XML文件中,所述XML文件包含有:
<Terrain>项表示地形信息,用于指定一个记录了地形信息的文件;
<TriNet>项表示三角形网;
<Node>项表示节点;
<InOutDoor>项为场景标识,用于标记节点是室内还是室外场景;
<RefPnt>为模型参考点;
<ExRexL>和<ExRexW>为节点模型外接矩形长和宽;
<LOD1>、<LOD2>和<LOD3>分别为低级精度、中等精度和高级精度的LOD,<FileName>为每级LOD的模型文件;
<LoadDis>、<UnLoadDis>、<DisplayDisFar>和<DisplayDisNear>是LOD加载参数、卸载参数和显示的距离远参数和显示距离近参数;
S3:根据步骤S1得到的场景区域三角形网和步骤S2的节点信息,对三维场景中元素的各级LOD进行建模并按XML中的文件名保存文件;
S4:将所有LOD模型和XML节点信息文件部署在互联网或局域网的服务器中;
S5:客户端程序访问XML节点信息文件,根据节点信息文件来重构三角形网,三角形网以数据结构图的方式来表示;
S6:利用三角形网,分批渐进下载LOD模型,用户打开场景,根据视点的位置,按照相邻节点分级的方法由近及远下载各个节点的LOD模型,当已下载的LOD模型达到设定数量时,程序启动漫游,在漫游过程中,程序定时检察视点当前位置,利用三角形网由近及远查找未下载模型,添加到下载任务列表中;处理程序采用三线程结构:绘制线程、加载卸载线程、下载线程,从离视点最近的节点开始,按照由近及远的顺序来绘制处理,当处理程序开始绘制一个节点的模型时,首先检查模型是否已下载和加载,如果已完成下载和加载则进行绘制渲染,如未完成则通知下载线程下载或加载线程加载,绘制线程不等待,程序处理从当前视点开始进行搜索检查,遇到设定条件终止检查;
S7:处理程序下载的LOD模型数量达到设定数量,程序开始渲染显示;
S8:完成步骤S7后,三维场景完成一帧显示,用户继续操作漫游,处理程序跳转回步骤S6进行下载调度,若所有模型已下载完毕,则程序跳过步骤S6,继续步骤S7,重复步骤S6-S8,实现互动的实时漫游。
进一步地,步骤S5的三角形网的重构具体步骤如下:
第一步:对未加入三角形网的节点,比较节点参考点与视点的距离,取得离视点最近的一个节点N;若三角网开始构造,则取离视点最近的节点加入三角形网成为第一个节点;
第二步:对三角形网的所有边缘点进行计算比较,找到离节点N最近的一个边缘节点E,E点的两个相邻的边缘点,记为E1、E2,比较两个相邻边缘点与N点形成的角度,取角度大的那个相邻点连线构成一个新三角形,即比较∠ENE1与∠ENE2,取大的一个角连线构成新的三角形,三角形网扩展了一个新节点;
第三步:N点新连入三角网后,若N点任一相邻节点的边的数量达到6,则进行如下操作:检查该相邻节点的6个相邻点,这6个节点有4个节点是与6个节点中的2个节点相邻,其中2个节点只与6个节点中的1个节点相邻;这2个节点其中一个为新加入的N点,搜索找到另一个节点,找到的这个节点与N点连一条边。
进一步地,步骤S6所述中止条件包括:
(1)所有的节点都已被遍历完毕;
(2)新扩展查找的更远一级的相邻节点中,所有节点都在最低精度LOD的卸载条件距离之外,
如果场景小设定尺寸,检查过程常常终止于条件(1);若场景大于设定尺寸,则终止于条件(2)。
进一步地,步骤S7显示管理策略包括:
按照视点高度控制远处的模型显示
行人在街道上近处的建筑景物被遮挡,远处的景物看不到,此时被遮挡的远处街区的模型不用显示出来;当视点升到高空,远处的建筑物看得见,远处的景物显示设置以下条件:
其中:
以上各式中,harv是景物显示屏蔽之前各级的建筑物平均绝对高度再乘以一个系数C2,系数C2可取小于1的数;
式(1)-(2)为屏蔽显示街区建筑物的条件,即当任一节点,同时符合以上三式时,该节点的模型暂不参与渲染显示;式(1)中,i表示向外扩展查找相邻节点的级数序号,C1为常数,表示当查找级数大于C1级的时候,程序开始对节点执行显示屏蔽;C1取4到7之间的值效果最佳;
式(2)表示考虑屏蔽的建筑景物小于设定高度,hobj为正在检查的街区景物最高高度,havr为比视点周围景物的平均高度低的一个高度值,hview为视点高度;
视域范围外部景物的剔除
MNST是视景体的俯视图,M、N为视景体的近面两点,P点为当前视点位置,Q点为节点景物中心位置;当节点的属性满足以下关系式时:
景物剔除,否则显示,其中Q1、Q2表示如下:
以上各式中,运算符×为向量叉乘,==为比较相等,sgn为符号函数,Q点为节点的参考点;式(4)的含义是:Q点位于射线PM与射线PN的同一侧;若景物出现在P点的视域范围之内,射线PQ在射线PM与PN之间,即在PM与射线PN的异侧,此时PQ和PM的向量积与PQ与PN的向量积为异号,如果视点在P点的视域之外,则PQ和PM的向量积与PQ与PN的向量积为同号;
当节点参考点Q在视域之外,无法保证该节点所有模型形体均在视域之外,根据式(5)(6)做判断,以参考点Q为中心,作一条平行于MN的线段Q1Q2,以节点包络矩形长宽尺寸中大的一个乘以倍作为线段的长度,以保证Q1、Q2点落在包络矩形之外;若定出的Q1、Q2点都在视域之外,则能够保证整个包络矩形之内的物体都在视域之外,在上述剔除控制中,以节点模型的包络矩形长宽已知作为条件,所述包络矩形长宽在保存文件时进行设置或自动计算。
进一步地,所述嵌套三角形网在当街区建筑物众多构成复杂的节点,根据街区内部组成划分子节点,连接子节点组成子三角形网,子三角形网再进行嵌套进而形成多级三角形网嵌套。
进一步地,步骤S5所述,客户端访问取得节点记录文件后,根据步骤S5所述算法构造出三角形网及嵌套子网。
进一步地,步骤S7所述,客户端程序根据视点位置动态加载和卸载已下载模型,实现近处显示高精度模型,远处显示低精度模型或不显示的功能。
与现有技术相比,本发明技术方案的有益效果是:
本发明通过以街区建筑群为节点,以三角形网的方法把节点连接起来,实现模型的LOD显示和由近及远的渐进下载和动态加载,节点的高级LOD可以用三角形子网代替。通过三角形网格的嵌套,可使复杂多样的物体模型得到灵活管理,本发明能有效实现大规模场景的渐进下载、动态加载和显示管理。
附图说明
图1为三角形网及节点结构图。
图2为街区B嵌套的子三角形网图。
图3为三角形网的构建图。
图4为视点低时高建筑物被遮挡示意图。
图5为视点高时低建筑物被遮挡示意图。
图6为景物剔除示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本发明提出一种支持大规模三维场景虚拟漫游的模型数据组织方法,,能够克服CPU、内存瓶颈限制、并能基于Web进行渐进下载的三维模型管理策略。按本发明构造大规模三维场景,依次包含以下步骤:
S1:根据三维场景的平面地图,如图1所示,将整个场景区域按街区划分为若干个子区域,将一个子区域内的建筑群作为节点,深色的节点表示网格的内部节点,浅色的节点表示网格的边缘节点把所有节点连结成一个三角形网,每一个节点对应一组LOD模型,包括高精度、中等精度和低精度模型。其中高精度LOD可展开成下一层三角形网,一个子区域内除地形以外的所有物体均创建在同一个LOD模型内,当一个子区域面积超过设定值,如图2所示使用嵌套的三角形网代替当前子区域节点的高精度模型,嵌套的三角形网子网格中节点对应多级精度的LOD模型文件,当计算机需要加载或显示总网中有嵌套三角形网格的节点高精度模型的时,对该子网格进行加载或显示处理,嵌套的三角形网子网格根据需要继续嵌套下一层三角形网子网格,将超大场景的细节信息包含在嵌套的多级三角形网;
图2的子网格取代了图1节点B的高精度模型。子网格中的节点同样对应多级精度的LOD模型文件。当计算机需要加载或显示节点B的高精度模型的时候,对该子网格进行加载或显示处理,处理方法与前文相同。子网格还可以再继续嵌套下一层子网格(例如有室内场景)。这样,通过多级三角形网嵌套,一个包含海量细节信息的超大场景就被有效管理起来。
S2:将步骤S1所述节点的信息记录在XML文件中,所述XML文件包含有:
<Terrain>项表示地形信息,用于指定一个记录了地形信息的文件;
<TriNet>项表示三角形网;
<Node>项表示节点;
<InOutDoor>项为场景标识,用于标记节点是室内还是室外场景;
<RefPnt>为模型参考点;
<ExRexL>和<ExRexW>为节点模型外接矩形长和宽;
<LOD1>、<LOD2>和<LOD3>分别为低级精度、中等精度和高级精度的LOD,<FileName>为每级LOD的模型文件;
<LoadDis>、<UnLoadDis>、<DisplayDisFar>和<DisplayDisNear>是LOD加载参数、卸载参数和显示的距离远参数和显示距离近参数;
S3:根据步骤S1得到的场景区域三角形网和步骤S2的节点信息,对三维场景中元素的各级LOD进行建模并按XML中的文件名保存文件;
S4:将所有LOD模型和XML节点信息文件部署在互联网或局域网的服务器中;
S5:客户端程序访问XML节点信息文件,根据节点信息文件来重构三角形网,三角形网以数据结构图的方式来表示;
S6:利用三角形网,分批渐进下载LOD模型,用户打开场景,根据视点的位置,按照相邻节点分级的方法由近及远下载各个节点的LOD模型,当已下载的LOD模型达到设定数量时,程序启动漫游,在漫游过程中,程序定时检察视点当前位置,利用三角形网由近及远查找未下载模型,添加到下载任务列表中;处理程序采用三线程结构:绘制线程、加载卸载线程、下载线程,从离视点最近的节点开始,按照由近及远的顺序来绘制处理,当处理程序开始绘制一个节点的模型时,首先检查模型是否已下载和加载,如果已完成下载和加载则进行绘制渲染,如未完成则通知下载线程下载或加载线程加载,绘制线程不等待,程序处理从当前视点开始进行搜索检查,遇到设定条件终止检查;
S7:处理程序下载的LOD模型数量达到设定数量,程序开始渲染显示;
S8:完成步骤S7后,三维场景完成一帧显示,用户继续操作漫游,处理程序跳转回步骤S6进行下载调度,若所有模型已下载完毕,则程序跳过步骤S6,继续步骤S7,重复步骤S6-S8,实现互动的实时漫游。
进一步地,步骤S5的三角形网的重构具体步骤如下:
第一步:对未加入三角形网的节点,比较节点参考点与视点的距离,取得离视点最近的一个节点N;若三角网开始构造,则取离视点最近的节点加入三角形网成为第一个节点;
第二步:如图3所示,对三角形网的所有边缘点进行计算比较,找到离节点N最近的一个边缘节点E,E点的两个相邻的边缘点,记为E1、E2,比较两个相邻边缘点与N点形成的角度,取角度大的那个相邻点连线构成一个新三角形,即比较∠ENE1与∠ENE2,取大的一个角连线构成新的三角形,三角形网扩展了一个新节点;比较角度并取大的一个,是因为这样做能较好地避免形成狭长的钝角三角形,并能较好地避免“折叠”现象(两个或多个三角形区域有重合)。无折叠的锐角三角形组合的扩展过程更符合“由近及远”。
第三步:N点新连入三角网后,若N点任一相邻节点的边的数量达到6,则进行如下操作:检查该相邻节点的6个相邻点,这6个节点有4个节点是与6个节点中的2个节点相邻,其中2个节点只与6个节点中的1个节点相邻;这2个节点其中一个为新加入的N点,搜索找到另一个节点,找到的这个节点与N点连一条边。如图3所示,节点N新连入网后,导致E2点有了6条边。在图中可看出,E2的6个相邻顶点中,除了节点N,只有节点E3与6个中的1个相邻。因此,连接NE3,建立一条新的边,N、E2、E3组成一个新的三角形,E2点变成内部点。
进一步地,步骤S6所述中止条件包括:
(1)所有的节点都已被遍历完毕;
(2)新扩展查找的更远一级的相邻节点中,所有节点都在最低精度LOD的卸载条件距离之外,
如果场景小设定尺寸,检查过程常常终止于条件(1);若场景大于设定尺寸,则终止于条件(2)。
进一步地,步骤S7显示管理策略包括:
按照视点高度控制远处的模型显示
行人在街道上近处的建筑景物被遮挡,远处的景物看不到(如图4所示),如果视点高度只比周围建筑低一点,或者还高出一点的时,远处就只有矮一点的建筑才会被遮挡了(如图5),此时被遮挡的远处街区的模型不用显示出来;当视点升到高空,远处的建筑物看得见,远处的景物显示设置以下条件:
其中:
以上各式中,harv是景物显示屏蔽之前各级的建筑物平均绝对高度再乘以一个系数C2,系数C2可取小于1的数;
式(1)-(2)为屏蔽显示街区建筑物的条件,即当任一节点,同时符合以上三式时,该节点的模型暂不参与渲染显示;式(1)中,i表示向外扩展查找相邻节点的级数序号,C1为常数,表示当查找级数大于C1级的时候,程序开始对节点执行显示屏蔽;C1取4到7之间的值效果最佳;
式(2)表示考虑屏蔽的建筑景物小于设定高度,hobj为正在检查的街区景物最高高度,havr为比视点周围景物的平均高度低的一个高度值,hview为视点高度;
视域范围外部景物的剔除
如图6所示,MNST是视景体的俯视图,M、N为视景体的近面两点,P点为当前视点位置,Q点为节点景物中心位置;当节点的属性满足以下关系式时:
景物剔除,否则显示,其中Q1、Q2表示如下:
以上各式中,运算符×为向量叉乘,==为比较相等,sgn为符号函数,Q点为节点的参考点;式(4)的含义是:Q点位于射线PM与射线PN的同一侧;若景物出现在P点的视域范围之内,射线PQ在射线PM与PN之间,即在PM与射线PN的异侧,此时PQ和PM的向量积与PQ与PN的向量积为异号,如果视点在P点的视域之外,则PQ和PM的向量积与PQ与PN的向量积为同号;
当节点参考点Q在视域之外,无法保证该节点所有模型形体均在视域之外,根据式(5)(6)做判断,以参考点Q为中心,作一条平行于MN的线段Q1Q2,以节点包络矩形长宽尺寸中大的一个乘以倍作为线段的长度,以保证Q1、Q2点落在包络矩形之外;若定出的Q1、Q2点都在视域之外,则能够保证整个包络矩形之内的物体都在视域之外,在上述剔除控制中,以节点模型的包络矩形长宽已知作为条件,所述包络矩形长宽在保存文件时进行设置或自动计算。
进一步地,所述嵌套三角形网在当街区建筑物众多构成复杂的节点,根据街区内部组成划分子节点,连接子节点组成子三角形网,子三角形网再进行嵌套进而形成多级三角形网嵌套。
步骤S5所述,客户端访问取得节点记录文件后,根据步骤S5所述算法构造出三角形网及嵌套子网。
步骤S7所述,客户端程序根据视点位置动态加载和卸载已下载模型,实现近处显示高精度模型,远处显示低精度模型或不显示的功能。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (7)
1.一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,所述方法包括如下步骤:
S1:根据三维场景的平面地图,将整个场景区域按街区划分为若干个子区域,将一个子区域内的建筑群作为节点,把所有节点连结成一个三角形网,每一个节点对应一组LOD模型,一个子区域内除地形以外的所有物体均创建在同一个LOD模型内,当一个子区域面积超过设定值,使用嵌套的三角形网代替当前子区域节点的高精度模型,嵌套的三角形网子网格中节点对应多级精度的LOD模型文件,当计算机需要加载或显示总网中有嵌套三角形网格的节点高精度模型的时,对该子网格进行加载或显示处理,嵌套的三角形网子网格根据需要继续嵌套下一层三角形网子网格,将超大场景的细节信息包含在嵌套的多级三角形网;
S2:将步骤S1所述节点的信息记录在XML文件中,所述XML文件包含有:
<Terrain>项表示地形信息,用于指定一个记录了地形信息的文件;
<TriNet>项表示三角形网;
<Node>项表示节点;
<InOutDoor>项为场景标识,用于标记节点是室内还是室外场景;
<RefPnt>为模型参考点;
<ExRexL>和<ExRexW>为节点模型外接矩形长和宽;
<LOD1>、<LOD2>和<LOD3>分别为低级精度、中等精度和高级精度的LOD,<FileName>为每级LOD的模型文件;
<LoadDis>、<UnLoadDis>、<DisplayDisFar>和<DisplayDisNear>是LOD加载参数、卸载参数和显示的距离远参数和显示距离近参数;
S3:根据步骤S1得到的场景区域三角形网和步骤S2的节点信息,对三维场景中元素的各级LOD进行建模并按XML中的文件名保存文件;
S4:将所有LOD模型和XML节点信息文件部署在互联网或局域网的服务器中;
S5:客户端程序访问XML节点信息文件,根据节点信息文件来重构三角形网,三角形网以数据结构图的方式来表示;
S6:利用三角形网,分批渐进下载LOD模型,用户打开场景,根据视点的位置,按照相邻节点分级的方法由近及远下载各个节点的LOD模型,当已下载的LOD模型达到设定数量时,程序启动漫游,在漫游过程中,程序定时检察视点当前位置,利用三角形网由近及远查找未下载模型,添加到下载任务列表中;处理程序采用三线程结构:绘制线程、加载卸载线程、下载线程,从离视点最近的节点开始,按照由近及远的顺序来绘制处理,当处理程序开始绘制一个节点的模型时,首先检查模型是否已下载和加载,如果已完成下载和加载则进行绘制渲染,如未完成则通知下载线程下载或加载线程加载,绘制线程不等待,程序处理从当前视点开始进行搜索检查,遇到设定条件终止检查;
S7:处理程序下载的LOD模型数量达到设定数量,程序开始渲染显示;
S8:完成步骤S7后,三维场景完成一帧显示,用户继续操作漫游,处理程序跳转回步骤S6进行下载调度,若所有模型已下载完毕,则程序跳过步骤S6,继续步骤S7,重复步骤S6-S8,实现互动的实时漫游。
2.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,步骤S5的三角形网的重构具体步骤如下:
第一步:对未加入三角形网的节点,比较节点参考点与视点的距离,取得离视点最近的一个节点N;若三角网开始构造,则取离视点最近的节点加入三角形网成为第一个节点;
第二步:对三角形网的所有边缘点进行计算比较,找到离节点N最近的一个边缘节点E,E点的两个相邻的边缘点,记为E1、E2,比较两个相邻边缘点与N点形成的角度,取角度大的那个相邻点连线构成一个新三角形,即比较∠ENE1与∠ENE2,取大的一个角连线构成新的三角形,三角形网扩展了一个新节点;
第三步:N点新连入三角网后,若N点任一相邻节点的边的数量达到6,则进行如下操作:检查该相邻节点的6个相邻点,这6个节点有4个节点是与6个节点中的2个节点相邻,其中2个节点只与6个节点中的1个节点相邻;这2个节点其中一个为新加入的N点,搜索找到另一个节点,找到的这个节点与N点连一条边。
3.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,步骤S6所述中止条件包括:
(1)所有的节点都已被遍历完毕;
(2)新扩展查找的更远一级的相邻节点中,所有节点都在最低精度LOD的卸载条件距离之外,
如果场景小设定尺寸,检查过程常常终止于条件(1);若场景大于设定尺寸,则终止于条件(2)。
4.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,步骤S7显示管理策略包括:
按照视点高度控制远处的模型显示
行人在街道上近处的建筑景物被遮挡,远处的景物看不到,此时被遮挡的远处街区的模型不用显示出来;当视点升到高空,远处的建筑物看得见,远处的景物显示设置以下条件:
其中:
以上各式中,harv是景物显示屏蔽之前各级的建筑物平均绝对高度再乘以一个系数C2,系数C2可取小于1的数;
式(1)-(2)为屏蔽显示街区建筑物的条件,即当任一节点,同时符合以上三式时,该节点的模型暂不参与渲染显示;式(1)中,i表示向外扩展查找相邻节点的级数序号,C1为常数,表示当查找级数大于C1级的时候,程序开始对节点执行显示屏蔽;C1取4到7之间的值效果最佳;
式(2)表示考虑屏蔽的建筑景物小于设定高度,hobj为正在检查的街区景物最高高度,havr为比视点周围景物的平均高度低的一个高度值,hview为视点高度;
视域范围外部景物的剔除
MNST是视景体的俯视图,M、N为视景体的近面两点,P点为当前视点位置,Q点为节点景物中心位置;当节点的属性满足以下关系式时:
景物剔除,否则显示,其中Q1、Q2表示如下:
以上各式中,运算符×为向量叉乘,==为比较相等,sgn为符号函数,Q点为节点的参考点;式(4)的含义是:Q点位于射线PM与射线PN的同一侧;若景物出现在P点的视域范围之内,射线PQ在射线PM与PN之间,即在PM与射线PN的异侧,此时PQ和PM的向量积与PQ与PN的向量积为异号,如果视点在P点的视域之外,则PQ和PM的向量积与PQ与PN的向量积为同号;
当节点参考点Q在视域之外,无法保证该节点所有模型形体均在视域之外,根据式(5)(6)做判断,以参考点Q为中心,作一条平行于MN的线段Q1Q2,以节点包络矩形长宽尺寸中大的一个乘以倍作为线段的长度,以保证Q1、Q2点落在包络矩形之外;若定出的Q1、Q2点都在视域之外,则能够保证整个包络矩形之内的物体都在视域之外,在上述剔除控制中,以节点模型的包络矩形长宽已知作为条件,所述包络矩形长宽在保存文件时进行设置或自动计算。
5.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,所述嵌套三角形网在当街区建筑物众多构成复杂的节点,根据街区内部组成划分子节点,连接子节点组成子三角形网,子三角形网再进行嵌套进而形成多级三角形网嵌套。
6.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,步骤S5所述,客户端访问取得节点记录文件后,根据步骤S5所述算法构造出三角形网及嵌套子网。
7.根据权利要求1所述的一种支持大规模三维场景虚拟漫游的模型数据组织方法,其特征在于,步骤S7所述,客户端程序根据视点位置动态加载和卸载已下载模型,实现近处显示高精度模型,远处显示低精度模型或不显示的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811545152.4A CN109712242B (zh) | 2018-12-17 | 2018-12-17 | 一种支持大规模三维场景虚拟漫游的模型数据组织方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811545152.4A CN109712242B (zh) | 2018-12-17 | 2018-12-17 | 一种支持大规模三维场景虚拟漫游的模型数据组织方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109712242A true CN109712242A (zh) | 2019-05-03 |
CN109712242B CN109712242B (zh) | 2023-04-07 |
Family
ID=66255781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811545152.4A Active CN109712242B (zh) | 2018-12-17 | 2018-12-17 | 一种支持大规模三维场景虚拟漫游的模型数据组织方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109712242B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112233231A (zh) * | 2020-09-11 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种基于云计算的城市三维实景漫游方法及系统 |
CN113190019A (zh) * | 2021-05-26 | 2021-07-30 | 立得空间信息技术股份有限公司 | 一种基于虚拟仿真的巡检机器人任务点布置方法及系统 |
CN114266870A (zh) * | 2021-12-29 | 2022-04-01 | 珠海金山数字网络科技有限公司 | 图像生成方法及装置 |
CN117953181A (zh) * | 2024-03-27 | 2024-04-30 | 江苏狄诺尼信息技术有限责任公司 | 一种面向web3d的顶点分层与增量式lod方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050035883A1 (en) * | 2003-08-01 | 2005-02-17 | Kenji Kameda | Map display system, map data processing apparatus, map display apparatus, and map display method |
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
KR20060069232A (ko) * | 2004-12-17 | 2006-06-21 | 한국전자통신연구원 | 다단계 해상도를 갖는 3차원 이미지 표현 장치 및 방법 |
EP2660782A1 (en) * | 2012-05-02 | 2013-11-06 | Dassault Systèmes | Designing a 3D modeled object |
CN104616339A (zh) * | 2013-11-05 | 2015-05-13 | 镇江华扬信息科技有限公司 | 一种Web3D虚拟现实系统的场景数据调度方法 |
CN106599493A (zh) * | 2016-12-19 | 2017-04-26 | 重庆市勘测院 | 一种三维大场景中bim模型的可视化实现方法 |
-
2018
- 2018-12-17 CN CN201811545152.4A patent/CN109712242B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050035883A1 (en) * | 2003-08-01 | 2005-02-17 | Kenji Kameda | Map display system, map data processing apparatus, map display apparatus, and map display method |
KR20060069232A (ko) * | 2004-12-17 | 2006-06-21 | 한국전자통신연구원 | 다단계 해상도를 갖는 3차원 이미지 표현 장치 및 방법 |
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
EP2660782A1 (en) * | 2012-05-02 | 2013-11-06 | Dassault Systèmes | Designing a 3D modeled object |
CN104616339A (zh) * | 2013-11-05 | 2015-05-13 | 镇江华扬信息科技有限公司 | 一种Web3D虚拟现实系统的场景数据调度方法 |
CN106599493A (zh) * | 2016-12-19 | 2017-04-26 | 重庆市勘测院 | 一种三维大场景中bim模型的可视化实现方法 |
Non-Patent Citations (1)
Title |
---|
罗立宏: "基于XML 的Web3D 大场景虚拟现实应用的研究和实现", 《工程图学学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112233231A (zh) * | 2020-09-11 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种基于云计算的城市三维实景漫游方法及系统 |
CN112233231B (zh) * | 2020-09-11 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种基于云计算的城市三维实景漫游方法及系统 |
CN113190019A (zh) * | 2021-05-26 | 2021-07-30 | 立得空间信息技术股份有限公司 | 一种基于虚拟仿真的巡检机器人任务点布置方法及系统 |
CN113190019B (zh) * | 2021-05-26 | 2023-05-16 | 立得空间信息技术股份有限公司 | 一种基于虚拟仿真的巡检机器人任务点布置方法及系统 |
CN114266870A (zh) * | 2021-12-29 | 2022-04-01 | 珠海金山数字网络科技有限公司 | 图像生成方法及装置 |
CN117953181A (zh) * | 2024-03-27 | 2024-04-30 | 江苏狄诺尼信息技术有限责任公司 | 一种面向web3d的顶点分层与增量式lod方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109712242B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109712242A (zh) | 一种支持大规模三维场景虚拟漫游的模型数据组织方法 | |
JP4733116B2 (ja) | ルールベースの手続的地形生成用資源管理 | |
US8570322B2 (en) | Method, system, and computer program product for efficient ray tracing of micropolygon geometry | |
JP4824019B2 (ja) | ルールベースの手続的地形生成用地形編集ツール | |
CN108520557A (zh) | 一种图形图像融合的海量建筑绘制方法 | |
JP2008500637A (ja) | ルールベースの手続的地形生成 | |
CN113066160B (zh) | 一种室内移动机器人场景数据的生成方法 | |
CN103268221B (zh) | 一种基于web技术的气象数据体三维显示方法及装置 | |
CN104778744A (zh) | 基于Lidar数据的大规模三维森林可视化场景建立技术 | |
CN106204719B (zh) | 基于二维邻域检索的三维场景中海量模型实时调度方法 | |
CN112419498B (zh) | 一种海量倾斜摄影数据的调度渲染方法 | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
CN106611441A (zh) | 三维地图的处理方法和装置 | |
CN111915710A (zh) | 基于实时渲染技术的建筑渲染方法 | |
CN111445576B (zh) | 地图数据的获取方法和装置、存储介质及电子装置 | |
CN111798558A (zh) | 数据处理方法及装置 | |
CN103257876A (zh) | C3游戏地图动态加载的方法 | |
Zhang et al. | [Retracted] Virtual Reality Design and Realization of Interactive Garden Landscape | |
CN115578536A (zh) | 一种分层分块三维模型节点合并方法、装置和电子装置 | |
CN118096992A (zh) | 阴影的展示方法和装置、存储介质、电子装置 | |
CN115221580A (zh) | 一种基于Godot的园区数字孪生建筑模型构建方法 | |
CN113610982B (zh) | 基于大规模模型场景的邻域查询方法 | |
CN104866549B (zh) | 一种适于多智能体仿真的地形环境数据库系统 | |
JP2937937B2 (ja) | 三次元オブジェクトデータ処理方法 | |
CN112604283A (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 |