STL文件本质为三维实体模型生成的表面网格化信息
也就是很多很多的三角形
如果要描述一个三维空间里面的三角形,我们需要表述哪些信息呢?
三个顶点的坐标和三角形的法向
具体请往下看……
STL文件的起源
美国3D Systems公司于1987年制定了STL (STereoLithography)文件格式,它以小三角面片为基本单位,离散地近似描述三维实体模型的表面.STL 文件最初应用于快速成形(Rapid Prototyping ,RP)领域 ,并迅速成为RP领域事实上的工业标准;同时,STL 文件也在快速成形之外的各种需要三维实体模型的领域中获得了广泛的应用。
STL文件规则
(1)共顶点规则
每一个三角面片必须与其相邻的每一个面片共两个顶点 ,即一个三角面片的顶点不能落在相邻的任何三角面片的边上;
(2)取向规则
单个面片法向量符合右手法则且其法向量必须指向实体外面;
(3)充满规则
小三角面片必须布满三维模型的所有表面,不得有任何遗漏;
(4)取值规则
每个顶点的坐标值必须为非负,即 STL 文件的实体应该在坐标系的第一象限。
具体来看看怎么回事
这里需要我们使用记事本打开STL文件。有的同学可能会问,为什么我打开之后是一团乱码,原因是你在将模型保存为STL格式文件的时候没有选择ASCII码格式,而是二进制(以solidworks为例,在保存的时候打开“选项”就可以修改保存类型了)
用记事本打开我们的STL文件,我们接下来简要介绍一下文件的信息和含义。(以这一个模型为例。第一幅图是原模型;第二幅图是用记事本打开的STL文件,这里截取开头的一段作为本文的例子)
第一行记录为solid,后面跟的是模型的名字,它的含义是该STL文件是通过某个实体模型生成的。如果是为某面片生成的STL,在这行则会记录为facet。一般情况下非三维的点线面不能生成STL文件,原因是STL文件本质为三维实体模型生成的表面网格化信息。
接下来每七行记录一个三角形面片信息:
第一行:facet narmal,面片法向,后面的三个数字是三维坐标值,数字采用科学计数法;
第二行:outer loop,意思是外部轮廓或者轨迹;
第三四五行:vertex,顶点,为三角形面片的三个顶点,后面的数字是它们的三维坐标值,数字同样采用科学计数法;
第六行:endloop,结束该轮廓。
第七行:endfacet,结束该面片。
后面都是相同的规律,每7行记录其他不同的三角形面片。
细心的小朋友们应该发现了,相邻的三角形面片是互相连接的,他们把实体组成封闭的表面(也就是说相邻的两个面片之间会公用一条边和两个顶点)
参考博客:
https://blog.csdn.net/ytffhew/article/details/84137433