一种支持单模型交互的三维模型合并方法与流程

文档序号:15077192发布日期:2018-08-01 02:10阅读:192来源:国知局

本发明涉及三维仿真地图制作技术领域,具体涉及一种支持单模型交互的三维模型合并方法。



背景技术:

在三维地图场景中,需要解决两个基本的问题:(1)需要显示大量的三维模型要素,包括房屋、树木、电线杆和消防栓等;(2)需要对三维模型要素进行交互操作,例如选择、查看属性和高亮显示等。这种交互性要求各个模型要素相互之间需要保持几何信息的独立性,可以以要素为单位进行操作,然后在此基础上实现三维模型的可视化渲染和显示。

在显示时,主流的三维引擎如opengl和webgl引擎都是采取逐个读取渲染的方式,即需要遍历这些三维模型对象,依次读取这些模型的顶点、材质和纹理贴图等信息,逐个渲染。当三维模型数量较多时,这种逐个读取渲染的模式会消耗大量的时间,导致三维地图的渲染效率下降、响应性变低,用户体验也会受到很大影响,因此,出现了很多优化方法。

目前对于大量要素三维场景优化的方案主要有两种:

1、减小单个要素顶点的数量

根据应用需求,对单个要素进行化简,减少其顶点的数量,提高单个要素渲染的效率,进而提高三维场景整体渲染效率。例如申请号为201110275336.5的中国发明专利,实现了根据可见性进行三维模型化简;申请号为201410031254.x的中国发明专利,在兼顾纹理的情况下,实现了三维模型的顶点合并;申请号为201210369882.x的中国发明专利实现了三维网格模型的化简。

2、减小需要渲染的要素的总数量

减少需要渲染的要素的总数量,也能提高渲染效率。专利申请号为201210116987.4的中国发明专利,通过模型重组来减少渲染批次,提高渲染效率;申请号为200810120285.7的中国发明专利则采取了分类合并的方式。

目前的三维场景优化技术的应用上,对于需要进行单个要素交互的场合,主要以单模型化简方法为主;模型合并主要用在不需要进行要素交互的场合。在要素数量较多的情况下,即使采用单模型化简的方式,仍然免不了大量要素的遍历,对性能有较大影响。如果能将模型化简和要素合并相结合,有助于进一步提高三维场景的效率。而模型合并方法未能在单要素交互场景得到很好应用的关键原因,就在于模型一旦合并,就再也无法通过鼠标操作或其他方式选中或者操作单个模型对象,而只能对合并后的对象进行整体选中和操作。如果能在合并后仍然能保持对单个对象的操作能力,就能很好的解决对象合并方案在单要素交互场景中的应用障碍。

综上所述,现有技术存在如下缺点:三维模型合并之后无法对单个模型进行操作。



技术实现要素:

本发明所要解决的技术问题是三维模型合并之后无法对单个模型进行操作的问题。

为了解决上述技术问题,本发明所采用的技术方案是提供支持单模型交互的三维模型合并方法,包括以下步骤:

将需要合并的原始三维模型对象合并成单一的模型对象,并将合并后的三维模型对象添加到三维场景中用于显示;

将合并前的原始模型对象只保留在内存,同时创建用于检索原始三维模型对象的索引数据结构;

当需要单独操作某个原始模型对象时,通过索引数据结构查找到该原始模型对象并将其添加到三维场景与合并后的三维模型对象进行叠加显示;

对显示效果进行控制,使原始模型对象显示在合并后的模型对象的前面,操作结束后将原始模型对象从三维场景中移除,只保留在内存中,等待下一次的检索和操作。

优选地,所述原始三维模型对象合并后的数据结构包括合并后的三维模型对象、原始三维模型对象以及对原始三维模型对象的索引。

优选地,合并后的三维模型对象为普通的三维对象,直接显示到三维场景中,没有额外的数据项,只包含模型本身的几何信息以及纹理信息;

原始三维模型对象以内存对象的形式存在,不添加到三维场景中,也不会显示出来;

原始三维模型对象的索引作为一个单独的内存对象存在,在其内部保存了对原始三维模型对象的引用以及每个原始三维模型对象的最小外接长方体。

优选地,原始三维模型对象合并后的数据结构支持模型的整体显示和对单个模型对象的个性化显示。

优选地,模型的整体显示具体为:将合并后的三维模型对象添加到三维场景中显示出来,按需控制显示效果;

对单个模型对象的个性化显示具体为:

首先访问索引,从原始三维模型对象中检索出目标模型对象;

其次将该目标三维模型对象设置为需要的显示效果并添加到三维场景中,与合并后的三维模型对象叠加显示;

操作完成后,将目标三维模型对象从三维场景中移除,只保留在内存中,等待下次操作。

优选地,当目标三维模型对象与合并后的三维模型对象叠加显示,将目标三维模型对象叠加在合并后的三维模型对象之上,使得该目标三维模型对象遮挡住合并后的三维模型对象中对应的几何体部分。

优选地,按需控制显示效果,包括改变颜色、反射率及其他材质信息。

优选地,检索操作通过对几何体的拓扑计算来实现,具体为:

s101、确定检索条件;

s102、访问索引对象,依次遍历此索引对象索引的所有目标三维模型对象;

s103、对于每一个目标三维模型对象,首先访问其最小外接长方体,判断检索条件对象与外接长方体是否存在相交或包含关系,如果存在,则转s104;否则直接跳转到s106;

s104、读取目标三维模型对象的完整的几何信息,判断检索条件对象与目标三维模型对象是否存在相交或包含关系,如果存在,则转s105;否则直接跳转到s106;

s105、将存在相交或包含关系的目标三维模型对象作为检索结果保存到检索结果数据集合中;

s106、继续访问下一个目标三维模型对象,转s103;

s107、遍历完成后,检索结果数据集合中的模型对象即检索结果。

本发明提出了一种支持单模型交互的三维模型合并方法,通过模型合并来提高效率,并解决了三维模型合并之后无法对单个模型进行操作的问题。首先将原始三维模型对象合并成单一的模型对象,只将合并后的模型对象显示到三维场景中而不再显示原始模型对象,三种场景中只需要渲染单一的模型对象即可,不再有对象遍历的开销,从而大大提高了三维模型显示的效率;通过保留原始模型对象数据并建立索引数据结构,就可以在涉及到单个模型显示和操作时及时查找到原始模型对象并实时添加到场景中以满足显示和其他操作需求。只添加需要的原始模型对象数据而不是添加全部,这样对三维场景的性能产生的影响很小。操作完后及时将原始模型对象从三维场景中移出,也有利于将对三维场景显示性能的影响降到最低。

附图说明

图1为本发明中一种支持单模型交互的三维模型合并方法流程图;

图2为本发明中原始三维模型对象合并后的数据结构图;

图3为本发明中模型显示的操作流程图;

图4为本发明中索引数据结构图;

图5为本发明中检索操作的流程图;

图6为本发明中模型检索输入输出数据流示意图。

具体实施方式

为了解决现有的三维模型合并之后无法对单个模型进行操作的问题。本发明提出了一种支持单模型交互的三维模型合并方法,通过模型合并来提高效率,并解决了三维模型合并之后无法对单个模型进行操作的问题。

首先将原始三维模型对象合并成单一的模型对象,只将合并后的模型对象显示到三维场景中而不再显示原始模型对象,三种场景中只需要渲染单一的模型对象即可,不再有对象遍历的开销,从而大大提高了三维模型显示的效率;通过保留原始模型对象数据并建立索引数据结构,就可以在涉及到单个模型显示和操作时及时查找到原始模型对象并实时添加到场景中以满足显示和其他操作需求。只添加需要的原始模型对象数据而不是添加全部,这样对三维场景的性能产生的影响很小。操作完后及时将原始模型对象从三维场景中移出,也有利于将对三维场景显示性能的影响降到最低。

下面结合说明书附图和具体实施方式对本发明做出详细的说明。

本发明实施例提供了一种支持单模型交互的三维模型合并方法,如图1所示,包括以下步骤:

s1、将需要合并的原始三维模型对象合并成单一的模型对象,并将合并后的三维模型对象添加到三维场景中用于显示。

s2、将合并前的原始模型对象只保留在内存但不添加到三维场景中,只作为内存对象存在而不显示到三维场景中,同时创建用于检索原始三维模型对象的索引数据结构。

s3、当需要单独操作某个原始模型对象时,通过索引数据结构查找到该原始模型对象,然后单独将该原始模型对象添加到三维场景与合并后的三维模型对象进行叠加显示,操作结束后再将该原始模型对象从三维场景中移除,但仍然保留在内存中,等待下一次的检索和操作。

s4、原始模型对象与合并后的模型对象叠加显示时,对显示效果进行控制,使原始模型对象显示在合并后的模型对象的前面。

由于几何坐标位置的重合性,就可以用原始模型对象遮挡住合并后的模型对象中与此原始模型对象对应的几何部分,从视觉效果上,三维场景中原始模型对象所对应的几何部分发生了改变,其他部分则不发生任何变化。从而实现了对原始模型对象的可视化效果的单独设置,同时由于原始模型对象已经添加到系统中,也可以对该原始模型对象单独进行其他操作,比如查看该原始模型对象关联的其他信息等。整个过程中不必对合并后的模型对象作任何处理。

如图2所示,为原始三维模型对象合并后的数据结构图,其中,整个数据结构包括三部分:

(1)合并后的三维模型对象;

合并后的三维模型对象是一个普通的三维对象,没有任何额外的数据项,只包含模型本身的几何信息、纹理信息等,这个模型直接显示到三维场景中。

(2)原始三维模型对象;

原始三维模型对象是指合并之前的各个单体三维模型对象,它们以内存对象的形式存在,不添加到三维场景中,也不会显示出来。

(3)对原始三维模型对象的索引。

对原始三维模型对象的索引作为一个单独的内存对象存在,在其内部保存了对原始三维模型对象的引用以及每个原始三维模型对象的最小外接长方体,最小外接长方体用于提高模型检索效率。

原始三维模型对象合并后的数据结构共支持以下两种类型的操作:

(1)模型的整体显示;

模型的整体显示,就是把合并后的三维模型对象添加到三维场景中显示出来,可以按需控制显示效果,例如改变颜色、反射率及其他材质信息,所有这些设置不影响原始的模型对象。

(2)对单个模型对象的个性化显示。

对单个模型对象的个性化显示,就是将单个模型显示为与其他模型不同的颜色等材质效果,这需要首先根据索引从原始三维模型对象中检索出目标三维模型对象,然后将该目标三维模型对象设置为需要的显示效果并添加到三维场景中,与合并后的三维模型对象叠加显示,并将该目标三维模型对象叠加在合并后的三维模型对象之上,刚好遮挡住合并后的三维模型对象中对应的几何体部分。这因此,无需对合并后的三维模型对象作任何更改,又可以从视觉效果上达到将此部分的显示效果变更的目的。

如图3所示,模型显示的操作流程具体包括以下步骤:

s10、三维模型对象的合并操作执行完成。

s20、添加合并后的三维模型对象到三维场景中,整理进行浏览和其他操作。

s30、需要对单个三维模型对象进行操作时,访问索引,检索出需要显示的目标三维模型对象。

s40、设置目标三维模型对象的显示效果。

s50、将目标三维模型对象添加到三维场景中,与合并后的三维模型对象叠加显示,并控制叠加效果,使得目标三维模型对象遮盖住合并后的三维模型对象中与此目标三维模型对象相对应的几何部分。

s60、操作完成后,将目标三维模型对象从三维场景中移除,但仍保留在内存中,等待下次操作。

在查找单个模型对象的过程中,需要通过索引进行对象的检索,索引数据结构如图4所示,索引数据结构的核心就是一个由模型对象id构成的数据集合,数据几何中的每一项都保存了一个模型对象的id,以及此模型对象的最小外接长方体和到此对象的引用。

如图5所示,检索操作通过对几何体的拓扑计算来实现,具体包括以下步骤:

s101、确定检索条件。

检索条件可以是一个三维场景中的点坐标,用来检索出这个点坐标存在相交或者包含关系的模型对象;也可以是一个线对象,用来检索出跟这条线相交的模型对象;也可以是一个几何体对象,用来检索跟这个几何体对象相交的模型对象;我们把作为检索条件的几何对象称为检索条件对象;

s102、访问索引对象,依次遍历此索引对象索引的所有目标三维模型对象。

s103、对于每一个目标三维模型对象,首先访问其最小外接长方体,判断检索条件对象与外接长方体是否存在相交或包含关系,如果存在,则转s104;否则直接跳转到s106。

s104、读取目标三维模型对象的完整的几何信息,判断检索条件对象与目标三维模型对象是否存在相交或包含关系,如果存在,则转s105;否则直接跳转到s106。

s105、将存在相交或包含关系的目标三维模型对象作为检索结果保存到检索结果数据集合中。

s106、继续访问下一个目标三维模型对象,转s103。

s107、遍历完成后,检索结果数据集合中的模型对象即检索结果。

其中,模型检索输入输出数据流如图6所示。

文中的专业名词解释:

[1]最小外接长方体,包裹在一个三维几何体外面,刚好与此几何体相切的所有长方体中体积最小的一个。

[2]相交关系,指两个三维几何体在空间上存在共同区域,在图形上存在交点。

[3]包含关系,指一个三维几何体完全在另一个三维几何体的内部。

本发明不局限于上述最佳实施方式,任何人在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1