CN117591123A - 基于有向无环图和无锁多线程模式的3d模型处理方法 - Google Patents

基于有向无环图和无锁多线程模式的3d模型处理方法 Download PDF

Info

Publication number
CN117591123A
CN117591123A CN202311550817.1A CN202311550817A CN117591123A CN 117591123 A CN117591123 A CN 117591123A CN 202311550817 A CN202311550817 A CN 202311550817A CN 117591123 A CN117591123 A CN 117591123A
Authority
CN
China
Prior art keywords
model
nodes
node
directed acyclic
lock
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
Application number
CN202311550817.1A
Other languages
English (en)
Other versions
CN117591123B (zh
Inventor
徐飞
徐刚
郭茹
吴寅芝
涂三山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinruiwei Shanghai Electronic Technology Co ltd
Original Assignee
Xinruiwei Shanghai Electronic Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xinruiwei Shanghai Electronic Technology Co ltd filed Critical Xinruiwei Shanghai Electronic Technology Co ltd
Priority to CN202311550817.1A priority Critical patent/CN117591123B/zh
Publication of CN117591123A publication Critical patent/CN117591123A/zh
Application granted granted Critical
Publication of CN117591123B publication Critical patent/CN117591123B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Image Generation (AREA)

Abstract

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

Description

基于有向无环图和无锁多线程模式的3D模型处理方法
技术领域
本发明涉及3D模型构建技术领域,更具体地说,涉及一种基于有向无环图和无锁多线程模式的3D模型处理方法。
背景技术
目前主流的CAD软件通常采用参数化建模技术。例如,对于一个几何实体如立方体,其相关数据,包括三维位置、尺寸参数等,存储在模型文件中。在CAD工具导入这样的模型文件时,会经历一系列复杂的过程,包括文件解析、几何模型的重建、细化处理以及最终的渲染。这些步骤旨在确保准确还原模型的几何特征,并最终在用户屏幕上以高质量的图形呈现。
在处理庞大而复杂结构的模型文件时,特别是在模型通过布尔运算、拉伸、扫掠等几何操作相互生成的情况下,若整个流程采用线性处理方式,加载时间会随模型文件的增大呈指数级增长。一些CAD软件为了简便起见,未充分分析模型间的依赖关系,也未充分利用现代计算机多核处理的能力。在处理流程中仅采用单线程,导致在加载模型过程中,用户等待时间过长,且UI界面陷入卡死状态。这严重削弱了软件的实用性,影响用户体验。
对于复合模型,由于存在明确的依赖关系,模型的构建涉及到一定的先后顺序,而且这些顺序通常是单向的。为了高效处理这些依赖关系,可以通过深入分析模型间的结构和依赖,采用拓扑排序等算法来确定构建的顺序。这有助于确保在建模过程中,先构建的部分能够满足后续部分的依赖关系,提高整体构建的效率。
发明内容
本发明提供一种基于有向无环图和无锁多线程模式的3D模型处理方法,利用模型之间的依赖关系来构建有向无环图,然后利用有向无环图的特点,使用多线程分层来处理模型的构建、细化和渲染,提高模型加载效率。
为实现上述目的,本发明提供了一种基于有向无环图和无锁多线程模式的3D模型处理方法,包括:
步骤S101,获取3D模型设计文件;
步骤S102,解析3D模型设计文件,根据解析的结果确定相关联的模型,并确定相关联的模型中的父模型和子模型;
步骤S103,构建有向无环图,其中,有向无环图的节点和模型对应,有向无环图的边为单向边,边将相关联的模型对应的节点相连接,从父模型的节点指向子模型的节点;
步骤S104,对节点进行分级,根据所述有向无环图将节点分为多级:
初始节点为:仅有从该节点出发的边而没有指向该节点的边;
次级节点为:有指向该节点的边,其中次级节点的级别根据该次级节点的所有父模型节点的级别确定,所有父模型节点的级别中取最大值N,该次级节点的级别为N+1;
步骤S105,统计节点数量,统计每一级别的节点的数量;
步骤S106,以无锁多线程模式进行模型处理,逐级对所有的节点对应的模型进行处理,其中同一级别的节点以无锁多线程模式处理,对模型进行处理包括对模型进行构建、细化和渲染。
在一个实施例中,该方法还包括,在步骤S103之后,对构建的有向无环图进行可视化呈现,所述可视化呈现通过Graphviz图形工具实现。
在一个实施例中,步骤S104中,根据所述有向无环图将节点分为三级:
一级节点为初始节点,既仅有从该节点出发的边而没有指向该节点的边;
二级节点为:有指向该节点的边,该节点的所有父模型节点的均为一级节点;
三级节点为:有指向该节点的边,该节点的父模型节点中有至少一个节点为二级节点。
在一个实施例中,步骤S105中,根据节点的边来统计节点的数量,先确定一级节点的数量,再由每一个一级节点按照边的指向逐级遍历,统计所有源自该一级节点的次级节点,遍历所有的一级节点以完成所有节点数量的统计。
在一个实施例中,步骤S106中,无锁多线程处理模式为并行处理模式,先以无锁多线程处理模式并行处理所有的一级节点,当所有的一级节点对应的模型处理完毕后,在以无锁多线程处理模式并行处理所有的二级节点,当所有的二级节点对应的模型处理完毕后,最后以无锁多线程处理模式并行处理所有的三级节点。
在一个实施例中,步骤S106中,前一级别的模型处理完毕后,在处理后一级别的模型时,对前一级别的模型的数据仅进行读取操作,并且在操作过程中,首先对前一级别的模型的数据进行克隆,然后在克隆的数据上进行操作。
在一个实施例中,步骤S106中,使用collector函数、processor函数和线程池类GraphThreadPool对模型进行处理;
其中collector函数用于收集每一级别的节点所对应的模型,将模型收集到列表中并将该列表传递给processor函数;
processor函数对模型进行构建、细化和渲染;
线程池类GraphThreadPool构建线程池,调用对应数量的线程,以实现collector函数和processor函数的功能。
在一个实施例中,使用processor函数对模型进行构建、细化和渲染包括:
processor函数调用build函数对模型进行几何构建:
对于一级节点对应的模型,根据模型的几何参数,调用几何建模库构建几何模型,得到一级模型;
对于二级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该二级节点相关联的一级节点的一级模型进行几何操作,得到二级模型;
对于三级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该三级节点相关联的二级节点的二级模型或者一级节点的一级模型进行几何操作,得到三级模型;
processor函数调用build函数对模型进行细化;
processor函数调用render函数对模型进行渲染;
所述几何构建、细化和渲染的实现放入线程池中。
在一个实施例中,步骤S101中,3D模型设计文件是通过CAD工具建模生成,或者来自由第三方CAD工具生成的XML,XFL、STP、SAT、IGS、DXF格式的文件。
在一个实施例中,步骤S102中,解析3D模型设计文件包括模型的材料解析、模型的坐标系解析、模型的环境参数解析和和模型文件解析。
本发明具有如下有益效果:
1、简便化:在本发明中,由于同一级的模型之间不存在依赖关系,在利用多线程的同时,也不用引入线程锁的机制。
2、效率高:该算法可以并行处理多个模型,相对于传统单线程的算法,本发明的加载速度提升数倍,技术增益效果显著。
附图说明
图1为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法的流程框图;
图2为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法的一级节点示意图;
图3为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法的二级节点示意图;
图4为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法的三级节点示意图。
图5为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法与传统加载模型算法的性能对比示意图。
具体实施方式
为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行更加详细的描述。在附图中,相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本申请一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本发明一实施例的基于有向无环图和无锁多线程模式的3D模型处理方法的流程框图,所述基于有向无环图和无锁多线程模式的3D模型处理方法包括:
步骤S101,获取3D模型设计文件;
步骤S102,解析3D模型设计文件,根据解析的结果确定相关联的模型,并确定相关联的模型中的父模型和子模型;
步骤S103,构建有向无环图,其中,有向无环图的节点和模型对应,有向无环图的边为单向边,边将相关联的模型对应的节点相连接,从父模型的节点指向子模型的节点;
步骤S104,对节点进行分级,根据所述有向无环图将节点分为多级:
初始节点为:仅有从该节点出发的边而没有指向该节点的边;
次级节点为:有指向该节点的边,其中次级节点的级别根据该次级节点的所有父模型节点的级别确定,所有父模型节点的级别中取最大值N,该次级节点的级别为N+1;
步骤S105,统计节点数量,统计每一级别的节点的数量;
步骤S106,以无锁多线程模式进行模型处理,逐级对所有的节点对应的模型进行处理,其中同一级别的节点以无锁多线程模式处理,对模型进行处理包括对模型进行构建、细化和渲染。
具体地,3D模型设计文件获取后,先通过文件解析,仔细分析文件的结构和格式,根据解析的结果确定相关联的模型,并确定相关联的模型中的父模型和子模型。随后,根据得到的父模型和子模型的数据构建有向无环图,构建过程中,有向无环图的节点和模型相互对应,边表示它们之间的父子关系。完成构建后,对所有节点进行分级,并且统计的各个级的节点数量,统计结束后,以无锁多线程模式处理这些节点,以实现模型的构建、细化和渲染。
进一步地,一个模型有一个对应的节点,用边相连接的节点之间的关系是父子关系,由父指向子,模型的节点与边创建完成表示了模型对应的数据结构构建完成。
更进一步地,当有向无环图创建成功后,可以用一个算法统计出图中各层节点对应的模型,以无锁多线程模式处理这些模型。
在一个实施例中,该方法还包括,在步骤S103之后,对构建的有向无环图进行可视化呈现,所述可视化呈现通过Graphviz图形工具实现。
具体地,Graphviz是一款开源的图形可视化工具,用于将结构化信息以图形和网络的形式呈现出来。图2-图4展示了通过Graphviz所呈现的三级节点的可视化图,图2-图4的具体内容下面会进一步详细描述。
在一个实施例中,步骤S104中,根据所述有向无环图将节点分为三级:
一级节点为初始节点,既仅有从该节点出发的边而没有指向该节点的边;
二级节点为:有指向该节点的边,该节点的所有父模型节点的均为一级节点;
三级节点为:有指向该节点的边,该节点的父模型节点中有至少一个节点为二级节点。
具体地,给节点分级别时,比较常见的是一级、二级和三级,四级以及四级以上的模型设计文件非常少,因此可以将有向无环图将节点分为三级。
进一步地,比如,一个节点既依赖于一级节点,又依赖于二级节点,没有依赖于更高级别的节点,那么它就是三级节点。
在一个实施例中,步骤S105中,根据节点的边来统计节点的数量,先确定一级节点的数量,再由每一个一级节点按照边的指向逐级遍历,统计所有源自该一级节点的次级节点,遍历所有的一级节点以完成所有节点数量的统计。
具体地,所述边包括出边和入边,一级节点包括出边,不包括入边,一级节点数量统计完成后,从一级节点出发,根据一级节点的出边统计出二级节点,依次类推,当所有一级节点遍历完成后,有向无环图的所有各级节点也完成统计。
在一个实施例中,步骤S106中,无锁多线程处理模式为并行处理模式,先以无锁多线程处理模式并行处理所有的一级节点,当所有的一级节点对应的模型处理完毕后,在以无锁多线程处理模式并行处理所有的二级节点,当所有的二级节点对应的模型处理完毕后,最后以无锁多线程处理模式并行处理所有的三级节点。
具体地,图2为一级节点图,如图所示,DIE、SM_TOP等节点对应的模型是相对独立的,没有依赖任何其他模型,所以当构建、细化和渲染DIE、SM_TOP等节点对应的模型时,可以直接以无锁多线程处理模式并行处理。
进一步地,图3为二级节点图,如图所示,DDR_A10_Wire_001节点对应的模型依赖于DDR_A10_Wire_001_path、DDR_A10_Wire_001_end和DDR_A10_Wire_001_end_trim节点对应的模型,在该有向无环图中,DDR_A10_Wire_001为二级节点,DDR_A10_Wire_001_path、DDR_A10_Wire_001_end和DDR_A10_Wire_001_end_trim为一级节点,当构建DDR_A10_Wire_001节点对应的模型时,要先以无锁多线程处理模式处理这三个一级节点,把这三个节点对应的模型构建完成之后,再在这三个一级模型的基础上构建DDR_A10_Wire_001节点对应的模型。
更进一步地,图4为三级节点图,如图所示,VSS_07_0001节点对应的模型的构建相对复杂,它依赖VSS_07_0012、VSS_07_0011和VSS_07_0010等节点对应的模型,VSS_07_0012、VSS_07_0011和VSS_07_0010等节点对应的模型又依赖于Path_07节点对应的模型,所以,在该有向无环图中,Path_07为一级节点,VSS_07_0012、VSS_07_0011和VSS_07_0010等节点为二级节点,VSS_07_0001为三级节点。当构建VSS_07_0001节点对应的模型时,必须要先构建Path_07节点对应的模型,然后是二级节点,最后构建VSS_07_0001节点对应的模型。
在一个实施例中,步骤S106中,前一级别的模型处理完毕后,在处理后一级别的模型时,对前一级别的模型的数据仅进行读取操作,并且在操作过程中,首先对前一级别的模型的数据进行克隆,然后在克隆的数据上进行操作。
在一个实施例中,步骤S106中,使用collector函数、processor函数和线程池类GraphThreadPool对模型进行处理;
其中collector函数用于收集每一级别的节点所对应的模型,将模型收集到列表中并将该列表传递给processor函数;
processor函数对模型进行构建、细化和渲染;
线程池类GraphThreadPool构建线程池,调用对应数量的线程,以实现collector函数和processor函数的功能。
在一个实施例中,使用processor函数对模型进行构建、细化和渲染包括:
processor函数调用build函数对模型进行几何构建:
对于一级节点对应的模型,根据模型的几何参数,调用几何建模库构建几何模型,得到一级模型;
对于二级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该二级节点相关联的一级节点的一级模型进行几何操作,得到二级模型;
对于三级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该三级节点相关联的二级节点的二级模型或者一级节点的一级模型进行几何操作,得到三级模型;
processor函数调用build函数对模型进行细化;
processor函数调用render函数对模型进行渲染;
所述几何构建、细化和渲染的实现放入线程池中。
具体地,构建几何模型时,对于一层模型构建,根据模型的几何参数,比如长方体的长、宽、高,调用几何建模库构建实体模型;
对于二层模型构建,创建附属它的一层模型,然后对一层模型进行扫掠构建二层模型,比如先创建一个平面,然后沿着指定的路径进行扫描,构建出一个3D图形;
对于三层模型构建,创建附属它的一层模型,然后对一层模型进行扫掠构建二层模型,再利用二层模型构建三层模型。
进一步地,细化几何模型时,对于几何模型,比如一个球,对应的参数只有一个球心坐标和半径,但要显示在屏幕上,就要用多个三角面来表示整个球面,增加三角面的数量会使球的表面变得更加平滑,实现这一平滑功能的过程即是进行模型的细化。由于不同模型的几何结构可能较为复杂,因此进行细化的过程可能会相对耗时。在细化过程中由于各个模型的细化是相互独立的,因此可以把实现该功能的算法放到线程池中。
更进一步地,渲染几何模型时,和模型的细化一样,渲染过程也是比较耗时的,每个模型的渲染也是独立的,该过程也同样放到线程池中进行。
在一个实施例中,步骤S101中,3D模型设计文件是通过CAD工具建模生成,或者来自由第三方CAD工具生成的XML,XFL、STP、SAT、IGS、DXF格式的文件。
在一个实施例中,步骤S102中,解析3D模型设计文件包括模型的材料解析、模型的坐标系解析、模型的环境参数解析和和模型文件解析。
图5为本发明基于有向无环图和无锁多线程模式的3D模型处理方法与传统的加载模型算法分别对26个实际案例进行测试的对比图,图中第一列为设计文件的名字,第二列为文件大小,第三列为传统的加载模型算法构建模型的时间,第四列为本发明方法构建模型的时间,第五列为传统的加载模型算法与本发明方法的时间比,最后一列为测试服务器配置,由图可得,相比于线性无序的加载模型算法,无论文件的大小如何,使用有向无环图和无锁多线程算法都会比传统的加载模型算法快,在速度上约提升了1.3到5.3倍。
本发明具有如下有益效果:
1、简便化:在本发明中,由于同一级的模型之间不存在依赖关系,在利用多线程的同时,也不用引入线程锁的机制。
2、效率高:该算法可以并行处理多个模型,相对于传统单线程的算法,本发明的加载速度提升数倍,技术增益效果显著。
在本申请的描述中,需要说明的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。还需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
上述实施例是提供给熟悉本领域内的人员来实现或使用本申请的,熟悉本领域的人员可在不脱离本申请的申请思想的情况下,对上述实施例作出种种修改或变化,因而本申请的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。

Claims (10)

1.一种基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,该方法包括:
步骤S101,获取3D模型设计文件;
步骤S102,解析3D模型设计文件,根据解析的结果确定相关联的模型,并确定相关联的模型中的父模型和子模型;
步骤S103,构建有向无环图,其中,有向无环图的节点和模型对应,有向无环图的边为单向边,边将相关联的模型对应的节点相连接,从父模型的节点指向子模型的节点;
步骤S104,对节点进行分级,根据所述有向无环图将节点分为多级:
初始节点为:仅有从该节点出发的边而没有指向该节点的边;
次级节点为:有指向该节点的边,其中次级节点的级别根据该次级节点的所有父模型节点的级别确定,所有父模型节点的级别中取最大值N,该次级节点的级别为N+1;
步骤S105,统计节点数量,统计每一级别的节点的数量;
步骤S106,以无锁多线程模式进行模型处理,逐级对所有的节点对应的模型进行处理,其中同一级别的节点以无锁多线程模式处理,对模型进行处理包括对模型进行构建、细化和渲染。
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对模型进行处理;
其中collector函数用于收集每一级别的节点所对应的模型,将模型收集到列表中并将该列表传递给processor函数;
processor函数对模型进行构建、细化和渲染;
线程池类GraphThreadPool构建线程池,调用对应数量的线程,以实现collector函数和processor函数的功能。
8.根据权利要求7所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,使用processor函数对模型进行构建、细化和渲染包括:
processor函数调用build函数对模型进行几何构建:
对于一级节点对应的模型,根据模型的几何参数,调用几何建模库构建几何模型,得到一级模型;
对于二级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该二级节点相关联的一级节点的一级模型进行几何操作,得到二级模型;
对于三级节点对应的模型,先创建其自身的几何模型,再基于该几何模型以及与该三级节点相关联的二级节点的二级模型或者一级节点的一级模型进行几何操作,得到三级模型;
processor函数调用build函数对模型进行细化;
processor函数调用render函数对模型进行渲染;
所述几何构建、细化和渲染的实现放入线程池中。
9.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S101中,3D模型设计文件是通过CAD工具建模生成,或者来自由第三方CAD工具生成的XML,XFL、STP、SAT、IGS、DXF格式的文件。
10.根据权利要求1所述的基于有向无环图和无锁多线程模式的3D模型处理方法,其特征在于,步骤S102中,解析3D模型设计文件包括模型的材料解析、模型的坐标系解析、模型的环境参数解析和和模型文件解析。
CN202311550817.1A 2023-11-20 2023-11-20 基于有向无环图和无锁多线程模式的3d模型处理方法 Active CN117591123B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311550817.1A CN117591123B (zh) 2023-11-20 2023-11-20 基于有向无环图和无锁多线程模式的3d模型处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311550817.1A CN117591123B (zh) 2023-11-20 2023-11-20 基于有向无环图和无锁多线程模式的3d模型处理方法

Publications (2)

Publication Number Publication Date
CN117591123A true CN117591123A (zh) 2024-02-23
CN117591123B CN117591123B (zh) 2024-07-02

Family

ID=89916034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311550817.1A Active CN117591123B (zh) 2023-11-20 2023-11-20 基于有向无环图和无锁多线程模式的3d模型处理方法

Country Status (1)

Country Link
CN (1) CN117591123B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130467B1 (en) * 2003-03-19 2006-10-31 Microsoft Corporation Real time data matching
CN112148926A (zh) * 2019-06-28 2020-12-29 京东数字科技控股有限公司 一种图数据流的处理方法、处理装置和存储介质
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN114356356A (zh) * 2021-12-31 2022-04-15 北京市商汤科技开发有限公司 模型架构转换方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7130467B1 (en) * 2003-03-19 2006-10-31 Microsoft Corporation Real time data matching
CN112148926A (zh) * 2019-06-28 2020-12-29 京东数字科技控股有限公司 一种图数据流的处理方法、处理装置和存储介质
CN112257135A (zh) * 2020-10-30 2021-01-22 久瓴(上海)智能科技有限公司 一种基于多线程的模型加载方法、装置、存储介质及终端
CN114356356A (zh) * 2021-12-31 2022-04-15 北京市商汤科技开发有限公司 模型架构转换方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN117591123B (zh) 2024-07-02

Similar Documents

Publication Publication Date Title
US7492364B2 (en) System and method for creating and updating a three-dimensional model and creating a related neutral file format
Daum et al. Processing of topological BIM queries using boundary representation based methods
JP5445199B2 (ja) 三次元モデル分割装置及び三次元モデル分割方法
Ishida et al. Efficient and robust cartesian mesh generation for building-cube method
Gyulassy et al. Direct feature visualization using Morse-Smale complexes
Cignoni et al. Selective refinement queries for volume visualization of unstructured tetrahedral meshes
Wang Approximate boolean operations on large polyhedral solids with partial mesh reconstruction
Wang et al. Thickening freeform surfaces for solid fabrication
JP2007220090A (ja) Plmデータベース内のオブジェクトを表示する処理および本処理を実装した装置
KR20140088038A (ko) 강체 운동들에 의해 변환된 기하학적 엘리먼트들
Mathur et al. Interactive programming for parametric cad
Coma et al. Geometric and form feature recognition tools applied to a design for assembly methodology
CN101320487B (zh) 一种用于火灾模拟的场景预处理方法
US7333104B2 (en) Method and program of converting three-dimensional shape data into cell internal data
JP4175536B2 (ja) 境界データの内外判定方法とそのプログラム
CN117591123B (zh) 基于有向无环图和无锁多线程模式的3d模型处理方法
Kase et al. Volume cad
Adhikary et al. A slice based approach to recognize and extract free-form volumetric features in a CAD mesh model
US20230229824A1 (en) Designing a product using procedural graphs
US7031790B2 (en) Operator for sculpting solids with sheet bodies
KR100993297B1 (ko) Catia를 이용한 패널 코드 전처리 방법
Patel et al. 3DJ: an analytical and generative design system for synthesizing high-performance textures from 3D scans
CN114742852A (zh) 一种基于网格求交的高效自由曲面分层方法及其应用
JP4526063B2 (ja) ボリュームデータのセルラベリング方法とそのプログラムとボリュームデータのセルラベリング装置
Gomes et al. A B-Rep data structure and object GUI programming to implement 2D boundary elements

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
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: 3D model processing method based on directed acyclic graph and lock free multi-threaded mode

Granted publication date: 20240702

Pledgee: SHANGHAI RURAL COMMERCIAL BANK Co.,Ltd.

Pledgor: Xinruiwei (Shanghai) Electronic Technology Co.,Ltd.

Registration number: Y2024310000987