本技术涉及建筑建模,具体涉及一种线性工程模型的轻量化加载方法、计算机设备及可读存储介质。
背景技术:
1、线性工程(linear engineering)指的是一系列在时间和空间上呈现出线性特征的基础建设项目,如铁路、公路、石油与燃气管线、渠道、管道、城市综合管网、输电线及索道工程等。在工程领域有许多建模模型是线性工程,比如桥梁模型,铁轨模型等。
2、由于线性工程模型通常包含大量的顶点信息、法向量信息以及纹理信息形成静态资源文件,其模型的数据文件通常体积庞大。现有的网页加载线性工程模型技术通常是一次性加载所有构件并显示,使模型的加载时间显著增加,占用大量的内存和cpu资源,导致页面响应延迟直至浏览器崩溃,不仅严重影响用户的使用体验,还可能导致模型无法正常加载而无法使用。
3、因此,如何高效地加载线性工程模型提升用户操作体验,是一个亟待解决的问题。
技术实现思路
1、本发明的目的之一在于克服以上缺点,提供一种线性工程模型的轻量化加载方法,可根据可视范围的变化动态加载节点数据,减少内存占用率,提高用户操作体验。
2、为了解决上述技术问题,本发明提供了一种线性工程模型的轻量化加载方法,包括以下步骤:
3、s1、从线性工程模型中提取所有的构件信息,所述构件信息包括属性信息、几何信息以及材质信息;
4、s2、根据所述构件信息构建模型结构树,所述模型结构树由根节点以及所述根节点下的多级分类节点组成;
5、s3、生成所述模型结构树中每个节点对应的节点数据文件;
6、s4、生成所述模型结构树的数据组织文件;
7、s5、渲染引擎加载所述数据组织文件初始化线性工程模型;渲染引擎加载所述模型结构树的根节点对应的节点数据文件;
8、s6、渲染引擎计算所有分类节点的屏幕空间误差sse,计算公式为:
9、sse = ( g* h)/( d* s),其中, g表示当前分类节点预设的几何度量误差值, h表示屏幕的高度像素值, s表示固定参数值; d表示屏幕中心点到当前分类节点包围盒中心点的距离;
10、s7、遍历所有分类节点进行处理,若当前分类节点的屏幕空间误差sse小于预设的屏幕空间误差阈值,则加载当前分类节点对应的节点数据文件,否则,卸载当前分类节点的节点数据文件。
11、本技术的技术方案,将线性工程模型的构件数据组织成为模型结构树的形式,并将构件数据按照节点进行分别存储,在模型渲染处理时,可以根据可视范围的变化动态加载或卸载所需的节点构件数据,达到减少内存占用,提高加载效率的效果。
12、进一步地,所述根据所述构件信息构建模型结构树,包括以下步骤:
13、s21、创建所述模型结构树的根节点;计算并分配所述根节点包含的构件;
14、s22、按照构件类型数量创建所述根节点下每个类型的分类根节点;
15、s23、根据每种类型未分配构件的数量为每个分类根节点生成分类子节点;
16、s24、将每种类型未分配构件分配到对应的每个分类节点上;
17、s25、计算每个分类节点的包围盒体积,所述分类节点的包围盒是指包含该分类节点分配的所有构件的最小长方体。
18、本技术的技术方案,将线性工程模型的构件数据组织成为模型结构树的形式,并按照构件类型生成子树,每个分类子节点只处理相同类型的构件,可提高相同构件数据的存储检索效率。
19、进一步地,所述计算并分配所述根节点包含的构件,具体为:
20、s211、计算每个构件的包围盒体积,所述包围盒是指包含该构件所有顶点的最小长方体;
21、s212、计算总包围盒体积,所述总包围盒是指包含所有构件的最小长方体;
22、s213、将构件按照包围盒体积从大到小顺序排序;
23、s214、将包围盒体积大于总包围盒体积一半的构件分配给所述根节点;
24、s215、若分配给所述根节点的构件数量小于预设的第一阈值,则按照包围盒体积从大到小取不足数量的构件分配给所述根节点。
25、本技术的技术方案,根据构件包围盒的大小排序后,将大的构件优先分配给根节点,使得在模型初始化时候载入根节点的构件能够展示出整个模型的主体轮廓。
26、进一步地,所述根据每种类型未分配构件的数量为每个分类根节点生成分类子节点,具体为:
27、s231、计算每个分类节点的分配构件数量 q,计算公式为: q=m/n,其中, m为当前类型未分配构件的数量, n为当前类型的分类节点数量;
28、s232、判断所述分配构件数量 q是否小于第二阈值,若是,执行步骤s234,否则执行步骤s233;
29、s233、为最末级的分类节点生成下一级的子节点;跳转至步骤s231继续执行;
30、s234、结束处理。
31、进一步地,所述生成所述模型结构树中每个节点对应的节点数据文件,具体为:
32、s31、为节点内几何信息以及材质信息均相同的构件生成实例化构件数据文件;所述实例化构件数据文件内容包括构件的几何信息、材质信息以及每个构件的位移矩阵信息;
33、s32、为其他构件分别生成非实例化构件数据文件;
34、s33、将所述实例化构件数据文件和所述非实例化构件数据文件汇总为节点数据文件。
35、本技术的技术方案,如果节点内的构件的几何信息以及材质信息均相同,则只需要存储一次几何信息数据和材质信息,后续可通过几何数据、材质信息加上位移矩阵信息来生成每个实例化构件,实现减少数据传输和存储开销的目的。
36、进一步地,所述的线性工程模型的轻量化加载方法,还包括以下步骤:
37、使用几何信息压缩算法对所述实例化构件数据文件以及非实例化构件数据文件进行压缩。
38、相应地,本技术还提供了一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述线性工程模型的轻量化加载方法的步骤。
39、相应地,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一项所述线性工程模型的轻量化加载方法的步骤。
40、相对于现有技术而言,本技术的技术方案的优点包括:
41、1.将线性工程模型的构件数据组织成为模型结构树的形式,并将构件数据按照节点进行分别存储,在模型渲染处理时,可以根据可视范围的变化动态加载或卸载所需的节点构件数据,达到减少内存占用,提高加载效率的效果。
42、2.模型结构树按照构件类型生成子树,每个分类子节点只处理相同类型的构件,可提高相同构件数据的存储检索效率。如果节点内的构件的几何信息以及材质信息均相同,则只需要存储一次几何信息数据和材质信息,后续可通过几何数据、材质信息加上位移矩阵信息来生成每个实例化构件,实现减少数据传输和存储开销的目的。
43、3.根据构件包围盒的大小排序后,将大的构件优先分配给根节点,使得在模型初始化时候载入根节点的构件能够展示出整个模型的主体轮廓。