200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > cad模型轻量化_一种三维CAD模型数据处理方法与流程

cad模型轻量化_一种三维CAD模型数据处理方法与流程

时间:2021-07-26 04:23:09

相关推荐

cad模型轻量化_一种三维CAD模型数据处理方法与流程

本发明涉及数据处理技术领域。更具体地,涉及一种三维cad模型数据处理方法。

背景技术:

产品原始三维cad模型采用高阶曲线曲面表示,实时绘制效率低,且其无法在第三方软件平台中加载绘制。除cad软件厂商提供的模型轻量化与可视化工具外,通常需要采用一定的方法将模型导出成通用的低阶面片模型,并对模型几何数据建立一定的空间索引结构,再进行实时绘制。低阶模型通常由高阶模型利用离散化逼近算法,如delaunay三角化算法生成,因而与原始高阶模型存在一定误差,但此误差根据精度的需要是可控制的。由于低阶模型的计算复杂度低,且建立空间索引结构后对相交计算有较显著的加速作用,这种基于模型导出的通用面片模型能够获得更高的绘制效率。而且,由于面片模型存在较多的通用格式,比如obj、stl、vrml等,数据容易解析,更方便地在第三方软件平台中进行集成。因而,这种基于面片模型的轻量化与可视化方法正得到更广泛得应用。

现有的三维cad模型轻量化与可视化方法主要采用两种方法:

第一,利用同一cad软件厂商提供的模型查看软件,直接打开原始模型,在模型查看器中进行查看,或者发布轻量化模型,再加载轻量化模型进行查看。

第二,利用cad软件的导出功能,导出成通用的面片格式,对面片模型进行轻量化生成轻量化模型,再加载轻量化模型数据并生成空间索引结构,最后进行实时绘制。

技术实现要素:

本发明的目的在于提供一种三维cad模型数据处理方法,该方法可以保持装配结构信息的三维模型数据导出与空间索引的建立。

为达到上述目的,本发明采用下述技术方案:

一种三维cad模型数据处理方法,该方法包括如下步骤:

获取三维模型轻量化之后的模型信息,定位根节点;

获取根节点下的所有子节点,对所述子节点进行处理,在导出每个子节点几何数据的同时导出该子节点包含的标注信息;

以三维模型轻量化之后的模型根目录创建根节点,利用aabb包围盒寻找根节点下子节点的中心点,根据中心点与分割面的相对位置关系将子节点归入根节点的左节点或根节点的右节点,建立空间索引。

优选地,所述三维模型为用cad软件绘制的三维模型。

优选地,所述根节点为轻量化模型的装配结构的根节点。

优选地,所述子节点的节点模型包括零件或装配体。

优选地,所述获取根节点下的所有子节点,对所述子节点进行处理,在导出每个子节点几何数据的同时导出该子节点包含的标注信息进一步包括:

若子节点的节点模型为零件则按照装配层次设置文件路径生成模型数据保存路径,并将几何数据导出为通用面片格式的模型文件并进行自适应网格简化;

若所述零件包含标注信息则将其导出为相同路径下的文本文件;

若子节点的节点模型为装配体,则继续获取该节点下的未处理的子节点,重复执行上述步骤;

直至遍历完所有节点,结束。

优选地,该方法进一步包括:

读取全部的面片格式模型,包括模型的基本属性或标注信息;按照存储目录的结构组织读取的面片格式模型数据,即保证从三维模型轻量化之后的模型根节点到最深层级,每个节点都带有下一级节点的包含信息。

优选地,所述以三维模型轻量化之后的模型根目录创建根节点,利用aabb包围盒寻找根节点下子节点的中心点,根据中心点与分割面的相对位置关系将子节点归入根节点的左节点或根节点的右节点,建立空间索引进一步包括:

计算当前根节点的aabb包围盒并查找其最长轴,沿着最长轴将包围盒空间等分成左右两部分;

对于当前根节点包含的每一个子节点,计算所述子节点的中心点;

若所述中心点位于分割面左侧,将其加入根节点的左节点,反之,则加入右节点;

增加bvh层级,对于每层级的子节点重复上述步骤;

如果当前根节点的每个子节点均是叶节点,终止算法。

优选地,所述根节点包含了场景中的所有物体。

优选地,所述计算其中心点为计算每一个子节点包含场景的中心点。

本发明的有益效果如下:

本发明的数据处理方法,解决了复杂产品三维模型轻量化与可视化过程中丢失装配结构信息的问题。相比现有方法,本发明提出的方法具有较好的通用性,支持多数主流的三维cad数据格式,模型数据导出过程效率高,面片简化程度可控。模型空间索引的生成效率高,能够支持高效率的实时绘制。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明。

图1为模型数据导出流程图;

图2为空间索引建立流程图。

具体实施方式

为了更清楚地说明本发明,下面结合附图和优选实施例对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。

经发明人分析研究认为,现有的第一种方法无法与第三方软件平台集成,或者即使能够在第三方平台集成,也需要依赖于cad软件厂商的软件环境,无法独立实现模型轻量化与可视化功能,部署安装方式较为繁琐。现有的第二种方法通过将原始模型导出成通用面片模型,能够独立实现模型轻量化与可视化,轻量化模型的精度、模型轻量化与可视化的效率能够根据实际需要进行优化,容易在第三方软件平台中集成。但现有第二种方法大多在原始模型导出成通用面片模型或生成模型空间索引过程中丢失原始模型的装配结构信息,导致处理后的模型中模型之间的层次关系、模型名称等信息与原模型不一致,无法在交互绘制过程中对模型进行快速定位。

由此,本方案面向机械三维设计模型的轻量化与交互绘制,提出了一种保持模型装配结构信息的三维模型数据导出与空间索引建立方法,该方法可高效建立模型的空间索引结构,有效解决丢失模型装配结构信息的问题,并支持后续对模型进行进一步的数据压缩和实时绘制。

该方法首先,

获取cad软件绘制的三维模型轻量化之后的模型信息,定位轻量化模型的装配结构的根节点;

获取根节点下的所有子节点,若该子节点的模型为零件则按照装配层次设置文件路径生成模型数据保存路径,并将几何数据导出为通用面片格式的模型文件并进行qem自适应面片简化;若该零件包含标注信息则将其导出为相同路径下的文本文件;若该子节点的模型为装配体,则继续获取未处理的子模型,重复执行上述步骤。直至遍历完模型所有节点,算法结束;

该方法进一步包括:

读取全部的面片格式模型,包括模型的基本属性或标注信息;按照存储目录的结构组织读取的面片格式模型数据,即保证从三维模型轻量化之后的模型根节点到最深层级,每个节点都带有下一级节点的包含信息;

首先,以三维模型轻量化之后的模型根目录创建根节点,根节点包含了场景中的所有物体,其次,利用aabb包围盒寻找根节点下子节点的中心点,然后,根据中心点与分割面的相对位置关系将子节点归入根节点的左节点或根节点的右节点,建立空间索引;

建立空间索引进一步包括:计算当前根节点的aabb包围盒并查找其最长轴,沿着最长轴将包围盒空间等分成左右两部分;

对于当前根节点包含的每一个子节点,计算子节点包含场景的中心点;

若该中心点位于分割面左侧,将其加入根节点的左节点,反之,则加入右节点;

增加bvh层级,对于每层级的子节点重复上述步骤;

如果当前根节点的每个子节点均是叶节点,终止算法。

如图1至图2所示,本方案的方法的具体步骤包括,

获取文档对象,获取模型根节点;

获取未处理的模型子节点;

判断子节点的节点模型是零件还是装配体;

若子节点的节点模型是零件,则按照装配层次创建模型数据并保存路径,并将几何数据导出为通用面片格式的模型文件并进行qem自适应面片简化;若该零件包含标注信息则将其导出为相同路径下的文本文件;

若子节点的节点模型是装配体,则继续获取未处理的子模型,重复执行上述步骤。直至遍历完模型所有节点,算法结束;

读取全部的面片格式模型,包括模型的基本属性或标注信息;按照存储目录的结构组织读取的面片格式模型数据,即保证从三维模型轻量化之后的模型根节点到最深层级,每个节点都带有下一级节点的包含信息;

设置根节点;

计算当前根节点的aabb包围盒并查找其最长轴,沿着最长轴将包围盒空间等分成左右两部分;

对于当前根节点包含的每一个子目录,计算子目录的中心点;

若该中心点位于分割面左侧,将其加入根节点的左节点,反之,则加入右节点;

增加bvh层级,对于每层级的子目录重复上述步骤;

如果当前根节点的每个子节点不再包含子目录,即每个子节点均是叶节点,终止算法。

本方案中,对于level0根节点为模型文件根目录。

本方案的方法解决了复杂产品三维模型轻量化与可视化中丢失装配结构信息的问题。相比现有方法,本方案提出的方法具有较好的通用性,支持多数主流的三维cad数据格式,模型数据导出过程效率高,面片简化程度可控。模型空间索引的生成效率高,能够支持高效率的实时绘制。

下面通过实例对本方案的方法做进一步说明。

一种三维cad模型数据处理方法包括如下步骤:

加载原始三维模型数据,获取原模型的装配结构:

在cad软件环境下,打开原始模型文件,获取三维模型轻量化之后的模型信息,并定位到轻量化模型的装配结构的根节点,获取根节点下所有轻量化模型的子节点;

模型数据导出:

若该子节点的节点模型为零件则按照装配层次设置文件路径生成模型数据保存路径,并将几何数据导出为通用面片格式的模型文件并进行qem自适应面片简化;若该零件包含标注信息则将其导出为相同路径下的文本文件;若该子节点的节点模型为装配体,则继续获取未处理的子节点的节点模型,重复执行上述步骤;直至遍历完三维模型的所有节点,算法结束;

加载导出后的模型数据:

读取全部的面片格式模型,包括模型的基本属性或标注信息;按照存储目录的结构组织读取的面片格式模型数据,即保证从模型根目录到最深层级,每个目录都带有下一级目录或模型文件的包含信息;

生成模型空间索引:

首先,以三维模型轻量化之后的模型根目录创建根节点,则根节点包含了场景中的所有物体;

其次,计算当前根节点的aabb包围盒并查找其最长轴,沿着最长轴将包围盒空间等分成左右两部分;

然后,对于当前根节点包含的每一个子节点,计算其包含场景的中点;若该点位于分割面左侧,将其加入根节点的左节点,反之,则加入右节点;

增加bvh层级,对于每层级的子节点重复上述步骤;如果当前根节点的每个子节点均是叶节点,终止算法。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。