CN113947669A - 一种stl三角网格模型数据提取和处理方法 - Google Patents
一种stl三角网格模型数据提取和处理方法 Download PDFInfo
- Publication number
- CN113947669A CN113947669A CN202111226734.8A CN202111226734A CN113947669A CN 113947669 A CN113947669 A CN 113947669A CN 202111226734 A CN202111226734 A CN 202111226734A CN 113947669 A CN113947669 A CN 113947669A
- Authority
- CN
- China
- Prior art keywords
- vertex
- container
- stl file
- stl
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种STL三角网格模型数据提取和处理方法,包括以下步骤:S1、载入STL文件,并验证STL文件的正确性;S2、创建存储顶点,边,三角形数据的容器,解决STL文件有二进制格式和ASCII码格式两种存储方式;S3、根据STL文件的内容向容器列表中添加数据。在本发明去除了重复的三角形顶点坐标,减少数据存储所需空间,去除重复三角形顶点坐标,具体包括,STL文件中原本的三角形顶点坐标被重复存储,这种重复存储隐式包含了三角形顶点之间的位置关系。通过本方法对STL文件数据处理和转换,将STL文件转换为另一种格式的三角网格模型,每个顶点坐标在此模型中只被保存一次,并显式地保存三角网格顶点和边之间的拓扑结构。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种STL三角网格模型数据提取和处理方法。
背景技术
STL文件格式是由3D SYSTEMS公司于1988年制定的一个接口协议。STL文件由多个三角面片的定义组成,每个三角面片的定义包括三角形顶点坐标和三角面片的法矢量。
STL文件的三角形顶点坐标是正数,没有尺度信息,且计量单位为任意的。STL文件分为ASCII码和二进制两种格式;
相对于其他形式的文件格式,诸如step,iges等文件格式,STL文件有数据结构简单,数据存储量高的优点。
但是STL文件中存储的信息有以下不足之处:
一、顶点的数据被重复存储,浪费存储空间。
二、存储的信息不包含三角面片的相对位置,这种相对位置在机床轨迹生成等应用中非常重要,为此,提出一种STL三角网格模型数据提取和处理方法。
发明内容
有鉴于此,本发明实施例希望提供一种STL三角网格模型数据提取和处理方法,以解决或缓解现有技术中存在的技术问题,至少提供一种有益的选择。
本发明实施例的技术方案是这样实现的:一种STL三角网格模型数据提取和处理方法,包括以下步骤:
S1、载入STL文件,并验证STL文件的正确性;
S2、创建存储顶点,边,三角形数据的容器,解决STL文件有二进制格式和ASCII码格式两种存储方式;
S3、根据STL文件的内容向容器列表中添加数据;
S4、保存转换后的数据容器列表。
在一些实施例中,在所述S1中,包括:S11判断STL文件格式,读取STL文件的81-84byte,将其转换为整型数据N,若该STL文件为二进制格式,N为此STL文件包含的三角面片数量;
若该STL文件为二进制格式,则STL文件长度LEN符合以下关系:
LEN=84+50N
若验证以上关系成立,则该STL文件格式为二进制格式;
若以上关系不成立,则则查询文件中的标志字符串,若在STL文件中查找到多个标志字符串,则该STL文件格式为ASCⅡ码格式。
在一些实施例中,在所述S1中,包括以下步骤:
S12、按照所述S11确定的格式解析STL文件;将STL文件中的数据分组保存,每组数据包含一个三角面片的三个顶点坐标,和三角面片的法向量;
S13、验证三角面片的法向量方向是否正确;
STL文件中保存的三角面片法向量指向模型外部,假设STL文件中每个三角面片的三个顶点依次为P1,P2,P3,则STL文件法向量方向为:
通过以上公式计算法向量,并和STL文件中原本保存的法向量比较,验证STL文件中保存的法向量是否正确;
S14、若S13中验证得到法向量正确,则保存所述S12转换后的数据容器列表。
在一些实施例中,在所述S2中,数据存储容器包含三种,分别为顶点容器,边容器,三角形容器:
顶点容器包含顶点三维坐标、顶点对边容器编号两部分,其中顶点三维坐标唯一,顶点对边容器编号包含该顶点所有对边。
在一些实施例中,在所述S2中,边容器包含顶点编号、临边编号两部分,每个边容器包含两个顶点编号,每个边容器包含2个或4个临边编号;
三角形容器包含顶点编号、边编号、法向量三部分,其中包含3个顶点编号,3个边编号,1个法向量。
在一些实施例中,在所述S3中包括以下步骤:
S21、载入STL文件;
S22、读取STL文件的第一个未被读取的三角面片数据,该三角面片中包含的信息包含3个顶点的三维坐标、该三角面片的法向量;
S23、创建3个顶点数据容器,保存3个顶点的三维坐标;
S24、创建3个边数据容器,保存该三角面片的3个边,其中每个边数据容器中包含2个顶点容器的编号,这些顶点容器在所述S23中被创建。
在一些实施例中,在所述S3中包括以下步骤:
S25、检查当前所有的边容器,去掉重复的边容器;
S26、向所述S23中创建的顶点容器加入对边编号,在所述S22读取的三角面片中,每个顶点都有1个对边;
S27、向所述S24中创建的边容器加入临边编号,在所述S22读取的三角面片中,每个边都有2个临边,即对三角面片3个边的任意1个边而言,其余2个边是这个边的临边;
S28、去掉在所述S27中加入的,每个边容器的临边编号中的重复临边;
S29、验证STL文件中是否还有三角面片数据未被读取;
S210、若所述S29中还有未被读取的三角面片,则返回所述S22;
若所述S29中还有未被读取的三角面片,则返回所述S22。
在一些实施例中,在所述S4中,按照该方法的S4,保存转换后的数据容器列表,保存为一个新的文件,供下一步计算使用,或者直接将这些数据用作CAD/CAM,轨迹规划应用的输入数据;通过建立以上数据存储容器,使三维坐标和顶点之间建立一一对应的关系,避免顶点三维坐标的重复存储。
本发明实施例由于采用以上技术方案,其具有以下优点:
一、在本发明去除了重复的三角形顶点坐标,减少数据存储所需空间,去除重复三角形顶点坐标,具体包括,STL文件中原本的三角形顶点坐标被重复存储,这种重复存储隐式包含了三角形顶点之间的位置关系。通过本方法对STL文件数据处理和转换,将STL文件转换为另一种格式的三角网格模型,每个顶点坐标在此模型中只被保存一次,并显式地保存三角网格顶点和边之间的拓扑结构。
二、在本发明提取了三角面片之间位置关系,建立整个三角网格模型的拓扑结构,建立三角网格顶点和边之间的拓扑结构,具体包括,三角形所有边之间的位置关系,三角形所有顶点之间的位置关系,三角面片和三角面片法向量之间的对应关系,可以转换STL文件的二进制存储方式和ASCII码存储方式,将其存储为统一格式的三角网格模型。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的载入STL文件流程图;
图2为本发明的建立数据容器流程图;
图3为本发明的向容器中添加数据流程图;
图4为本发明的STL三角网格模型数据图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
下面结合附图对本发明的实施例进行详细说明。
实施例一
如图1-4所示,本发明实施例提供了一种STL三角网格模型数据提取和处理方法,包括以下步骤,
S1、载入STL文件,并验证STL文件的正确性;
S2、创建存储顶点,边,三角形数据的容器,解决STL文件有二进制格式和ASCII码格式两种存储方式;
S3、根据STL文件的内容向容器列表中添加数据;
S4、保存转换后的数据容器列表。
在一个实施例中,在S1中,包括:S11判断STL文件格式,读取STL文件的81-84byte,将其转换为整型数据N,若该STL文件为二进制格式,N为此STL文件包含的三角面片数量;
若该STL文件为二进制格式,则STL文件长度LEN符合以下关系:
LEN=84+50N
若验证以上关系成立,则该STL文件格式为二进制格式;
若以上关系不成立,则则查询文件中的标志字符串,若在STL文件中查找到多个标志字符串,则该STL文件格式为ASCⅡ码格式,通过S1进行判定STL文件的格式,方便进行下面工作流程。
在一个实施例中,在S1中,包括以下步骤:
S12、按照S11确定的格式解析STL文件;将STL文件中的数据分组保存,每组数据包含一个三角面片的三个顶点坐标,和三角面片的法向量;
S13、验证三角面片的法向量方向是否正确;
STL文件中保存的三角面片法向量指向模型外部,假设STL文件中每个三角面片的三个顶点依次为P1,P2,P3,则STL文件法向量方向为:
通过以上公式计算法向量,并和STL文件中原本保存的法向量比较,验证STL文件中保存的法向量是否正确。
S14、若S13中验证得到法向量正确,则保存S12转换后的数据容器列表,通过验证三角面片的法向量方向是否正确,进一步方便进行操作以下流程。
在一个实施例中,在S2中,数据存储容器包含三种,分别为顶点容器,边容器,三角形容器:
顶点容器包含顶点三维坐标、顶点对边容器编号两部分,其中顶点三维坐标唯一,顶点对边容器编号包含该顶点所有对边,通过对顶点容器的三维坐标与定点边进行编号,方便将多个定点容器进行匹配。
在一个实施例中,在S2中,边容器包含顶点编号、临边编号两部分,每个边容器包含两个顶点编号,每个边容器包含2个或4个临边编号;
三角形容器包含顶点编号、边编号、法向量三部分,其中包含3个顶点编号,3个边编号,1个法向量,通过三角形容器设置,提高储存量。
在一个实施例中,在S3中包括以下步骤:
S21、载入STL文件;
S22、读取STL文件的第一个未被读取的三角面片数据,该三角面片中包含的信息包含3个顶点的三维坐标、该三角面片的法向量;
S23、创建3个顶点数据容器,保存3个顶点的三维坐标;
S24、创建3个边数据容器,保存该三角面片的3个边,其中每个边数据容器中包含2个顶点容器的编号,这些顶点容器在S23中被创建,通过以上流程,方便对边数据容器进行组合。
在一个实施例中,在S3中包括以下步骤:
S25检查当前所有的边容器,去掉重复的边容器;
S26向S23中创建的顶点容器加入对边编号,在S22读取的三角面片中,每个顶点都有1个对边;
S27向S24中创建的边容器加入临边编号,在S22读取的三角面片中,每个边都有2个临边,即对三角面片3个边的任意1个边而言,其余2个边是这个边的临边;
S28去掉在S27中加入的,每个边容器的临边编号中的重复临边;
S29验证STL文件中是否还有三角面片数据未被读取;
S210若S29中还有未被读取的三角面片,则返回S22;
若S29中还有未被读取的三角面片,则返回S22,通过以上流程,用于审查三角面片是否读取,保证三角面片精确性。
在一个实施例中,在S4中,按照该方法的S4,保存转换后的数据容器列表,保存为一个新的文件,供下一步计算使用,或者直接将这些数据用作CAD/CAM,轨迹规划应用的输入数据;通过建立以上数据存储容器,使三维坐标和顶点之间建立一一对应的关系,避免顶点三维坐标的重复存储,通过以上流程,从而避免顶点三维坐标的重复存储。
实施例二
本发明实施例提供了一种STL三角网格模型数据提取和处理方法,以ASCII码格式的STL文件为例,如图3所示,方法包括以下步骤:
S301、载入STL文件,验证STL文件中法向量的正确性;
S302、读取STL文件中的第一个三角面片数据,如图4所示,读取到的第一个三角形面片为三角形ABC;
S303、创建3个顶点容器,存储A、B、C三个顶点的三维坐标;
具体地,以上3个顶点容器的编号分别为1、2、3;
S304、创建3个边数据容器,存储3个边,分别为AB、AC、BC;具体地,以上3个边数据容器编号分别为1、2、3;
其中,每个边容器包含两个顶点容器编号,边容器1(AB)包含的顶点容器编号为1、2;边容器2(AC)包含的顶点容器编号为1、3;边容器3(BC)包含的顶点容器编号为2、3;
S305、检查S304创建的所有边容器,去掉重复的容器,此实例中,创建的三个边容器是非重复的,即S304中创建的3个边容器都被保留;
S306、向S303中创建的顶点容器加入对边编号,在S302读取的三角面片中,每个顶点都有1个对边;
具体地,顶点容器1对边为BC(边容器3);顶点容器2对边为AC(边容器2);顶点容器3对边为AB(边容器1);
S307、向S304中创建的边容器加入临边容器编号;
具体地,边容器1的临边容器编号为2、3;边容器2的临边容器编号为1、3;边容器3的临边容器编号为1、2;
S308、去掉在S307中,每个边容器中,临边编号中的重复临边;
具体地,此实例中的步骤7中暂时未有重复临边,即S307中边容器中增加的临边都被保留;
S309、STL文件中还有三角面片数据未被读取;
S310、返回步骤2,继续读取下一个三角面片数据,直到所有三角面片数据被读取完毕;
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种STL三角网格模型数据提取和处理方法,其特征在于,包括以下步骤:
S1、载入STL文件,并验证STL文件的正确性;
S2、创建存储顶点,边,三角形数据的容器,解决STL文件有二进制格式和ASCII码格式两种存储方式;
S3、根据STL文件的内容向容器列表中添加数据;
S4、保存转换后的数据容器列表。
2.根据权利要求1所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S1中,包括:S11判断STL文件格式,读取STL文件的81-84byte,将其转换为整型数据N,若该STL文件为二进制格式,N为此STL文件包含的三角面片数量;
若该STL文件为二进制格式,则STL文件长度LEN符合以下关系:
LEN=84+50N
若验证以上关系成立,则该STL文件格式为二进制格式;
若以上关系不成立,则则查询文件中的标志字符串,若在STL文件中查找到多个标志字符串,则该STL文件格式为ASCⅡ码格式。
3.根据权利要求2所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S1中,包括以下步骤:
S12、按照所述S11确定的格式解析STL文件;将STL文件中的数据分组保存,每组数据包含一个三角面片的三个顶点坐标,和三角面片的法向量;
S13、验证三角面片的法向量方向是否正确;
STL文件中保存的三角面片法向量指向模型外部,假设STL文件中每个三角面片的三个顶点依次为P1,P2,P3,则STL文件法向量方向为:
通过以上公式计算法向量,并和STL文件中原本保存的法向量比较,验证STL文件中保存的法向量是否正确;
S14、若S13中验证得到法向量正确,则保存所述S12转换后的数据容器列表。
4.根据权利要求1所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S2中,数据存储容器包含三种,分别为顶点容器,边容器,三角形容器:
顶点容器包含顶点三维坐标、顶点对边容器编号两部分,其中顶点三维坐标唯一,顶点对边容器编号包含该顶点所有对边。
5.根据权利要求2所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S2中,边容器包含顶点编号、临边编号两部分,每个边容器包含两个顶点编号,每个边容器包含2个或4个临边编号;
三角形容器包含顶点编号、边编号、法向量三部分,其中包含3个顶点编号,3个边编号,1个法向量。
6.根据权利要求1所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S3中包括以下步骤:
S21、载入STL文件;
S22、读取STL文件的第一个未被读取的三角面片数据,该三角面片中包含的信息包含3个顶点的三维坐标、该三角面片的法向量;
S23、创建3个顶点数据容器,保存3个顶点的三维坐标;
S24、创建3个边数据容器,保存该三角面片的3个边,其中每个边数据容器中包含2个顶点容器的编号,这些顶点容器在所述S23中被创建。
7.根据权利要求1所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S3中包括以下步骤:
S25、检查当前所有的边容器,去掉重复的边容器;
S26、向所述S23中创建的顶点容器加入对边编号,在所述S22读取的三角面片中,每个顶点都有1个对边;
S27、向所述S24中创建的边容器加入临边编号,在所述S22读取的三角面片中,每个边都有2个临边,即对三角面片3个边的任意1个边而言,其余2个边是这个边的临边;
S28、去掉在所述S27中加入的,每个边容器的临边编号中的重复临边;
S29、验证STL文件中是否还有三角面片数据未被读取;
S210、若所述S29中还有未被读取的三角面片,则返回所述S22;
若所述S29中还有未被读取的三角面片,则返回所述S22。
8.根据权利要求1所述的STL三角网格模型数据提取和处理方法,其特征在于:在所述S4中,按照该方法的S4,保存转换后的数据容器列表,保存为一个新的文件,供下一步计算使用,或者直接将这些数据用作CAD/CAM,轨迹规划应用的输入数据;通过建立以上数据存储容器,使三维坐标和顶点之间建立一一对应的关系,避免顶点三维坐标的重复存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111226734.8A CN113947669A (zh) | 2021-10-21 | 2021-10-21 | 一种stl三角网格模型数据提取和处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111226734.8A CN113947669A (zh) | 2021-10-21 | 2021-10-21 | 一种stl三角网格模型数据提取和处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113947669A true CN113947669A (zh) | 2022-01-18 |
Family
ID=79331795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111226734.8A Pending CN113947669A (zh) | 2021-10-21 | 2021-10-21 | 一种stl三角网格模型数据提取和处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113947669A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114693817A (zh) * | 2022-04-13 | 2022-07-01 | 广州柏视医疗科技有限公司 | 一种3d网格模型的压缩及解压方法 |
-
2021
- 2021-10-21 CN CN202111226734.8A patent/CN113947669A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114693817A (zh) * | 2022-04-13 | 2022-07-01 | 广州柏视医疗科技有限公司 | 一种3d网格模型的压缩及解压方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666348B (zh) | 基于idm流程的铁路四电工程bim信息模型创建方法 | |
CN112632844A (zh) | 从工程制图中提取和分析信息 | |
CN112699775A (zh) | 基于深度学习的证件识别方法、装置、设备及存储介质 | |
CN113947669A (zh) | 一种stl三角网格模型数据提取和处理方法 | |
CN108536657A (zh) | 人为填写的地址文本相似度处理方法和系统 | |
CN111814664A (zh) | 识别图纸中标注的方法、装置、计算机设备及存储介质 | |
CN112050820A (zh) | 道路匹配方法、装置、电子设备及可读存储介质 | |
CN112902970A (zh) | 一种巡检路径规划方法和巡检机器人 | |
CN109165209B (zh) | 数据库中对象类型的数据校验方法、装置、设备及介质 | |
CN112528616A (zh) | 业务表单生成方法、装置、电子设备及计算机存储介质 | |
CN111489283B (zh) | 图片格式转换方法、装置及计算机存储介质 | |
CN110941688B (zh) | 一种基于多波束离散数据的航迹处理及空间化管理方法 | |
CN112861238A (zh) | 生成道路轮廓线的方法、装置、设备及可读存储介质 | |
CN111930742A (zh) | 基于建筑信息模型bim的数据存储方法及相关装置 | |
CN111784238A (zh) | 电子围栏分单方法、装置、终端设备及存储介质 | |
CN101650732B (zh) | 一种对象管理系统中的对象分组方法及装置 | |
CN108170989B (zh) | 基于bim技术的工程施工模型导出方法 | |
CN111737237B (zh) | 缺失里程桩数据生成方法、装置、设备及存储介质 | |
CN111199086A (zh) | 三维几何离散化处理系统 | |
JPH03121575A (ja) | 曲線近似方法および曲線の記憶方法 | |
CN111815691B (zh) | 一种网格数据结构的邻域访问方法、装置、设备及介质 | |
CN111324587A (zh) | Obj文件的数据的压缩方法、解析方法以及系统 | |
CN112328538A (zh) | 一种pms2.0图模文件导入方法 | |
CN116824976B (zh) | 空中运输车轨道地图生成方法、装置、设备 | |
CA3044759A1 (en) | Compression of data attributes |
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 |