stl文件格式

http://wenku.baidu.com/view/a3ab7a26ee06eff9aef8077b.html

[每个三角形面片的定义包括三角形各个定点的三维坐标及三角形面片的法矢量[三角形的法线。它是一个向量,是三角形平面上的一条垂线]]
科学技术法[e+n][E(代表指数)表示将前面的数字乘以 10 的 n 次幂。]:10进制123456789 = 1.23e+7

stl格式
STL文件的最大特点也是其主要问题是,它是由一系列的三角形面片无序排列组合在一起的,没有反映三角形面片之间的拓扑关系

STL文件规则
(1)共顶点规则
每一个三角面片必须与其相邻的每一个面片共两个顶点 ,即一个三角面片的顶点不能落在相邻的任何三角面片的边上;

(2)取向规则
单个面片法向量符合右手法则且其法向量必须指向实体外面;

(3)充满规则
小三角面片必须布满三维模型的所有表面,不得有任何遗漏;

(4)取值规则
每个顶点的坐标值必须为非负 ,即 STL 文件的实体应该在坐标系的第一象限.

文件格式的结构
目前的STL文件格式包括二进制文件(BINARY)和文本文件(ASCII)两种
ASCII STL An ASCII STL file begins with the line:solid name where name is an optional string (though if name is omitted there must still be a space after solid). The file continueswith any number of triangles, each represented as follows:
solid filename stl //自定义文件头
facet normal x y z //三角面片法向量的3个坐标
outer loop
vertex v1x v1y v1z //三角面片第一个顶点坐标
vertex v2x v2y v2z //三角面片第二个顶点坐标
vertex v3x v3y v3z //三角面片第三个顶点坐标
endloop
endfacet //完成一个三角面片定义

where each n or v is a floating point number in sign-mantissa ‘e‘-sign-exponent format, e.g., "-2.648000e-002". Thefile concludes with:endsolid name The structure of the format suggests that other possibilities exist (e.g., facets with more than one ‘loop‘, or loops with more than three vertices) but in practice, all facets are simple triangles. White space (spaces, tabs, newlines) may be used anywhere in the file except within numbers or words. The spaces between ‘facet‘ and ‘normal‘ and between ‘outer‘ and ‘loop‘ are required

Binary STL
Because ASCII STL files can become very large, a binary version of STL exists. A binary STL file has an 80character header (which is generally ignored – but which should never begin with ‘solid‘ because that will lead mostsoftware to assume that this is an ASCII STL file). Following the header is a 4 byte unsigned integer indicating the number of triangular facets in the file. Following that is data describing each triangle in turn. The file simply endsafter the last triangle.
Each triangle is described by twelve 32-bit-floating point numbers: three for the normal and then three for the X/Y/Z coordinate of each vertex – just as with the ASCII version of STL. After the twelve floats there is a two byteunsigned ‘short‘ integer that is the ‘attribute byte count‘ – in the standard format, this should be zero because mostsoftware does not understand anything else.
Floating point numbers are represented as IEEE floating point numbers and are assumed to be little endian, althoughthis is not stated in documentation.

UINT8[80] – Header //which is generally ignored – but which should never begin with ‘solid‘ because that will lead most software to assume that this is an ASCII STL file
UINT32 – Number of triangles //indicating thenumber of triangular facets in the file. 
foreach triangle
REAL32[3] – Normal vector
REAL32[3] – Vertex 1
REAL32[3] – Vertex 2
REAL32[3] – Vertex 3
UINT16 – Attribute byte count
end

Color in binary STL
There are at least two variations on the binary STL format for adding color information:
•The VisCAM and SolidView software packages use the two ‘attribute byte count‘ bytes at the end of every triangle to store a 15 bit RGB color:
•bit 0 to 4 are the intensity level for blue (0 to 31)
•bits 5 to 9 are the intensity level for green (0 to 31)
•bits 10 to 14 are the intensity level for red (0 to 31)
•bit 15 is 1 if the color is valid
•bit 15 is 0 if the color is not valid (as with normal STL files)
•The Materialise Magics software does things a little differently. It uses the 80 byte header at the top of the file to represent the overall color of the entire part. If color is used, then somewhere in the header should be the ASCII string "COLOR=" followed by four bytes representing red, green, blue and alpha channel (transparency) in the range 0–255. 
This is the color of the entire object unless overridden at each facet. Magics also recognizes a material description; a more detailed surface characteristic. Just after "COLOR=RGBA" specification should be another ASCII string ",MATERIAL=" followed by three colors (3 × 4 bytes): 
first is a color of diffuse reflection,
second is a color of specular highlight, 
and third is an ambient light.
Material settings are preferred over color.The per-facet color is represented in the two ‘attribute byte count‘ bytes as follows:
•bit 0 to 4 are the intensity level for red (0 to 31)
•bits 5 to 9 are the intensity level for green (0 to 31)
•bits 10 to 14 are the intensity level for blue (0 to 31)
•bit 15 is 0 if this facet has its own unique color
•bit 15 is 1 if the per-object color is to be used
The red/green/blue ordering within those two bytes is reversed in these two approaches
– so while these formatscould easily have been compatible the reversal of the order of the colors means that they are not 
– and worse still, ageneric STL file reader cannot automatically distinguish between them. There is also no way to have facets beselectively transparent because there is no per-facet alpha value 
– although in the context of current rapid prototyping machinery, this is not important.

最后粘贴上,在github上找到的stl文件解析类:

https://github.com/Ultimaker/ruby-admesh/blob/master/ext/admesh/admesh/src/stlinit.c

时间: 2024-10-05 17:52:13

stl文件格式的相关文章

STL文件格式研究

一.介绍 STL文件格式(stereolithography,光固化立体造型术的缩写)是由3D SYSTEMS 公司于1988 年制定的一个接口协议,是一种为快速原型制造技术服务的三维图形文件格式.STL 文件由多个三角形面片的定义组成,每个三角形面片的定义包括三角形各个定点的三维坐标及三角形面片的法矢量.本文介绍如何通过C语言读取STL格式文件. 二.STL格式 在快速成型和分层制造领域,STL文件被广泛应用于实体的表述.其原理是将复杂的表面用有限个三角面片来拟合.其实和缝足球差不多,只不过足

stl文件格式解析代码--java版

代码是参考three.js中的stlLoader.js写的. 需要注意的地方,java中byte取值-128~127 package test_stl.test_entry; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.regex.Matcher; import java.util.regex.Pattern;

C++ STL自学总结,仅供参考

本文内容,为博主在网上看到资料总结整合而来 一.stl格式简介 .stl文件是在计算机图形应用系统,来表示封闭的面或者体,用来表示三角形网格的一种文件格式.为STereo Lithography的缩写,由3D Systems公司于1987年开发而来,利用三角片离散近似表示三维模型,近年来已经成为快速原型技术领域广泛应用的文件格式和接口标准. 一个stl文件坐标必须是正数,没有比例信息,单位是任意的. 二.stl文件格式 stl文件分为ASCII明码格式和二进制格式. ASCII格式的stl结构如

基于PLY的STL文件基本信息统计方法

1.摘要 STL文件是快速成型设备中常用的文件格式,随着3D打印技术的发展,STL格式文件的应用日益广泛.Python语言具有丰富和强大的类库,其语言简洁而清晰,因而Python语言越来越受欢迎.PLY是具名的LEX.YACC的Python版本,本文介绍了利用PLY模块对STL文件进行基本信息统计. KeyWord:PLY.语法分析.词法分析.STL 2.简介 计算机语言是计算机软件的系统的基础,经过几十年的发展,实现了从低级语言到高级语言的转变.原始的机器语言,到低级的汇编语言,它们虽然可以运

使用 Materialise magics 对 STL文件进行切片

我们在3D打印中常用的STL文件怎么转换成sla打印机需要的slc文件呢? 无疑我们需要一款切片软件,那就是Materialise magics了 Materialise magics 这款业内领先.针对增材制造而打造的通用数据准备和STL编辑软件具备STL文件格式转换.修复.设计编辑.打印平台准备等多项功能.赶快准备好您的3D打印模型吧! 使用Materialise magics对STL切片 如图所示是你下载好的Materialise magics软件 新建平台 加工准备 --> 新建平台 新

从STL文件到网格拓扑

原文链接 STL文件是什么 STL文件是网格文件的一种格式,分为二进制和文本两种类型.具体来讲,它定义了一群三角面片,比如下面是一个文本的STL示例: solid geometryplusplus facet normal -0.902325 -0.430279 -0.0258872 outer loop vertex -86.941 -297.521 -115.031 vertex -87.0579 -297.277 -115.053 vertex -86.9864 -297.4 -115.5

免费开源3D模型设计软件汇总

免费开源3D模型设计软件汇总 3D 打印需要先通过计算机辅助设计(CAD)进行建模,再将建好的3D模型“分割”成逐层的截面,从而指导3D打印机进行逐层打印.因此用于3D打印的3D模 型大都储存或输出成为.stl文件格式.下面就为大家总结目前市场上主要的免费3D建模软件.希望对对3D打印建模感兴趣的朋友们有帮助. 基于网页的3D模型设计软件有: 3d Tin 3D 打印需要先通过计算机辅助设计(CAD)进行建模,再将建好的3D模型“分割”成逐层的截面,从而指导3D打印机进行逐层打印.因此用于3D打

3D打印

3D打印,即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术.    3D打印通常是采用数字技术材料打印机来实现的.常在模具制造.工业设计等领域被用于制造模型,后逐渐用于一些产品的直接制造,已经有使用这种技术打印而成的零部件.该技术在珠宝.鞋类.工业设计.建筑.工程和施工(AEC).汽车,航空航天.牙科和医疗产业.教育.地理信息系统.土木工程.枪支以及其他领域都有所应用. 日常生活中使用的普通打印机可以打印电脑设计的平面物品,

Delaunay Triangulation in OpenCascade

Delaunay Triangulation in OpenCascade [email protected] 摘要:本文简要介绍了Delaunay三角剖分的基础理论,并使用OpenCascade的三角剖分算法将边界BRep表示的几何体进行三角离散化后在OpenSceneGraph中显示. 关键字:Delaunay Triangulation.OpenCascade.OpenSceneGraph 一. 概述 三角剖分是平面剖分中的一个重要课题,在数字图像处理.计算机三维曲面造型.有限元计算.逆向