常见三维文件格式之STL

最近有用到stl格式的三维文件,学习收藏一下。

转自:http://www.cnblogs.com/ourshell/archive/2010/05/03/1726821.html

STL只能用来表示封闭的面或者体,stl文件有两种:一种是明码格式,另一种是二进制格式。 它的文件格式非常简单


明码:
solid name
facet normal ni nj nk
   outer loop
     vertex v1x v1y v1z
     vertex v2x v2y v2z
     vertex v3x v3y v3z'
   endloop
endfacet

endsolid name


二进制:

UINT8[80]         -   Header
UINT32            -   Number of triangles
foreach triangle
  REAL32[3]       -    Normal vector
  REAL32[3]       -    Vertex 1
  REAL32[3]       -    Vertex 2
  REAL32[3]       -    Vertex 3
  UINT16          -    Attribute byte count
end

 

文件格式简单,只能描述三维物体的几何信息,不支持颜色材质等信息,是三维打印机(不知道是不是什么东西加上一个三维就听起来就能比较眩,比较有技术含量,三维打印机这名称总觉得不如快速成型机来的实在)支持的最常见文件格式。


转自:(严梽铭)基于VC++和OpenGL 的STL文件读取显示

STL的二进制格式
二进制STL文件用固定的字节数来给出三角面片的几何信息。文件起始的80个字节是文件头,用于存贮零件名;紧接着用 4 个字节的整数来描述模型的三角面片个数,后面逐个给出每个三角面片的几何信息。每个三角面片占用固定的50个字节,依次是3个4字节浮点数(角面片的法矢量)3个4字节浮点数(1个顶点的坐标)3个4字节浮点数(2个顶点的坐标)3个4字节浮点数(3个顶点的坐标)个三角面片的最后2个字节用来描述三角面片的属性信息。一个完整二进制STL文件的大小为三角形面片数乘以 50再加上84个字节,总共134个字节。

STL的ASCII文件格式
ASCII码格式的STL文件逐行给出三角面片的几何信息,每一行以1个或2个关键字开头。在STL文件中的三角面片的信息单元facet是一个带矢量方向的三角面片,STL三维模型就是由一系列这样的三角面片构成。整个STL文件的首行给出了文件路径及文件名。在一个 STL文件中,每一个facet由7 行数据组成,facet normal 是三角面片指向实体外部的法矢量坐标,outer loop说明随后的3行数据分别是三角面片的3个顶点坐标,3顶点沿指向实体外部的法矢量方向逆时针排列。

ASCII格式的STL 文件结构如下:
solid filename stl     //文件路径及文件名
facet normal x y z     //三角面片法向量的3个分量值
outer loop
   vertex x y z        //三角面片第一个顶点坐标
   vertex x y z        //三角面片第二个顶点坐标
   vertex x y z        //三角面片第三个顶点坐标
   endloop   
   endfacet            //完成一个三角面片定义
   ---
endsolid filename stl  //整个STL文件定义结束

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页