CN112685429A - 树状结构模型生成及加载方法、装置、存储介质及设备 - Google Patents
树状结构模型生成及加载方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN112685429A CN112685429A CN202110278810.3A CN202110278810A CN112685429A CN 112685429 A CN112685429 A CN 112685429A CN 202110278810 A CN202110278810 A CN 202110278810A CN 112685429 A CN112685429 A CN 112685429A
- Authority
- CN
- China
- Prior art keywords
- model
- models
- level
- level model
- specified
- 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
Images
Landscapes
- Processing Or Creating Images (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种树状结构模型生成及加载方法、装置、存储介质及设备,该方法包括:接收加载目标对象的模型的指令;响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;加载指定级别模型,计算指定级别模型和相机之间的距离;根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换所述指定级别模型。本申请解决现有技术中模型加载效率低的技术问题。
Description
技术领域
本申请涉及计算机辅助设计领域,具体而言,涉及一种树状结构模型生成及加载方法、装置、存储介质及设备。
背景技术
随着城市化水平的提高,需要通过更为先进的管理方式来推动城市的建设,也因此CIM逐渐成为了众多城市首推的政策目标之一。CIM(City Information Modeling)即城市信息模型,以建筑信息模型(Building Information Modeling,BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据,构建起三维数字空间的城市信息有机综合体,是一种更高集成度、更广覆盖度、更优系统性的巨系统。
BIM的核心是通过建立虚拟的建筑工程三维模型,利用数字化技术,为这个模型提供完整的、与实际情况一致的建筑工程信息库。通过BIM技术,可以获得城市中每一个建设工程的虚拟三维模型,以及与这个模型对应的完整的、与实际情况一致的建筑工程信息库,从而实现建筑信息全寿命周期的集成。通过CIM技术,可以汇集多源、高精度、全市域各要素的城市模型数据,通过对这些数据的深度挖掘、分析,产生新的涌现,实现对城市规律的识别,为改善和优化城市系统提供有效的指引。可以看出,在CIM和BIM运维系统中存在着大量的模型数据需要动态加载和管理,由于在CIM和BIM中需要实现精细化真实还原现实场景,大到楼宇建筑,小到水管喷头都需要在系统中体现,因此系统中常出现数以十万计的单体数字模型,对系统负担极高,对承载系统的主机要求也非常高,因而模型的渲染效率极地。
现有技术中可以通过LOD(Levels of Detail,多细节层次)技术来提高渲染效率,其核心思路是根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体顶点数,从而降低其面数和细节度,从而获得高效率的渲染运算。原理其实很简单,就是对同一个模型,生成若干不同精度的模型,然后关联在一起,设置相机距离较近的时候显示最高精度的,稍微远一点就显示中间精度的,再远就显示最低精度的,即近精模 远简模。然而1.LOD技术是针对单体模型进行优化的技术方案,模型数量较少的系统中效果显著,但在CIM和BIM运维管理系统中,一般都会有数十万的单体模型需要加载和管理,因此LOD技术优化效果非常有限,甚至会因庞大规模的相机运算造成额外的系统负担。
针对上述现有技术中模型加载效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种树状结构模型生成及加载方法、装置、存储介质及设备,以至少解决现有技术中模型加载效率低的技术问题。
根据本申请实施例的一个方面,提供了一种树状结构模型加载方法,该方法包括:接收加载目标对象的模型的指令;响应于指令,从模型数据库中读取目标对象的指定级别模型 以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;加载指定级别模型,计算指定级别模型和相机之间的距离;根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
根据本申请实施例的一个方面,还提供了一种树状结构模型生成方法,该方法包括:确定显示系统中包含的所有单体模型;将每一个单体模型作为最底级模型,存入树状结构模型中;根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断合并得到的所有模型是否能继续分组和合并;若是,则对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;若否,则将合并得到的所有模型作为树状结构的最顶级模型。
根据本申请实施例的一个方面,还提供了一种模型加载装置,该装置包括:接收模块,用于接收加载目标对象的模型的指令;读取模块,用于响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;第一计算模块,用于加载指定级别模型,计算指定级别模型和相机之间的距离;第二计算模块,用于根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;加载模块,用于根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
根据本申请实施例的一个方面,还提供了一种树状结构模型生成装置,该装置包括:确定单元,用于确定显示系统中包含的所有单体模型;第一存储单元,用于将每一个单体模型作为最底级模型,存入树状结构模型中;第二存储单元,用于根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断单元,用于判断合并得到的所有模型是否能继续分组和合并;第三存储单元,用于在所有模型能继续分组和合并时,对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并;第四存储单元,用于在所有模型不能继续分组和合并时,将合并得到的所有模型作为树状结构的最顶级模型。
在上述任一实施例的基础上,根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型包括:当权重大于第一预设阈值时,判断指定级别模型是否为树状结构模型中的最底级模型,若否,则从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型;当权重小于第二预设阈值时,判断指定级别模型是否为树状结构模型中的最顶级模型,其中,第一预设阈值大于或等于第二预设阈值,若否,则从模型数据库中读取并加载指定级别模型的父级模型来替换指定级别模型。
在上述任一实施例的基础上,指定级别模型的边缘向量为指定级别模型的AABB包围盒的顶点坐标向量。
在上述任一实施例的基础上,在根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型之后,方法还包括:接收针对目标对象中第一位置的选择操作,其中目标对象中显示有至少一个当前模型;确定第一位置处第一对象的最底级模型,以及包含第一位置的当前模型的级别;从模型数据库中加载第一位置处第一对象的最底级模型;从模型数据库中读取当前模型的子级模型,来替换第一对象周边对象的当前模型。
在上述任一实施例的基础上,方法应用于计算设备中,计算设备被配置为:响应于针对所述目标对象中第一位置的选择操作,,创建第二线程;通过第二线程执行确定第一位置处第一对象的最底级模型的操作。
在上述任一实施例的基础上,在响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量之前,方法还包括:确定显示系统中包含的所有单体模型;根据预设规则对单体模型进行分组和合并,形成树状结构模型;计算树状结构模型中的每一个模型的边缘向量,存入模型数据库中。
在上述任一实施例的基础上,根据预设规则对单体模型进行分组和合并,形成树状结构模型包括:将每一个单体模型作为最底级模型,存入树状结构模型中;根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并 ,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断合并得到的所有模型是否能继续分组和合并;若是,则合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;若否,则将合并得到的所有模型作为树状结构的最顶级模型。
根据本申请实施例的另一个方面,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任一实施例的方法。
根据本申请实施例的另一个方面,提供了一种设备,包括处理器,处理器用于运行程序,其中,程序运行时执行上述任一实施例的方法。
在本申请实施例中,通过在模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;同时计算目标对象的指定级别模型在相机视野范围内所占的权重;从而使得在权重大于预设阈值时,从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型,加快了模型的加载速度,同时又保证了模型的显示精度,提高模型加载效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现树状结构模型加载方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例的一种树状结构模型加载方法的流程图;
图3是根据本申请实施例的一种树状结构模型生成方法的流程图;
图4是根据本申请实施例的一种树状结构模型的示意图;
图5是根据本申请实施例的一种模型加载装置的结构示意图;以及
图6是根据本申请实施例的一种树状结构模型生成方法的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,还提供了一种树状模型加载方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现模型加载方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的模型加载方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的模型加载方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处,需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
本申请在上述运行环境下运行如图2所示的一种模型加载方法。图2是根据本申请实施例的模型加载方法的流程图,该方法可以包括:
步骤S202:接收加载目标对象的模型的指令;
在上述步骤S202中,该指令可以是由用户选择、点击等操作触发以加载指定模型的指令,也可以是电子装置中定时器触发加载的指令。
步骤S204:响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;
在上述步骤S204中,模型数据库中存储有树状结构模型,包括最顶级模型,中间级模型和最底级模型,其中最底级模型可以为单体模型,即每个物体单独形成的模型。针对该模型中的每一级模型,其父级模型为多个当前级别模型合并后得到的合并模型,同理,其子级模型合并后得到当前级别模型。举例来说,要显示的内容中包括:物体1,物体2……物体20这20个物体,其中每个物体均对应建立一个单体模型,即单体模型1,单体模型2……单体模型20。其中,例如单体模型1-5可以合并为合并模型1,合并模型1即称为单体模型1-5的父级模型,单体模型1-5均称为合并模型1的子级模型。继续举例,单体模型6-8合并为合并模型2,单体模型9,18,19合并为合并模型3,单体模型10-13,17合并为合并模型4,单体模型14-16,20合并为合并模型5。因此最底层级别模型的上一个级别中,包含合并模型1-5这五个模型。合并模型1-5可以继续进行合并,例如合并模型1-2合并得到合并模型6,合并模型3-4合并得到合并模型7,从而得到最底层级别模型的上两个级别。继续对得到的模型进行合并,直至不能合并,例如合并模型6,7,5最终合并得到合并模型8,此时可以得到树状结构模型中的最顶级模型。在一种优选方式中,所有模型最终汇聚成一个根节点,即最顶级模型只有一个,从而得到完整的树状结构。在其他实施方式中,合并操作可以在任一级别终止,即最顶级模型可以为多个,也能视为树状结构。
在上述步骤S204中,每一级模型合并后均进行精简和优化,从而使得父级模型的数据量小于其所包含的多个子级模型的数据量的组合。在一种实施例中,指定级别模型可以为最顶级模型,从而可以在接收到加载指令时迅速响应,以最小的数据量完成渲染。或者,指定级别模型可以树状结构模型中的任一级模型。因而,对应于指定级别模型可以为最顶级模型的方案,指定级别模型可以为一个;对应于指定级别模型为树状结构模型中除最顶级模型之外的任一级模型,指定级别模型可以为多个。指定级别模型中的每一个均有对应的边缘向量。
步骤S206:加载指定级别模型,计算指定级别模型和相机之间的距离。
在上述步骤S206中,当指定级别模型可以为多个时,计算指定级别模型中的每一个与相机之间的距离。指定级别模型和相机之间的距离具体可以为指定级别模型和相机世界坐标的距离,记为dis。
步骤S208:根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重。
在上述步骤S208中,指定级别模型的边缘向量为指定级别模型的AABB包围盒boundbox的顶点坐标向量。指定级别模型在相机视野范围内所占的权重例如为指定级别模型在相机视野中的面积占比,表征着该级别模型在当前视野中的重要程度,权重越高,表示指定级别模型在相机视野范围内越重要,从而需要对指定级别模型进行更精确的显示。
步骤S210:根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
在上述步骤S210中,对于权重较高的指定级别模型,从树状结构模型中确定该指定级别模型包含的多个子级模型,并加载多个子级模型来替换显示权重较高的指定级别模型。对于权重较低的指定级别模型,则无需对其进行更精确的显示,甚至,可以采用多个权重较低的指定级别模型对应的父级模型,来代替该多个权重较低的指定级别模型。
在本申请实施例中,通过在模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;同时计算目标对象的指定级别模型在相机视野范围内所占的权重;从而使得在权重大于预设阈值时,从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型,加快了模型的加载速度,同时又保证了模型的显示精度,提高模型加载效率。
在上述步骤S208中,根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重包括:
根据指定级别模型的边缘向量,计算该指定级别模型的大小,记为s1;
计算相机视野范围的大小,记为s2;
根据如下公式计算指定级别模型在相机视野范围内所占的权重:权重=s1/(s2*dis),从该公式中可以看出,当相机视野范围s2大时,模型所占的权重小,反之当相机视野范围s2小时,模型所占的权重大;当指定级别模型和相机之间的距离近时,模型所占的权重大,反之当指定级别模型和相机之间的距离远时,模型所占的权重小。
其中,相机视野阀内的大小可根据当前相机视锥体的张角、远裁面长宽比参数通过计算获得。指定级别模型的大小可以直接从模型数据库中的threshold字段获取,也可以通过模型的边缘向量进行计算。
在一种具体实施方式中,通过如下公式计算权重:权重= threshold/(sse*dis),其中,threshold为模型数据库中存储的与该模型对应的模型大小字段,sse可根据当前相机视锥体的张角、远裁面长宽比参数通过计算获得,dis为指定级别模型和相机世界坐标的距离。可以看出,dis表示近大远小,sse表示视野大则物体小。
在一种具体实施方式中,指定级别模型的边缘向量为该指定级别模型的AABB包围盒的顶点坐标向量,因而,可以通过如下方式计算指定级别模型的大小s1:根据指定级别模型的AABB包围盒的顶点坐标向量,计算该AABB包围盒的对角线长度;确定该指定级别模型的调整系数,根据该对角线长度和调整系数的乘积,确定该指定级别模型的面积。其中,调整系数可以为预设的固定值,例如在0.6-0.8之间,或者,调整系数与该指定级别模型的级别相对应,这是一种动态设置的方式,例如,当指定级别模型是最顶级模型时,为了尽可能的细化模型,可将调整系数设为较大的值a,以便于权重值较为轻易的大于预设阈值,当指定级别模型是中间级别时,可将调整系数设为中间值b,当该指定级别模型是偏向底层模型时,可以将调整系数设为较小的值c,直至最底层模型的调整系数为最小值d。这一针对每一级模型设置一个调整系数。又或者,调整系数与该指定级别模型的类别相对应,对于显示系统中的核心类别模型,可以设置较高的调整系数,以便于权重值较为轻易的大于预设阈值,对于显示系统中的相关性低、或较为普遍的类别模型,设置较低的调整系数。
本申请在上述运行环境下运行如图3所示的一种树状结构模型生成方法。图3是根据本申请实施例的树状结构模型生成的流程图,该方法可以包括:
步骤S300:确定显示系统中包含的所有单体模型;
举例来说,要显示的系统中包括:物体1,物体2……物体20这20个物体,其中每个物体均对应建立一个单体模型,即单体模型1,单体模型2……单体模型20。
步骤S302:将每一个单体模型作为最底级模型,存入树状结构模型中;
举例来说,将单体模型1,单体模型2……单体模型20存入树状结构模型的最底级模型,例如树状结构的叶子节点。
步骤S304:根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;
举例来说,可以根据所有单体模型所处的位置对这些模型进行分组,例如将同一区域内的模型划分为同一组,以便合并为一个合并模型。例如,按照如下方式将模型划分为五个组:单体模型1-5为一组,单体模型6-8为一组,单体模型9,18,19为一组,单体模型10-13,17为一组,单体模型14-16,20为一组。对每个组内的单体模型进行合并,例如将单体模型1-5合并为合并模型1,合并模型1即称为单体模型1-5的父级模型,单体模型1-5均称为合并模型1的子级模型。单体模型6-8合并为合并模型2,单体模型9,18,19合并为合并模型3,单体模型10-13,17合并为合并模型4,单体模型14-16,20合并为合并模型5。将合并模型1-5存入树状结构模型中,即最底层级别模型的上一个级别的模型。举例来说,可以通过树形空间划分算法对模型进行分组,树形空间划分算法基于八叉树算法进行,目的是通过对三维空间分块管理,构件树状的检索结构。将模型分割在不同的空间块内,再对同一空间内的模型进行优化。
步骤S306:判断合并得到的所有模型是否能继续分组和合并;步骤S308:若是,则对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;
举例来说,判断合并模型1-5是否可以继续分组和合并,可从模型位置和模型数据量均衡的角度综合判断,例如合并模型1-2可划分为一组,合并模型3-4可划分为一组,合并模型5自成一组,如此,合并模型1-2合并得到合并模型6,合并模型3-4合并得到合并模型7,将合并模型6,7存入树状结构模型中。并继续判断合并模型6,7,5是否能继续合并,在第一种实施例中,合并模型6,7,5不能继续分组合并,在第二种实施例中,合并模型6,7,5最终合并得到合并模型8,则继续判断合并模型8是否可继续分组合并,由于合并模型8只有一个,则判断无法继续合并分组。步骤S310:若否,则将合并得到的所有模型作为树状结构的最顶级模型。
举例来说,在上述第一种实施例中,由于合并模型6,7,5不能继续分组合并,则将合并模型6,7,5存入树状结构模型中的最顶级模型,即根节点位置,在这种实施例中,合并操作可以在任一级别终止,即最顶级模型可以为多个,也能视为树状结构。在上述第二种实施例中,合并模型8不能继续分组合并,则将合并模型8存入树状结构模型中的最顶级模型,即根节点位置,在这种实施例中,所有模型最终汇聚成一个根节点,即最顶级模型只有一个,从而得到完整的树状结构。
在一种可选方式中,该树状结构模型中的每一个模型可通过如下多个字段的方式存储:
id, transform, threshold, url, boundingBox(x1,y1,z1,x2,y2,z2), parent(id), children[id]。
其中,id为节点标识,transform定义模型位置,即模型在三维空间中的渲染位置,包括位置坐标,旋转,缩放等,threshold定义模型大小,url为模型在硬盘上的存储路径,例如:/models/1/1.fbx,通过url可加载对应模型,boundingBox (x1,y1,z1,x2,y2,z2)为模型的边缘向量,例如boundbox包围盒的顶点坐标向量,parent(id)为当前模型的父级模型标识,children[id]为当前模型的子级模型标识。可通过id检索节点。
在一种可选方式中,threshold字段可通过如下方式计算:首先计算该模型的AABB包围盒的对角线长度,该对角线长度与预设系数的乘积可作为该模型的threshold。预设系数例如在0.6-0.8之间。
在一种可选方式中,步骤S304:根据预设算法将所有单体模型进行分组包括:基于八叉树算法对模型进行分组,目的是通过对三维空间分块管理,构件树状的检索结构。将模型分割在不同的空间块内,再对同一空间内的模型进行优化。
在一种可选方式中,步骤S304:根据预设算法将所有单体模型进行分组包括:
步骤S3041:获取所有单体模型的位置;
步骤S3042:确定第一单体模型,并以第一单体模型为中心,计算其余单体模型与第一单体模型之间的距离,其中,第一单体模型为所有单体模型中的任一个;
步骤S3043:将距离小于预设阈值的其余单体模型与第一单体模型分为一组。
在一种可选方式中,步骤S304:根据预设算法将所有单体模型进行分组包括:
步骤S3044:确定所有单体模型的类别;
步骤S3045:将同一类别的单体模型分为一组。
通过上述步骤S3044-S3045,在分组时可以考虑单体模型的类别,从而可以在一定程度上忽略模型所处的位置,而将一些零散分布的、同质的模型集中起来,例如对于城市模型中的管道,模型面积小、分布广,如果按照位置区域分组,则不仅分组数据杂乱,且不利于管道的加载和显示。
在一种可选方式中,步骤S304:根据预设算法将所有单体模型进行分组包括:
步骤S3046:获取所有单体模型的位置和类别;
步骤S3047:判断每个单体模型的类别是否为指定类别;
步骤S3048:若是,则将同一指定类别的单体模型划分为一组;
步骤S3049:若否,则计算当前单体模型与第二单体模型之间的距离,将距离小于预设阈值的单体模型划至第二单体模型所属的分组,其中,第二单体模型为非指定类别的单体模型中的任一个。
通过上述步骤S3046-S3049,首先筛选出指定类别的单体模型,将每种指定类别的模型归为一组,其中指定类别的数量可以为一个,也可以为多个。在将指定类别的模型分组后,对于剩余的单体模型,按照区域将其分为若干组。提高了模型分组合并的准确度和灵活度。
在上述步骤S304中,在对每一组内包含的多个单体模型进行合并之后,方法还包括:对合并后的模型进行简化,使得合并模型的数据量远小于其下属的多个单体模型的数据量。具体的简化步骤可包括:1)多个模型进行合并,2)减少模型面数,3)合并模型使用的材质,简化贴图,4) 删减模型。在具体实施时,可以使用3DMax完成上述操作。
在一种可选方式中,步骤S306:判断合并得到的所有模型是否能继续分组和合并包括:从未被分组的模型中确定第二单体模型,并以第二单体模型为中心,计算其余单体模型与第二单体模型之间的距离,当存在距离小于预设阈值的其他单体模型时,认为合并得到的所有模型能继续分组和合并,当不存在距离小于预设阈值的其他单体模型时,认为合并得到的所有模型不能继续分组和合并。
进一步地,步骤S204:根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型包括:
步骤S2042:当权重大于第一预设阈值时,判断指定级别模型是否为树状结构模型中的最底级模型,
步骤S2044:若否,则从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型;
步骤S2046:当权重小于第二预设阈值时,判断指定级别模型是否为树状结构模型中的最顶级模型,
步骤S2048:若否,则从模型数据库中读取并加载指定级别模型的父级模型来替换指定级别模型。
在上述步骤S2042-S2048中,第一预设阈值大于或等于第二预设阈值。也就是说第一预设阈值与第二预设阈值可以相同,也可以不同。在第一预设阈值与第二预设阈值不同的情况下,第一预设阈值例如是第二预设阈值的两倍。
进一步地,步骤S204:根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型包括:
步骤S2049:当权重小于第一预设阈值且大于第二预设阈值时,维持指定级别模型。例如,预设值max = 0.5,预设值min = 0.25,if 权重 > 预设值max,加载子级模型;else if 权重 < 预设值min,加载父级模型 ;else 保持现状。预设值在项目里设置,max和min直接一般差一倍。
在一种可选实施例中,第一预设阈值和第二预设阈值与该指定级别模型的级别相对应,这是一种动态设置的方式,例如,当指定级别模型是最顶级模型时,为了尽可能的细化模型,可将第一预设阈值设为最小的值,以便于权重值最为轻易的大于该第一预设阈值,从而选择其子级模型进行加载细化。当指定级别模型是偏向顶级模型的中间级别时,可将第一预设阈值设为较小的值,并增大第一预设阈值与第二预设阈值之间的差距,使得权重值较为轻易的大于该第一预设阈值,且较为困难的小于该第二预设阈值,从而避免在模型加载过程过早的停止或向父级模型过度,造成模型无法充分向子级模型进行细化。当指定级别模型是偏向最底级模型的中间级别时,可将第一预设阈值设为较大的值,并增大第一预设阈值与第二预设阈值之间的差距,使得权重值较为困难的大于该第一预设阈值,且较为困难的小于该第二预设阈值,也就是说较为容易的停留在第一预设阈值与第二预设阈值之间,从而使模型级别尽可能的维持现状,避免模型过度加载造成系统负荷大。当指定级别模型是最底级模型时,为了尽可能简化模型,可将第二预设阈值设为较大的值,以便于权重值最为轻易的小于该第二预设阈值,从而选择其父级模型进行模型简化。
在一种可选实施例中,该方法应用于计算设备中,在步骤S2042:当权重大于第一预设阈值时,判断指定级别模型是否为树状结构模型中的最底级模型之前,步骤S204还包括:获取计算设备中处理器的占用率,根据占用率设置第一预设阈值与第二预设阈值。
例如,设置第一预设阈值、第二预设阈值均与处理器的占用率正相关。通过这种设置,使得在处理器占用率高的情况下,将第一预设阈值与第二预设阈值也相应设置为较高的值,以便权重值不容易大于该第一预设阈值,且较容易小于第二预设阈值,从而避免模型过度向子级模型细化造成的系统负担,促使模型向其父级模型过度,简化模型加载的数据量。
又例如,设置第一预设阈值与第二预设阈值之间的差值与处理器的占用率正相关。通过这种设置,使得在处理器占用率高的情况下,将第一预设阈值与第二预设阈值之间的差值设置的较大,使得权重值易于处在第一预设阈值与第二预设阈值之间的区间,从而易于维持模型现状,减少对模型的操作。
又例如,设置第一预设阈值的基准值与第二预设阈值的基准值,以及根据处理器的占用率设置调整系数,将调整系数与第一预设阈值的基准值的乘积作为第一预设阈值,将调整系数与第二预设阈值的基准值的乘积作为第二预设阈值,其中,根据处理器的占用率设置调整系数包括:当处理器占用率大于第一占用率阈值时,设置第一调整系数,当处理器占用率小于第一占用率阈值且大于第二占用率阈值时,设置第二调整系数,当处理器占用率小于第二占用率阈值时,设置第三调整系数。其中,第一占用率阈值>第二占用率阈值,第一调整系数>第二调整系数>第三调整系数。通过这种设置,使得在处理占用率高的情况下,将第一预设阈值与第二预设阈值也相应设置为较高的值,以便权重值不容易大于该第一预设阈值,且较容易小于第二预设阈值,从而避免模型过度向子级模型细化造成的系统负担,促使模型向其父级模型过度,简化模型加载的数据量。图4是根据本申请实施例的一种树状结构模型的示意图;如图4所示,root节点为该树状结构模型的最顶级模型,其包括两个子级模型children1,每一个子级模型children1又分别包含两个子级模型children2。
进一步地,指定级别模型的边缘向量为指定级别模型的AABB包围盒的顶点坐标向量。
具体的,包围盒算法是一种求解离散点集最优包围空间的方法。基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。最常见的包围盒算法有AABB包围盒(Axis-aligned bounding box),它被定义为包含该对象,且边平行于坐标轴的最小六面体。故描述一个AABB,仅需六个标量。AABB的重要性质:Ymin <= Y <=Ymax,Zmin <= Z <= Zmax,特别重要的两个顶点为:Pmin = [Xmin Ymin Zmin],Pmax = [Xmax Ymax Zmax],因而可以构建包含Xmin,Ymin,Zmin,Xmax,Ymax,Zmax的顶点坐标向量,用于表征该模型的位置和尺寸。
进一步地,在步骤S210:根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型之后,方法还包括:
步骤S212:接收针对目标对象中第一位置的选择操作,其中目标对象中显示有至少一个当前模型;
举例来说,该选择操作可以为针对第一位置的点击操作、圈选操作等等。在一种优选方式中,可以实时跟踪用户视线焦点,当用户视线焦点在第一位置停留时间超过阈值时,则确认用户发出了针对第一位置的选择操作。目标对象包括显示界面上当前显示的至少一个当前模型。
步骤S214:确定第一位置处第一对象的最底级模型以及包含该第一位置的当前模型的级别;
举例来说,在执行完步骤S210之后,用户选择的第一位置处第一对象所属的当前模型,即包含该第一位置的当前模型,可能是树状结构模型中的任一级模型,在某些情况下,包含该第一位置的当前模型可能为合并了多次之后的合并模型,其数据量在经过多次合并优化之后逐渐减少,其模型细节也相应减少,因而用户选择的第一位置处对应的第一对象可能只是当前模型的其中一小部分。当用户选择第一位置时,则表示用户期望看到第一位置处对应的第一对象的更多细节,而非只是裹挟在合并模型中的模糊图像,因此,需要从树状结构模型中找到包含第一位置处第一对象的最底级模型,以将第一位置处的第一对象进行最详尽的展示。另外,如果不对第一位置处对应的对象周围的其余对象做处理,则可能造成第一位置处对应的对象与其周围对象的清晰度差别过大,影响用户体验,因而还需要先确定包含该第一位置的当前模型的级别,从而可选择该级别的子级模型对第一位置处对应的对象的周围对象进行渲染,以实现模型更好的融合。
步骤S216:从模型数据库中加载第一位置处第一对象的最底级模型;
也就是说,从模型数据库中读取并加载第一位置处第一对象的最底级模型,来替换当前模型中第一位置对应的部分,以将第一位置处的第一对象进行最详尽的展示。举例来说,最底级模型可以为该对象的未处理单一模型,例如该对象对应的BIM模型。
步骤S218:从模型数据库中读取当前模型的子级模型,来替换第一对象周边对象的当前模型。
在上述步骤S218中,如果不对第一位置处对应的第一对象周围的其余对象做处理,则可能造成第一位置处对应的对象与其周围对象的清晰度差别过大,影响用户体验,此处选择该级别的子级模型对第一位置处对应的第一对象的周围对象进行渲染,可实现模型更好的融合。
在上述步骤S214中,可以通过8叉数算法确定第一位置处第一对象的最底级模型。具体步骤包括:
步骤S2141:获取第一位置的坐标;
步骤S2142:获取目标对象中所有当前模型的边缘向量;
步骤S2143:根据第一位置的坐标和所有当前模型的边缘向量,从目标对象的所有当前模型中筛选出包含该第一位置的当前模型;
步骤S2144:遍历包含该第一位置的当前模型的子级模型,筛选出包含第一位置的第一子级模型;
步骤S2145:遍历第一子级模型的子级模型,筛选出包含第一位置的第二子级模型,循环遍历,直至筛选出的子级模型无子级模型,即筛选出第一位置处第一对象的最底级模型。
其中,步骤S2143中如果所有当前级别模型中均不包含该第一位置,则认为点击的不是当前显示系统中的模型,结束循环。
通过上述步骤S2141-步骤S2145,可以迅速确定用户点击的模型,并调用该模型对应的最详细的最底级模型来渲染,可以提高模型渲染精度,同时提高了模型渲染效率。
进一步地,在步骤S216:从模型数据库中加载第一位置处第一对象的最底级模型之后,该方法还包括:步骤S217:将第一对象的原始模型进行突出显示。其中突出显示的方式可以为:选择与其他模型不同的颜色进行显示,选择与其他模型不同线条进行显示等等。
在上述步骤S216:从模型数据库中加载第一位置处第一对象的最底级模型之后,方法还包括:获取第一对象的最底级模型的状态参数和/或操作控件并加载显示。例如可以在系统内点击一个灯,获取并显示它的状态参数可以为获取其开关状态、亮度信息、使用时长、检修记录等等,获取并显示它的操作控件可以为显示其开关控件,移动控件,翻转控件等等。
进一步地,该方法应用于计算设备中,计算设备被配置为:响应于加载目标对象的模型的指令,启用渲染进程,渲染进程执行如下操作:响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;加载指定级别模型,计算指定级别模型和相机之间的距离;根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换所述指定级别模型。考虑到这些步骤的数据交互多,将这些步骤均通过渲染进程实现,可以减少进程间的数据交互量,提高处理效率。
进一步地,计算设备还被配置为:响应于针对目标对象中第一位置的选择操作,创建第二线程;通过第二线程执行确定第一位置处第一对象的最底级模型的操作,具体的,通过第二线程执行8叉数算法,即步骤S2141-S2145。第二进程将确定得到的包含该第一位置的第一对象的最底级模型的标识(例如id)存储于缓存中,渲染模型还被配置为从缓存中读取该标识并加载该标识对应的模型。
综上所述,三维引擎中一般只能使用单线程对模型进行渲染等内部相关操作,但并不禁止使用多线程进行非三维引擎内部操作的纯数据计算。此处开启第二线程的原因在于:解决在模型制作时将多个单体合并成一个模型后,在三维引擎中无法直接选取到正确的单体模型,所以在用户选取模型时,就进行8叉树算法计算对应模型,而此操作计算量不小,放在主线程中会造成卡顿,因此新开线程进行计算,然后将计算结果写入缓存区,主线程读取结果。本申请上述步骤开创性的在模型加载过程中,响应于用户选择操作而创建第二线程,通过第二线程确定用户选择的第一位置处对应的第一对象,即通过遍历算法找到包含该位置的最底级模型,从而使渲染进程加载该最底级模型,实现了用户选择模型的最精确显示。
进一步地,在步骤S204:响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量之前,方法还包括:
步骤S2032:确定显示系统中包含的所有单体模型;
步骤S2034:根据预设规则对单体模型进行分组和合并,形成树状结构模型;
步骤S2036:计算树状结构模型中的每一个模型的边缘向量,存入模型数据库中。
进一步地,步骤S2034:根据预设规则对单体模型进行分组和合并,形成树状结构模型包括:
步骤S20340:将每一个单体模型作为最底级模型,存入树状结构模型中;
举例来说,要显示的系统中包括:物体1,物体2……物体20这20个物体,其中每个物体均对应建立一个单体模型,即单体模型1,单体模型2……单体模型20。将单体模型1,单体模型2……单体模型20存入树状结构模型的最底级模型,例如树状结构的叶子节点。
步骤S20342:根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并 ,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;
举例来说,可以根据所有单体模型所处的位置对这些模型进行分组,例如将同一区域内的模型划分为同一组,以便合并为一个合并模型。例如,按照如下方式将模型划分为五个组:单体模型1-5为一组,单体模型6-8为一组,单体模型9,18,19为一组,单体模型10-13,17为一组,单体模型14-16,20为一组。对每个组内的单体模型进行合并,例如将单体模型1-5合并为合并模型1,合并模型1即称为单体模型1-5的父级模型,单体模型1-5均称为合并模型1的子级模型。单体模型6-8合并为合并模型2,单体模型9,18,19合并为合并模型3,单体模型10-13,17合并为合并模型4,单体模型14-16,20合并为合并模型5。将合并模型1-5存入树状结构模型中,即最底层级别模型的上一个级别的模型。
举例来说,可以通过树形空间划分算法对模型进行分组,树形空间划分算法基于八叉树算法进行,目的是通过对三维空间分块管理,构件树状的检索结构。将模型分割在不同的空间块内,再对同一空间内的模型进行优化。步骤S20344:判断合并得到的所有模型是否能继续分组和合并;
步骤S20346:若是,则合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;
举例来说,判断合并模型1-5是否可以继续分组和合并,可从模型位置和模型数据量均衡的角度综合判断,例如合并模型1-2可划分为一组,合并模型3-4可划分为一组,合并模型5自成一组,如此,合并模型1-2合并得到合并模型6,合并模型3-4合并得到合并模型7,将合并模型6,7存入树状结构模型中。并继续判断合并模型6,7,5是否能继续合并,在第一种实施例中,合并模型6,7,5不能继续分组合并,在第二种实施例中,合并模型6,7,5最终合并得到合并模型8,则继续判断合并模型8是否可继续分组合并,由于合并模型8只有一个,则判断无法继续合并分组。
步骤S20348:若否,则将合并得到的所有模型作为树状结构的最顶级模型。
举例来说,在上述第一种实施例中,由于合并模型6,7,5不能继续分组合并,则将合并模型6,7,5存入树状结构模型中的最顶级模型,即根节点位置,在这种实施例中,合并操作可以在任一级别终止,即最顶级模型可以为多个,也能视为树状结构。在上述第二种实施例中,合并模型8不能继续分组合并,则将合并模型8存入树状结构模型中的最顶级模型,即根节点位置,在这种实施例中,所有模型最终汇聚成一个根节点,即最顶级模型只有一个,从而得到完整的树状结构。
上述生成树状结构模型的步骤,可参照步骤S300-S310及这些步骤对应的具体实施方式,囿于篇幅不再赘述。
在一种具体实施方式中,通过如下方式生成树状结构模型:
1. 制作CIM或BIM系统全部3维模型,对每一个模型生成不同的ID编号。(两系统本质相同,以下以BIM机电系统为例)
2. 计算BIM系统内每一个单体模型的AABB包围盒boundbox,数据库录入包围盒顶点p1和p2。
3. 通过树形空间划分算法对模型进行分块和合并(把所处在同一区域内的模型合并为单个模型),编号。并将树状结构记录在数据库中。
4. 对于合并后的模型再次进行精简优化。
5. 计算合并后模型的AABB包围盒,设置每一个模型的权重上限。
在一种具体实施方式中,通过如下方式加载模型:
1. 读取模型数据库,解析数据。加载1级模型进入系统。
2. 计算相机和模型的距离dis。
3. 通过dis和模型的boundbox,计算模型在相机视野范围内所占权重。
4. 对于权重占比高于权重上限的模型,替换为自身的children。如果当前children为树结构叶节点(最后一级),则保持不变。
5. 对于权重占比低于权重上限的模型,替换为自身的上一级节点。
6. 重复步骤2。
7. 模型选取方案:获取鼠标点击位置和点击的模型,通过数据库树结构,遍历获取点击位置周边的模型节点和原始原始模型, 通过8叉树算法快速计算点击的模型。
8. 当需要选取并展示单个模型时,就可将此块模型替换为原始原始模型,周围用子级的模型块填充,实现和原模型一样的效果。
在本申请中,通过合并CIM或原始模型,使模型得到最大程度优化,比如多根相连的管道就可以合并为一根。同时借鉴LOD技术,保留了模型展示效果。同时,通过在数据库中结构树的构建,可以利用八叉树算法快速的定位到模型。在大多数3维引擎都是单线程的,因为大多数3维引擎是主循环结构, 逻辑更新和画面更新的时间点要求有确定性, 如果在逻辑更新和画面更新中引入多线程, 就需要做同步而这加大了开发难度。但是遍历数据库中结构树的操作由于不涉及系统主逻辑和画面更新,因此可以在独立线程中进行,这样就可以大幅提高系统的性能,实现快速定位的同时还不影响画面更新。
上述方案中,通过8叉树算法计算是为了获取点击选取的模型,具体算法为:
1)获取点击位置position。
2)设置根节点为A节点。
3)获取A节点的aabb包围盒,计算position是否包围盒范围内
4)若是,则遍历子节点aabb包围盒,计算position在子节点包围盒范围内,获取次子节点,设置为A节点,返回步骤3。若子节点为空,则当前A节点即为选择的模型,结束循环。
5)若否,则点击的不是本库内的模型,结束循环。
计算模型的目的是为了实现数字孪生,绑定各种参数,提高系统用户体验。例如可以在系统内点击一个灯,获取它的开关状态、亮度信息、使用时长、检修记录等等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的模型加载方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述模型加载方法的模型加载装置,该装置以软件或硬件方式实现于如图1所示的计算机终端。
图5是根据本申请实施例的一种模型加载装置的结构示意图;如图5所示,该装置包括:接收模块5002,读取模块5004,第一计算模块5006,第二计算模块5008,以及加载模块5010,其中:
接收模块5002,用于接收加载目标对象的模型的指令;
读取模块5004,用于响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;
第一计算模块5006,用于加载指定级别模型,计算指定级别模型和相机之间的距离;
第二计算模块5008,用于根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;
加载模块5010,用于根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
在本申请实施例中,通过在模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;同时计算目标对象的指定级别模型在相机视野范围内所占的权重;从而使得在权重大于预设阈值时,从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型,加快了模型的加载速度,同时又保证了模型的显示精度,提高模型加载效率。
图6是根据本申请实施例的一种树状结构模型生成方法的结构示意图。如图6所示,该装置包括:确定单元6002,第一存储单元6004,第二存储单元6006,判断单元6008,第三存储单元6010,第四存储单元6012,其中:
确定单元6002,用于确定显示系统中包含的所有单体模型;
第一存储单元6004,用于将每一个单体模型作为最底级模型,存入树状结构模型中;
第二存储单元6006,用于根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;
判断单元6008,用于判断合并得到的所有模型是否能继续分组和合并;
第三存储单元6010,用于在所有模型能继续分组和合并时,对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并;
第四存储单元6012,用于在所有模型不能继续分组和合并时,将合并得到的所有模型作为树状结构的最顶级模型。
进一步地,加载模块5010被配置为:当权重大于第一预设阈值时,判断指定级别模型是否为树状结构模型中的最底级模型,若否,则从模型数据库中读取并加载指定级别模型的子级模型来替换指定级别模型;当权重小于第二预设阈值时,判断指定级别模型是否为树状结构模型中的最顶级模型,其中,第一预设阈值大于或等于第二预设阈值,若否,则从模型数据库中读取并加载指定级别模型的父级模型来替换指定级别模型。
进一步地,指定级别模型的边缘向量为指定级别模型的AABB包围盒的顶点坐标向量。
进一步地,装置还被配置为:在根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型之后,接收针对目标对象中第一位置的选择操作,其中目标对象中显示有至少一个当前模型;确定第一位置处第一对象的最底级模型,以及包含第一位置的当前模型的级别;从模型数据库中加载第一位置处第一对象的最底级模型;从模型数据库中读取当前模型的子级模型,来替换第一对象周边对象的当前模型。进一步地,该装置以软件或硬件实现于计算设备中,计算设备被配置为:响应于针对所述目标对象中第一位置的选择操作,创建第二线程;通过第二线程执行确定第一位置处第一对象的最底级模型的操作。
进一步地,装置还被配置为:在响应于指令,从模型数据库中读取目标对象的指定级别模型以及指定级别模型的边缘向量之前,确定显示系统中包含的所有单体模型;根据预设规则对单体模型进行分组和合并 ,形成树状结构模型;计算树状结构模型中的每一个模型的边缘向量,存入模型数据库中。
进一步地,根据预设规则对单体模型进行分组和合并,形成树状结构模型包括:将每一个单体模型作为最底级模型,存入树状结构模型中;根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并 ,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断合并得到的所有模型是否能继续分组和合并;若是,则合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;若否,则将合并得到的所有模型作为树状结构的最顶级模型。
此处,需要说明的是,上述装置的各单元、各模块的功能及效果,均可以对应于实施例1中的相应方法步骤,囿于篇幅不再赘述,本申请实施例1中阐述的任一步骤均可通过对应的装置、模块、单元来执行。需要说明的是,上述各单元、各模块作为装置的一部分可以运行在实施例1提供的计算机终端10中。
实施例3
本申请的实施例可以提供一种设备,该设备可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述设备包括一个或多个处理器、存储器、以及传输装置。其中,存储器可用于存储软件程序以及模块,如本申请实施例中的模型加载方法和装置对应的程序指令/模块。处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的模型加载方法。
可选地,存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备120。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在本实施例中,上述设备中的处理器运行存储的程序代码时可以执行以下方法步骤:接收加载目标对象的模型的指令;响应于指令,从模型数据库中读取目标对象的指定级别模型 以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;加载指定级别模型,计算指定级别模型和相机之间的距离;根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
在本实施例中,上述设备中的处理器运行存储的程序代码时可以执行以下方法步骤:确定显示系统中包含的所有单体模型;将每一个单体模型作为最底级模型,存入树状结构模型中;根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断合并得到的所有模型是否能继续分组和合并;若是,则对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;若否,则将合并得到的所有模型作为树状结构的最顶级模型。
进一步地,在本实施例中,上述设备中的处理器运行存储的程序代码时可以执行实施例1中所列举的任一方法步骤,囿于篇幅不再赘述。
实施例4
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述模型加载方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:接收加载目标对象的模型的指令;响应于指令,从模型数据库中读取目标对象的指定级别模型 以及指定级别模型的边缘向量,其中模型数据库中存储有树状结构模型,在树状结构模型中父级模型为其下属的多个子级模型的合并模型;加载指定级别模型,计算指定级别模型和相机之间的距离;根据距离和指定级别模型的边缘向量,计算指定级别模型在相机视野范围内所占的权重;根据权重,从模型数据库中读取并加载指定级别模型的父级模型或子级模型来替换指定级别模型。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定显示系统中包含的所有单体模型;将每一个单体模型作为最底级模型,存入树状结构模型中;根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入树状结构模型中;判断合并得到的所有模型是否能继续分组和合并;若是,则对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;若否,则将合并得到的所有模型作为树状结构的最顶级模型。
进一步地,在本实施例中,存储介质被设置为存储用于执行实施例1中所列举的任一方法步骤的程序代码,囿于篇幅不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (11)
1.一种树状结构模型加载方法,其特征在于,包括:
接收加载目标对象的模型的指令;
响应于所述指令,从模型数据库中读取所述目标对象的指定级别模型以及所述指定级别模型的边缘向量,其中所述模型数据库中存储有树状结构模型,在所述树状结构模型中父级模型为其下属的多个子级模型的合并模型;
加载所述指定级别模型,计算所述指定级别模型和相机之间的距离;
根据所述距离和所述指定级别模型的边缘向量,计算所述指定级别模型在所述相机视野范围内所占的权重;
根据所述权重,从所述模型数据库中读取并加载所述指定级别模型的父级模型或子级模型来替换所述指定级别模型。
2.根据权利要求1所述的方法,其特征在于,根据所述权重,从所述模型数据库中读取并加载所述指定级别模型的父级模型或子级模型来替换所述指定级别模型包括:
当所述权重大于第一预设阈值时,判断所述指定级别模型是否为所述树状结构模型中的最底级模型,
若否,则从模型数据库中读取并加载所述指定级别模型的子级模型来替换所述指定级别模型;
当所述权重小于第二预设阈值时,判断所述指定级别模型是否为所述树状结构模型中的最顶级模型,其中,第一预设阈值大于或等于第二预设阈值,
若否,则从模型数据库中读取并加载所述指定级别模型的父级模型来替换所述指定级别模型。
3.根据权利要求1所述的方法,其特征在于,所述指定级别模型的边缘向量为所述指定级别模型的AABB包围盒的顶点坐标向量。
4.根据权利要求1所述的方法,其特征在于,在根据所述权重,从所述模型数据库中读取并加载所述指定级别模型的父级模型或子级模型来替换所述指定级别模型之后,所述方法还包括:
接收针对所述目标对象中第一位置的选择操作,其中所述目标对象中显示有至少一个当前模型;
确定所述第一位置处第一对象的最底级模型,以及包含所述第一位置的当前模型的级别;
从模型数据库中加载所述第一位置处第一对象的最底级模型;
从模型数据库中读取当前模型的子级模型,来替换第一对象周边对象的当前模型。
5.根据权利要求4所述的方法,其特征在于,所述方法应用于计算设备中,所述计算设备被配置为:响应于针对所述目标对象中第一位置的选择操作,创建第二线程;通过所述第二线程确定第一位置处第一对象的最底级模型。
6.根据权利要求1所述的方法,其特征在于,在响应于所述指令,从模型数据库中读取所述目标对象的指定级别模型以及所述指定级别模型的边缘向量之前,所述方法还包括:
确定显示系统中包含的所有单体模型;
根据预设规则对所述单体模型进行分组和合并,形成所述树状结构模型;
计算所述树状结构模型中的每一个模型的边缘向量,存入所述模型数据库中。
7.根据权利要求6所述的方法,其特征在于,根据预设规则对所述单体模型进行分组和合并,形成所述树状结构模型包括:
将每一个单体模型作为最底级模型,存入所述树状结构模型中;
根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入所述树状结构模型中;
判断合并得到的所有模型是否能继续分组和合并;
若是,则合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入所述树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;
若否,则将合并得到的所有模型作为所述树状结构的最顶级模型。
8.一种树状结构模型生成方法,其特征在于,包括:
确定显示系统中包含的所有单体模型;
将每一个单体模型作为最底级模型,存入所述树状结构模型中;
根据预设算法将所有单体模型进行分组,对每一组内包含的多个单体模型进行合并,将合并得到的模型作为同一组单体模型的父级模型,存入所述树状结构模型中;
判断合并得到的所有模型是否能继续分组和合并;
若是,则对合并得到的所有模型继续分组,对每一组内包含的模型进行合并,将合并得到的模型作为同一组模型的父级模型,存入所述树状结构模型中,并返回执行判断合并得到的所有模型是否能继续分组和合并的步骤;
若否,则将合并得到的所有模型作为所述树状结构的最顶级模型。
9.一种模型加载装置,其特征在于,包括:
接收模块,用于接收加载目标对象的模型的指令;
读取模块,用于响应于所述指令,从模型数据库中读取所述目标对象的指定级别模型以及所述指定级别模型的边缘向量,其中所述模型数据库中存储有树状结构模型,在所述树状结构模型中父级模型为其下属的多个子级模型的合并模型;
第一计算模块,用于加载所述指定级别模型,计算所述指定级别模型和相机之间的距离;
第二计算模块,用于根据所述距离和所述指定级别模型的边缘向量,计算所述指定级别模型在所述相机视野范围内所占的权重;
加载模块,用于根据所述权重,从所述模型数据库中读取并加载所述指定级别模型的父级模型或子级模型来替换所述指定级别模型。
10.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-8任一项所述的方法。
11.一种计算设备,包括处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110278810.3A CN112685429B (zh) | 2021-03-16 | 2021-03-16 | 树状结构模型生成及加载方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110278810.3A CN112685429B (zh) | 2021-03-16 | 2021-03-16 | 树状结构模型生成及加载方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685429A true CN112685429A (zh) | 2021-04-20 |
CN112685429B CN112685429B (zh) | 2021-06-08 |
Family
ID=75455622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110278810.3A Active CN112685429B (zh) | 2021-03-16 | 2021-03-16 | 树状结构模型生成及加载方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685429B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898276A (zh) * | 2020-08-04 | 2020-11-06 | 中国南方电网有限责任公司 | 架空线路的模型处理方法、装置、计算机设备和介质 |
CN113935097A (zh) * | 2021-10-26 | 2022-01-14 | 山东同圆数字科技有限公司 | 一种基于bim引擎数据的建筑空间分析方法及系统 |
CN114185697A (zh) * | 2021-12-01 | 2022-03-15 | 成都小步创想慧联科技有限公司 | 一种基于worker实现three.js异步加载3D模型的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004710A1 (en) * | 2000-04-20 | 2002-01-10 | Ibm | Shape analysis system, difference detection system for three-dimensional model, similar shape search system, shape analysis method, difference detection method for three-dimensional model, siomilar shape search method, and storage medium and program transmission apparatus therefor |
CN101655993A (zh) * | 2008-08-20 | 2010-02-24 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN101996242A (zh) * | 2010-11-02 | 2011-03-30 | 江西师范大学 | 基于三维r树索引扩展结构的三维城市模型自适应方法 |
CN106327572A (zh) * | 2016-08-23 | 2017-01-11 | 网易(杭州)网络有限公司 | 一种三维场景中模型合并的方法及装置 |
CN110189396A (zh) * | 2019-06-10 | 2019-08-30 | 浙江科澜信息技术有限公司 | 一种基于视觉的场景图构建方法、系统及相关装置 |
CN111105491A (zh) * | 2019-11-25 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111275826A (zh) * | 2020-02-24 | 2020-06-12 | 广州视革科技有限公司 | 一种适用于ar情景的三维模型自动转换方法 |
CN112419498A (zh) * | 2020-11-14 | 2021-02-26 | 中国科学院电子学研究所苏州研究院 | 一种海量倾斜摄影数据的调度渲染方法 |
-
2021
- 2021-03-16 CN CN202110278810.3A patent/CN112685429B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020004710A1 (en) * | 2000-04-20 | 2002-01-10 | Ibm | Shape analysis system, difference detection system for three-dimensional model, similar shape search system, shape analysis method, difference detection method for three-dimensional model, siomilar shape search method, and storage medium and program transmission apparatus therefor |
CN101655993A (zh) * | 2008-08-20 | 2010-02-24 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN101996242A (zh) * | 2010-11-02 | 2011-03-30 | 江西师范大学 | 基于三维r树索引扩展结构的三维城市模型自适应方法 |
CN106327572A (zh) * | 2016-08-23 | 2017-01-11 | 网易(杭州)网络有限公司 | 一种三维场景中模型合并的方法及装置 |
CN110189396A (zh) * | 2019-06-10 | 2019-08-30 | 浙江科澜信息技术有限公司 | 一种基于视觉的场景图构建方法、系统及相关装置 |
CN111105491A (zh) * | 2019-11-25 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111275826A (zh) * | 2020-02-24 | 2020-06-12 | 广州视革科技有限公司 | 一种适用于ar情景的三维模型自动转换方法 |
CN112419498A (zh) * | 2020-11-14 | 2021-02-26 | 中国科学院电子学研究所苏州研究院 | 一种海量倾斜摄影数据的调度渲染方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898276A (zh) * | 2020-08-04 | 2020-11-06 | 中国南方电网有限责任公司 | 架空线路的模型处理方法、装置、计算机设备和介质 |
CN111898276B (zh) * | 2020-08-04 | 2024-08-09 | 南方电网数字电网科技(广东)有限公司 | 架空线路的模型处理方法、装置、计算机设备和介质 |
CN113935097A (zh) * | 2021-10-26 | 2022-01-14 | 山东同圆数字科技有限公司 | 一种基于bim引擎数据的建筑空间分析方法及系统 |
CN114185697A (zh) * | 2021-12-01 | 2022-03-15 | 成都小步创想慧联科技有限公司 | 一种基于worker实现three.js异步加载3D模型的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112685429B (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685429B (zh) | 树状结构模型生成及加载方法、装置、存储介质及设备 | |
US9779479B1 (en) | Virtual reality streaming | |
CN106898047B (zh) | 倾斜模型和多元模型动态融合的自适应网络可视化方法 | |
CN103093499B (zh) | 一种适用于网络传输的城市三维模型数据组织方法 | |
KR101546703B1 (ko) | 대용량 건물 bim데이터의 시각화 시스템 | |
WO2022121525A1 (zh) | 三维场景数据的渲染方法及装置、存储介质、电子装置 | |
US9208610B2 (en) | Alternate scene representations for optimizing rendering of computer graphics | |
US9311748B2 (en) | Method and system for generating and storing data objects for multi-resolution geometry in a three dimensional model | |
CN103871102A (zh) | 一种基于高程点和道路轮廓面的道路三维精细建模方法 | |
CN104699946B (zh) | 一种游戏场景的管理方法及装置 | |
CN105160707A (zh) | 基于视点索引的三维模型快速可视化方法 | |
CN113112603A (zh) | 三维模型优化的方法和装置 | |
US11380044B2 (en) | Methods and systems for volumetric reconstruction based on a confidence field | |
CN115578536A (zh) | 一种分层分块三维模型节点合并方法、装置和电子装置 | |
Rivara | Lepp-bisection algorithms, applications and mathematical properties | |
WO2024131205A1 (zh) | 预计算单元格显示方法、预计算单元格生成方法及装置 | |
US9898873B2 (en) | Methods and systems for processing 3D graphic objects at a content processor | |
He et al. | All range and heterogeneous multi-scale 3D city models | |
CN114863040B (zh) | 纹理密集三维场景的lod树构建方法、装置和电子设备 | |
CN113713381B (zh) | 对象管理方法、装置、设备、存储介质及系统 | |
Li et al. | A fast fusion method for multi-videos with three-dimensional GIS scenes | |
CN114494623A (zh) | 基于lod的地形渲染方法及装置 | |
Chen et al. | Data-driven Reconstruction for Massive Buildings within Urban Scenarios: A Case Study | |
CN117953181B (zh) | 一种面向web3d的顶点分层与增量式lod方法及系统 | |
Yang et al. | Large scale terrain real-time rendering on GPU using double layers tile quad tree and cuboids bounding error metric |
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 |