System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于有向无环图和无锁多线程模式的3D模型处理方法技术_技高网

基于有向无环图和无锁多线程模式的3D模型处理方法技术

技术编号:40493641 阅读:6 留言:0更新日期:2024-02-26 19:23
本发明专利技术提供了一种基于有向无环图和无锁多线程模式的3D模型处理方法,包括:步骤S101,获取3D模型设计文件;步骤S102,解析3D模型设计文件,确定相关联的模型中的父模型和子模型;步骤S103,构建有向无环图,将相关联的模型对应的节点相连接,从父模型的节点指向子模型的节点;步骤S104,对节点进行分级,根据所述有向无环图将节点分为多级:步骤S105,统计每一级别的节点数量;步骤S106,逐级以无锁多线程模式对所有的节点对应的模型进行构建、细化和渲染。本方法利用模型之间的依赖关系来构建有向无环图,然后利用有向无环图的特点,使用多线程分级处理模型对同级节点对应的模型进行构建、细化和渲染,以提高模型加载效率。

【技术实现步骤摘要】

本专利技术涉及3d模型构建,更具体地说,涉及一种基于有向无环图和无锁多线程模式的3d模型处理方法。


技术介绍

1、目前主流的cad软件通常采用参数化建模技术。例如,对于一个几何实体如立方体,其相关数据,包括三维位置、尺寸参数等,存储在模型文件中。在cad工具导入这样的模型文件时,会经历一系列复杂的过程,包括文件解析、几何模型的重建、细化处理以及最终的渲染。这些步骤旨在确保准确还原模型的几何特征,并最终在用户屏幕上以高质量的图形呈现。

2、在处理庞大而复杂结构的模型文件时,特别是在模型通过布尔运算、拉伸、扫掠等几何操作相互生成的情况下,若整个流程采用线性处理方式,加载时间会随模型文件的增大呈指数级增长。一些cad软件为了简便起见,未充分分析模型间的依赖关系,也未充分利用现代计算机多核处理的能力。在处理流程中仅采用单线程,导致在加载模型过程中,用户等待时间过长,且ui界面陷入卡死状态。这严重削弱了软件的实用性,影响用户体验。

3、对于复合模型,由于存在明确的依赖关系,模型的构建涉及到一定的先后顺序,而且这些顺序通常是单向的。为了高效处理这些依赖关系,可以通过深入分析模型间的结构和依赖,采用拓扑排序等算法来确定构建的顺序。这有助于确保在建模过程中,先构建的部分能够满足后续部分的依赖关系,提高整体构建的效率。


技术实现思路

1、本专利技术提供一种基于有向无环图和无锁多线程模式的3d模型处理方法,利用模型之间的依赖关系来构建有向无环图,然后利用有向无环图的特点,使用多线程分层来处理模型的构建、细化和渲染,提高模型加载效率。

2、为实现上述目的,本专利技术提供了一种基于有向无环图和无锁多线程模式的3d模型处理方法,包括:

3、步骤s101,获取3d模型设计文件;

4、步骤s102,解析3d模型设计文件,根据解析的结果确定相关联的模型,并确定相关联的模型中的父模型和子模型;

5、步骤s103,构建有向无环图,其中,有向无环图的节点和模型对应,有向无环图的边为单向边,边将相关联的模型对应的节点相连接,从父模型的节点指向子模型的节点;

6、步骤s104,对节点进行分级,根据所述有向无环图将节点分为多级:

7、初始节点为:仅有从该节点出发的边而没有指向该节点的边;

8、次级节点为:有指向该节点的边,其中次级节点的级别根据该次级节点的所有父模型节点的级别确定,所有父模型节点的级别中取最大值n,该次级节点的级别为n+1;

9、步骤s105,统计节点数量,统计每一级别的节点的数量;

10、步骤s106,以无锁多线程模式进行模型处理,逐级对所有的节点对应的模型进行处理,其中同一级别的节点以无锁多线程模式处理,对模型进行处理包括对模型进行构建、细化和渲染。

11、在一个实施例中,该方法还包括,在步骤s103之后,对构建的有向无环图进行可视化呈现,所述可视化呈现通过graphviz图形工具实现。

12、在一个实施例中,步骤s104中,根据所述有向无环图将节点分为三级:

13、一级节点为初始节点,既仅有从该节点出发的边而没有指向该节点的边;

14、二级节点为:有指向该节点的边,该节点的所有父模型节点的均为一级节点;

15、三级节点为:有指向该节点的边,该节点的父模型节点中有至少一个节点为二级节点。

16、在一个实施例中,步骤s105中,根据节点的边来统计节点的数量,先确定一级节点的数量,再由每一个一级节点按照边的指向逐级遍历,统计所有源自该一级节点的次级节点,遍历所有的一级节点以完成所有节点数量的统计。

17、在一个实施例中,步骤s106中,无锁多线程处理模式为并行处理模式,先以无锁多线程处理模式并行处理所有的一级节点,当所有的一级节点对应的模型处理完毕后,在以无锁多线程处理模式并行处理所有的二级节点,当所有的二级节点对应的模型处理完毕后,最后以无锁多线程处理模式并行处理所有的三级节点。

18、在一个实施例中,步骤s106中,前一级别的模型处理完毕后,在处理后一级别的模型时,对前一级别的模型的数据仅进行读取操作,并且在操作过程中,首先对前一级别的模型的数据进行克隆,然后在克隆的数据上进行操作。

19、在一个实施例中,步骤s106中,使用collector函数、processor函数和线程池类graphthreadpool对模型进行处理;

20、其中collector函数用于收集每一级别的节点所对应的模型,将模型收集到列表中并将该列表传递给processor函数;

21、processor函数对模型进行构建、细化和渲染;

22、线程池类graphthreadpool构建线程池,调用对应数量的线程,以实现collector函数和processor函数的功能。

23、在一个实施例中,使用processor函数对模型进行构建、细化和渲染包括:

24、processor函数调用build函数对模型进行几何构建:

25、对于一级节点对应的模型,根据模型的几何参数,调用几何建模库构建几何模型,得到一级模型;

26、对于二级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该二级节点相关联的一级节点的一级模型进行几何操作,得到二级模型;

27、对于三级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该三级节点相关联的二级节点的二级模型或者一级节点的一级模型进行几何操作,得到三级模型;

28、processor函数调用build函数对模型进行细化;

29、processor函数调用render函数对模型进行渲染;

30、所述几何构建、细化和渲染的实现放入线程池中。

31、在一个实施例中,步骤s101中,3d模型设计文件是通过cad工具建模生成,或者来自由第三方cad工具生成的xml,xfl、stp、sat、igs、dxf格式的文件。

32、在一个实施例中,步骤s102中,解析3d模型设计文件包括模型的材料解析、模型的坐标系解析、模型的环境参数解析和和模型文件解析。

33、本专利技术具有如下有益效果:

34、1、简便化:在本专利技术中,由于同一级的模型之间不存在依赖关系,在利用多线程的同时,也不用引入线程锁的机制。

35、2、效率高:该算法可以并行处理多个模型,相对于传统单线程的算法,本专利技术的加载速度提升数倍,技术增益效果显著。

本文档来自技高网...

【技术保护点】

1.一种基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,该方法包括:

2.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,还包括,在步骤S103之后,对构建的有向无环图进行可视化呈现,所述可视化呈现通过Graphviz图形工具实现。

3.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S104中,根据所述有向无环图将节点分为三级:

4.根据权利要求3所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S105中,根据节点的边来统计节点的数量,先确定一级节点的数量,再由每一个一级节点按照边的指向逐级遍历,统计所有源自该一级节点的次级节点,遍历所有的一级节点以完成所有节点数量的统计。

5.根据权利要求3所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S106中,无锁多线程处理模式为并行处理模式,先以无锁多线程处理模式并行处理所有的一级节点,当所有的一级节点对应的模型处理完毕后,在以无锁多线程处理模式并行处理所有的二级节点,当所有的二级节点对应的模型处理完毕后,最后以无锁多线程处理模式并行处理所有的三级节点。

6.根据权利要求5所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S106中,前一级别的模型处理完毕后,在处理后一级别的模型时,对前一级别的模型的数据仅进行读取操作,并且在操作过程中,首先对前一级别的模型的数据进行克隆,然后在克隆的数据上进行操作。

7.根据权利要求3所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S106中,使用collector函数、processor函数和线程池类GraphThreadPool对模型进行处理;

8.根据权利要求7所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,使用processor函数对模型进行构建、细化和渲染包括:

9.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S101中,3D模型设计文件是通过CAD工具建模生成,或者来自由第三方CAD工具生成的XML,XFL、STP、SAT、IGS、DXF格式的文件。

10.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S102中,解析3D模型设计文件包括模型的材料解析、模型的坐标系解析、模型的环境参数解析和和模型文件解析。

...

【技术特征摘要】

1.一种基于有向无环图和无锁多线程模式的3d模型处理方法,其特征在于,该方法包括:

2.根据权利要求1所述的基于有向无环图和无锁多线程模式的3d模型处理方法,其特征在于,还包括,在步骤s103之后,对构建的有向无环图进行可视化呈现,所述可视化呈现通过graphviz图形工具实现。

3.根据权利要求1所述的基于有向无环图和无锁多线程模式的3d模型处理方法,其特征在于,步骤s104中,根据所述有向无环图将节点分为三级:

4.根据权利要求3所述的基于有向无环图和无锁多线程模式的3d模型处理方法,其特征在于,步骤s105中,根据节点的边来统计节点的数量,先确定一级节点的数量,再由每一个一级节点按照边的指向逐级遍历,统计所有源自该一级节点的次级节点,遍历所有的一级节点以完成所有节点数量的统计。

5.根据权利要求3所述的基于有向无环图和无锁多线程模式的3d模型处理方法,其特征在于,步骤s106中,无锁多线程处理模式为并行处理模式,先以无锁多线程处理模式并行处理所有的一级节点,当所有的一级节点对应的模型处理完毕后,在以无锁多线程处理模式并行处理所有的二级节点,当所有的二级节点对应的模型处理完毕后,最后以无锁多线程处理模式并行处理所有的三级节点。

6...

【专利技术属性】
技术研发人员:徐飞徐刚郭茹吴寅芝涂三山
申请(专利权)人:芯瑞微上海电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1