zoukankan      html  css  js  c++  java
  • 3D模型的格式

    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打印格式的支持,摆明了就是来抢班夺权的。​

  • 相关阅读:
    spring框架的jar包下载
    十四、注解(阶段三)
    十三、反射机制(阶段三)
    十二、多线程(阶段三)
    十一、I/O流(阶段三)
    十、集合类(阶段三)
    九、异常处理(阶段三)
    八、常用类(阶段三)
    IDEA安装及基本配置
    在eclipse中,用maven创建一个web项目工程
  • 原文地址:https://www.cnblogs.com/brt2/p/14206226.html
Copyright © 2011-2022 走看看