FROMAY社区

3D打印信息交互平台

您的位置:首页 > 社区 > 3D打印及绘图教程
  • chien
    3d基础知识 2014-11-03
           学习和研究3D打印技术,首先要理解什么叫做“3D”。3D,是英文Three Dimension的缩写,中文也翻译成“三维”,因此,3D打印技术也常被称作“三维打印技术”。简单来说,所谓“三维”,就是指“前后”、“左右”和“上下”三个维度。同样,“一维”则是仅有“前后”,“二维”则是加上了“左右”,“二维”一般就是指平面。“前后”、“左右”和“上下”都属于相对概念,不能够精确地量化定位空间中的位置,我们需要一个合适的数学工具——笛卡尔坐标系。下面将会简单介绍如何使用笛卡尔坐标系来定位空间位置。
          有了空间位置的描述,接着介绍3D数字模型是如何使用点、线和面来表示的。
          最后以3D打印中模型数据的通用储存格式STL为例子,简介3D数据格式。
     【笛卡尔坐标系】

           一个三维空间的笛卡尔坐标系如图所示,它由X轴、Y轴和Z轴三条在空间中互相垂直的直线来表示,而三轴的交点被称作“坐标原点”,一般记作O。而三条坐标轴直线往往都标示了箭头,这个箭头指向的是坐标值的正方向。



    坐标轴示意图
          在一般的右手坐标系中,直观地讲,X轴表示“前后”,正方向为向前的方向,即在坐标原点前面的为正值,在坐标原点后面则为负值;Y轴表示“左右”,正方向为向右的方向,即在坐标原点右边为正值,在坐标原点左边为负值;Z轴表示“上下”,正方向为向上的方向,即坐标原点上方为正值,坐标原点下方则为负值。
           那么,坐标原点的坐标值为(0,0,0)。
           坐标(5,-3,4)表示空间中的一个点,它在坐标原点的前面距离为5,左边距离为3,和上方距离为4的位置。而坐标(1,2,3)则表示空间中在坐标原点前面距离为1,右边距离为2和上方距离为3的点。
           有了笛卡尔坐标系,我们就能够对空间中的位置做出准确地量化描述。笛卡尔坐标系的概念是高中立体几何的基本概念,也是所有3D技术的基础。在机械设计领域,笛卡尔坐标系也是最基本的概念,有一大类机械结构都被称作“笛卡尔机械”。 笛卡尔机械可以沿着三个互相垂直的方向作直线运动,即X轴、Y轴和Z轴,这三个轴构成了所谓的笛卡尔直角坐标系。3D打印机的机械定位装置和传统的数控机床(CNC)一样,都来源于笛卡尔机械。因此,笛卡尔坐标系是本书读者必须要掌握的概念。
     
    【点、线、面】
           点云(Point Cloud)。有了笛卡尔坐标系,我们就能够通过坐标来表示空间中任意点的位置。一般我们通过3D扫描仪直接获得的数据,是一系列的点,也被称作“点云”。


    点云
          三角网格(Mesh)。仅仅有“点”是不足以显示一个三维实体的,我们还需要有“面”的信息。空间中不重合的两点相连,会构成一个条直线段;空间中不重合且不共线的三个点依次相连,会形成一个三角形,而一个三角形就能确定一个平面,也称作“三角面片”。一个物体的表面,可以由一系列地三角面片来离散近似,这些三角面片组成的表面,又称作“三角网格”。也有用四边形来表示平面的四边形网格等数据结构,三角网格是最一般、应用最广的网格数据结构。

    三角网格
           法向。法向,从字面上理解,就是法线的方向;而法线,与当前点所在的平面垂直的直线。对一个三角面片中的点来说,它的法线就是该面的垂线,其方向指向“向外”的方向;对三角网格中的顶点来说,它可能属于多个三角面片,因此,它的方向由这些三角面片的法向累加后归一化而得。法向是三维模型中点最重要的属性之一,它通常指向模型的外部,在3D打印的切片过程需要依靠它来判断一个点是否属于模型的内部;模型的法向,能够反映模型的“凹凸”程度,即光顺的程度;在光照模型中,光线方向与点法向的夹角,能够反映改点的明暗程度,从而得到更真实的渲染效果。

    加了平滑光照后模型更具有真实感
     
    【常见3D模型数据格式简介】
           3D数字模型至今没有统一标准文件格式,各个厂商、研究所都可能拥有属于自己的文件格式。目前,比较常见的3D数字模型的文件格式有: PLY (斯坦福大学的多边形网格格式)、 STL(3D打印数字标准文件格式)、 OBJ(Alias|Wavefront公司推出的模型文件格式)、OFF(普林斯顿大学实验室定义的模型文件格式)等等。
          在这一系列文件格式中,STL文件格式作为3D打印数字标准文件格式,现在已成为全世界CAD/CAM系统接口文件格式的工业标准,也是3D打印机支持的最常见的格式。OBJ文件则由于其能保存更加丰富的材料、纹理信息,成为3D建模、处理领域最通用的接口文件格式之一。我们将主要介绍STL与OBJ这两种文件格式。
           STL文件有两种:一种是ASCII文本格式;另一种则是二进制格式。它们储存的信息相同,各有优缺点:ASCII文本格式可以用文本阅读器直接阅读,可读性好;二进制格式则无法用文本阅读器阅读,可读性差,但它更节省磁盘空间,为ASCII文本格式的1/6左右,读写也更快。
           STL三维模型由一系列的三角面片构成。每个三角面片(facet)则由法向坐标(facet normal)和三个顶点坐标(vertex)构成。
           ASCII格式的STL文件结构如下:
           solid objectname //首行,物体名(一般有solid开头) 
                  facet normal x y z //三角面片法向量的 3个分量值 
                        outer loop   
                              vertex x y z //三角面片第一个顶点坐标   
                              vertex x y z //三角面片第二个顶点坐标   
                             vertex x y z //三角面片第三个顶点坐标   
                        endloop 
                  endfacet //一个三角面片定义结束   
                …….
             endsolid objectname   //整个 STL文件定义结束
     
             二进制格式的STL文件结构如下:
             UINT8[80]   //文件头信息 
             UINT32     //面片数目N 
             REAL32[3]   //第1个面片的法向量 
             REAL32[3]   //第1个面片第1个顶点 
             REAL32[3]   //第1个面片第2个顶点 
             REAL32[3]   //第1个面片第3个顶点 
             UINT16 //第1面片的 16位整数型属性字,一般为0,无特别含义 
             …….
             REAL32[3]   //第N个面片的法向量 
             REAL32[3]   //第N个面片第1个顶点 
             REAL32[3]   //第N个面片第2个顶点 
             REAL32[3]   //第N个面片第3个顶点 
             UINT16 //第N面片的 16位整数型属性字,一般为0,无特别含义
     
          可以看出,STL文件还是十分简洁易懂,它通过保存三角网格每个三角面片的信息来保存整个三角网格。然而,STL文件还是丢失了一些信息,比如点与三角面片之间的拓扑关系等。对于三角网格中,一个顶点可能同时是多个三角面片的顶点,在STL文件中并没有直接保存,在一定程度上造成信息丢失和数据冗余。
           与之对应,OBJ文件格式则保留了顶点与面之间的拓扑关系,同时还存有纹理坐标等信息,比STL文件有更加丰富的信息。
           OBJ文件由顶点数据(顶点位置v,顶点法向vt,顶点纹理坐标vn)和元素数据构成,元素数据一般就是面(facet, f)。OBJ文件是ASCII文本格式,可以由文本阅读器打开,十分易读。
           OBJ文件中,每行的数据信息由行首的关键字决定。
           若行首仅是v, 说明该行表示的是顶点位置,后面跟着三个实数(x,y,z)表示该顶点的坐标;
           若行首是vn, 说明该行表示的是顶点法向,后面跟着三个实数(x,y,z)表示该顶点方向的坐标;
           若行首是vt,说明该行表示的是顶点纹理坐标,后面一般跟着两个实数(x,y)表示该顶点的纹理坐标。
    顶点数据按顺序依次对应。
           若行首是f,说明该行表示的是面的信息。后面会跟着一些索引,一般索引的数量是三个;每个索引可能会有顶点索引,法线索引,纹理坐标索引,以/分隔。法线索引和纹理坐标索引并不是必要的,一般也会省去。f i1 i2 i3 表示第i1个顶点、第i2个顶点和第i3个顶点构成了一个三角面片。
           一般来说,如无渲染方面的要求,OBJ文件仅保存顶点位置v和面f的信息即可。一个三角形的数据可保存如下:
           v 0 0 0
           v 1 0 0
           v 0 1 0
           f 1 2 3

          其保存成obj文件,其可在模型显示软件中,显示如下图所示。


    简单三角形的OBJ文件显示结果

    (转自阿巴赛3D教育)

评论请先

梦想到现实的桥梁。
The bridge of dream
into reality.
菲美科技是一个产生梦
想、付诸梦想、实现梦
想的地方。
菲美信息
关于菲美
About us
公司动态
The company dynamic
新品推荐
New product recommendation
菲美社区
配件专区
Accessonries section
我的机型
My machine type
购机优惠
Please refer the preferential
模型服务
模型绘制服务
Model rendering services
免费模型
Free model
FROMAY自主设计
FROMAY the independent design

梦想到现实的桥梁。
The bridge of dream
into reality.
菲美科技是一个产生梦
想、付诸梦想、实现梦
想的地方。
我想关注更多。
技术支持:荣华软件