1. STL
STL文件格式(stereolithography,光固化立体造型术的缩写)是由3D SYSTEMS 公司于1988 年制定的一种为快速原型制造技术服务的三维图形文件格式。
PS:STL可不是专门为3D打印而创造的喔,只是碰巧3D打印是快速原型制造技术的一种,而且是名气最大的一种。
STL文件不同于其他一些基于特征的实体模型,STL用三角形网格来表现3D CAD模型,只能描述三维物体的几何信息,不支持颜色材质等信息。
PS:这下明白为什么会丢失那么多重要信息了吧!STL就是个简化版的3D模型。
但是——正因为数据简化,格式简单,STL普及很快应用广泛,“简单易用”说的就是它。随着3D SYSTEMS的快速崛起, STL已经成为快速原型系统事实上的数据标准。
PS:管你高端中端低端CAD软件,要想用3D打印,都必须给我往STL格式转换;
STL 文件有2 种类型:文本文件(ASCII格式)和二进制文件(BINARY)。
PS:相比之下ASCII格式更加通用一些。
2. PCD
在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本。这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5、PCD_V6和PCD_V7等),分别代表PCD文件的0.5版、0.6版和0.7版。在PCL中,用到的PCD文件格式的正式发布是0.7版,即PCD_V7。
PCD文由 “头文件 + 点云数据” 构成,头文件声明了该点云数据集的基本特性。下面以PCD_V7版本的PCD文件为例,对头文件进行介绍。头文件及部分点云数据如下所示:
# .PCD v.5 - Point Cloud Data file format
VERSION .5
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 397
HEIGHT 1
POINTS 397
DATA ascii
0.0054216 0.11349 0.040749
-0.0017447 0.11425 0.041273
-0.010661 0.11338 0.040916
0.026422 0.11499 0.032623
0.024545 0.12284 0.024255
0.034137 0.11316 0.02507
-
FIELDS:
指定本点云数据集中任意一个点可以有的维度信息和其他附加信息。如:FIELDS x y z 指每个点都有xyz三个维度信息,FIELDS x y z rgb 指每个点除了xyz维度信息外还有颜色信息等。
-
SIZE
储存每个维度信息占用的字节数(byte)。1指用char型数据存储维度信息,2指用short型数据存储维度信息,4指用int或float型数据存储维度信息,8指用double型数据存储维度信息。
-
TYPE
用字符指定每一个维度的数据类型。I表示有符号类型:int8(char),int16(short),int32(int);U表示无符号类型:uint8(unsigned char),uint 16(unsigned short),uint32(unsigned int);F表示浮点型float和double。
-
COUNT
每个维度包含的元素个数。
-
POINTS
点云中点的总数,从0.7版本就开始显得有点多余,可能会在后续版本中舍去这个参数。
-
DATA
指定存储点云数据的数据存储格式:ASCLL码或二进制数据。
3. OBJ
OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的数据交换,比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。
OBJ主要支持多边形(Polygons)模型。不包含动画、材质特性、贴图路径、动力学、粒子等信息。
由于OBJ格式在数据交换方面的便捷性,目前大多数的三维CAD软件都支持OBJ格式,大多数3D打印机也支持使用OBJ格式进行打印。
PS:虽然OBJ格式诞生得晚一些,也比STL有所进步,但并无实质区别。
4. PLY
典型的 PLY 文件结构:
头部
顶点列表
面片列表
(其他元素列表)
头部是一系列以回车结尾的文本行,用来描述文件的剩余部分。头部包含一个对每个元素类型的描述,包括元素名(如“边”),这个元素在工程里有多少,以及一个与这个元素关联的不同属性的列表。头部还说明这个文件是二进制的或者是ASCII的。头部后面的是一个每个元素类型的元素列表,按照在头部中描述的顺序出现。
下面是一个立方体的完整ASCII描述。相同工程的二进制版本头部的唯一不同是用词 “binary_little_endian” 或者 “binary_big_endian” 替换词“ascii”。大括号中的注释不是文件的一部分,它们是这个例子的注解。文件中的注释一般在 “comment”开始的关键词定义行里。
ply
format ascii 1.0 { ascii/二进制,格式版本数 }
comment made by anonymous { 注释关键词说明,像其他行一样 }
comment this file is a cube
element vertex 8 { 定义“vertex”(顶点)元素,在文件中有8个 }
property float32 x { 顶点包含浮点坐标“x”}
property float32 y { y 坐标同样是一个顶点属性 }
property float32 z { z 也是坐标 }
element face 6 { 在文件里有6个“face”(面片) }
property list uint8 int32 vertex_index { “vertex_indices”(顶点素引)是一列整数 }
end_header { 划定头部结尾 }
0 0 0 { 顶点列表的开始 }
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3 { 面片列表开始 }
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
这个例子说明头部的基本组成。头部的每个部分都是以一个关键词开头以回车结尾的ASCII串。即使是头部的开始和结尾(“ply”和“end_header”)也是以这种形式。因为字符“ply”是文件的魔法数字,必须是文件的头四个字符。跟在文件头部开头之后的是关键词 “format” 和一个特定的ASCII或者二进制的格式,接下来是一个版本号。再下面是多边形文件中每个元素的描述,在每个元素里还有多属性的说明。
另外一个立方体定义:
ply
format ascii 1.0
comment author: anonymous
comment object: another cube
element vertex 8
property float32 x
property float32 y
property float32 z
property red uint8 { 顶点颜色开始 }
property green uint8
property blue uint8
element face 7
property list uint8 int32 vertex_index { 每个面片的顶点个数 }
element edge 5 { 物体里有5条边 }
property int32 vertex1 { 边的第一个顶点的索引 }
property int32 vertex2 { 第二个顶点的索引 }
property uint8 red { 边颜色开始 }
property uint8 green
property uint8 blue
end_header
0 0 0 255 0 0 { 顶点列表开始 }
0 0 1 255 0 0
0 1 1 255 0 0
0 1 0 255 0 0
1 0 0 0 0 255
1 0 1 0 0 255
1 1 1 0 0 255
1 1 0 0 0 255
3 0 1 2 { 面片列表开始,从一个三角形开始 }
3 0 2 3 { 另一个三角形 }
4 7 6 5 4 { 现在是一些四边形 }
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
0 1 255 255 255 { 边列表开始,从白边开始 }
1 2 255 255 255
2 3 255 255 255
3 0 255 255 255
2 0 0 0 0 { 以一个黑线结束 }
这个文件为每个顶点指定一个红、绿、蓝值。为了说明变长vertex_index(顶点索引)的能力,物体的头两个面片是两个三角形而不是一个四边形。这 意味着物体的面片数是7。这个物体还包括一个边列表。每条边包括两个指向说明边的顶点的指针。每条边也有一种颜色。上面定义的五条边指定了颜色,使文件里 的两个三角形高亮。前四条边白色,它们包围两个三角形。最后一条边是黑的,他是分割三角形的边。
5. AMF
AMF是以目前3D打印机使用的“STL”格式为基础、弥补了其弱点的数据格式,新格式能够记录颜色信息、材料信息及物体内部结构等。
AMF标准基于XML(可扩展标记语言)。采用XML有两个好处,一是不仅能由计算机处理,人也能看懂,二是将来可通过增加标签轻松扩展。新标准不仅可以记录单一材质,还可对不同部位指定不同材质,能分级改变两种材料的比例进行造型。造型物内部的结构用数字公式记录。能够指定在造型物表面印刷图像,还可指定3D打印时最高效的方向。另外,还能记录作者的名字、模型的名称等原始数据。
PS: 虽然AMF有成为新一代3D打印数据标准的潜力,但没有巨头支持是硬伤。
6. 3MF
另一大阵营就是由微软牵头的3MF联盟,于2015年推出全新的3D打印格式——3MF(3D Manufacturing Format)。
相较于STL格式,3MF档案格式能够更完整地描述3D模型,除了几何信息外,还可以保持内部信息、颜色、材料、纹理等其它特征。
3MF同样也是一种基于XML的数据格式,具有可扩充性。对于使用3D打印的消费者及从业者来说,3MF最大的好处是大品牌支持这个格式。
虽然来得晚,但是实力强啊!看看3MF联盟的成员:Microsoft、Autodesk、Dassault Systems、Netfabb,SLM、惠普(HP)、Shapeways,个个都是巨头!加上微软宣布WIN8.1和WIN10对3MF打印格式的支持,摆明了就是来抢班夺权的。