CN113947669A - 一种stl三角网格模型数据提取和处理方法 - Google Patents

一种stl三角网格模型数据提取和处理方法 Download PDF

Info

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
Application number
CN202111226734.8A
Other languages
English (en)
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.)
Beijing Tongyan Sicheng Technology Co ltd
Original Assignee
Beijing Tongyan Sicheng 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 Beijing Tongyan Sicheng Technology Co ltd filed Critical Beijing Tongyan Sicheng Technology Co ltd
Priority to CN202111226734.8A priority Critical patent/CN113947669A/zh
Publication of CN113947669A publication Critical patent/CN113947669A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite 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三角网格模型数据提取和处理方法。
背景技术
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文件法向量方向为:
Figure BDA0003314383050000021
通过以上公式计算法向量,并和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文件法向量方向为:
Figure BDA0003314383050000051
通过以上公式计算法向量,并和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文件法向量方向为:
Figure FDA0003314383040000011
通过以上公式计算法向量,并和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,轨迹规划应用的输入数据;通过建立以上数据存储容器,使三维坐标和顶点之间建立一一对应的关系,避免顶点三维坐标的重复存储。
CN202111226734.8A 2021-10-21 2021-10-21 一种stl三角网格模型数据提取和处理方法 Pending CN113947669A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114693817A (zh) * 2022-04-13 2022-07-01 广州柏视医疗科技有限公司 一种3d网格模型的压缩及解压方法

Cited By (1)

* Cited by examiner, † Cited by third party
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