由于今天要做一个stl的切片,手头可用的模型资源是一个mb(Mayabinary)文件,export的时候发现并不能搜到stl输出格式,所以便在在google上搜了一些 “如何从Maya导出stl” 的资料,发现主流的推荐的解决方法为:

  • 先在Maya里导出obj文件,然后再把obj文件导入另一个软件(例如3Dmax)后再导出stl格式。(看到这个方法就不想用,心理默默的想Maya怎么可能不带stl输出,你们不仔细找找就想用这种解答糊弄我)

我觉得Maya这么厉害的软件应该要有自己导出stl的方法,只是这群给答案的凡人没有仔细找而已,于是在我不懈的寻找下,搜出了Autodesk官网的community给出的解决方法:

Maya 2017 - 无 STL 导出

解答的图片被我无情地抠出贴到了下面:

请大家务必注意第一张图的红框框内的: Version: Autodesk Maya2017 Update3

恩恩,只有这两张图,让人感觉非常的好操作~

因为我的Maya也是上个月从学校的software里面下的,想想应该是最新版本,然后我便如法炮制,在Windows->Setting/Preferences->Plug-in Manager中找到ATFPlugin.mll插件,发现已经被勾选了,如下图

这时我就产生了一点点疑惑,既然插件都装了应该是可以导出stl的吧,但是为什么export的时候没有stl的格式选择呢。

于是开始研究官方提供的第二张图,发现它export的时候option竟然有选择File type,而我的export的时候并不提供File type的选择,如下图

用找不同的方式仔仔细细的看了许久官网的图,最后从自己电脑的Maya2017里的Help->About Autodesk Maya中发现了一个细节差别,虽然同样是Maya2017,但我装的并不是Maya2017 Update3!!!!!

可想而知,最后我只好在网上找了一个在线obj转stl的程序把我的stl文件导出来了。。。

Finally, 推荐大家先从Maya把obj文件导出来后,再用online的文件转换系统转成stl就好(有Maya2017 Update3及以上的除外)

恩恩,瞎忙活了大早凑一个段子,希望大家看的开心~

(呜呜呜,我宝贵的时间…)


这里普及一下stl的概念:

美国3D Systems公司于1987年制定了STL (STereoLithography)文件格式,它以小三角面片为基本单位,离散地近似描述三维实体模型的表面.STL 文件最初应用于快速成形(Rapid Prototyping ,RP)领域 ,并迅速成为RP领域事实上的工业标准;同时,STL 文件也在快速成形之外的各种需要三维实体模型的领域中获得了广泛的应用.

STL文件规则:

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

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

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

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

STL文件的分类:

目前的STL文件格式包括二进制文件(BINARY)和文本文件(ASCII)两种.

  • 二进制格式

二进制STL文件用固定的字节数来给出三角面片的几何信息。

前面84个字节描述3D模型文件信息。文件起始的80个字节是文件头,用于存贮零件名;紧接着用 4个字节的整数来描述模型的三角面片个数。

后面逐个给出每个三角面片的几何信息.每个三角面片占用固定的50个字节,依次是 3个4 字节浮点数(角面片的法矢量)3个4 字节浮点数(第一个个顶点的坐标)3个4 字节浮点数(第二个顶点的坐标)3个4 字节浮点数(第三个顶点的坐标)最后2个字节用来描述三角面片的属性信息。

  • ASCII文件格式

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

1
2
3
4
5
6
7
8
9
10
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文件定义结束