欢迎光临
我们一直在努力

STL、OBJ、FBX、GLB、3MF有什么区别?一文看懂3D文件格式

模型导出后变成灰色、尺寸差了三个数量级、骨骼消失,往往不是“文件损坏”,而是交付格式没有保存那类信息,或者接收软件没有按同一套规则解释它。

选格式前先问:这次要交付的是可切片的形状、带贴图的静态模型、带动作的角色,还是一个可以继续调整的打印工程?文件扩展名不是质量等级,也不是完整交付的保证。

1. 五种格式,先按交付内容区分

下面比较的是格式能表达什么,不承诺每一个导入器都完整支持。3MF的扩展、OBJ的材质配套文件,以及FBX的具体导出配置,都需要单独确认。

格式几何与尺寸颜色、材质骨骼与动画优先考虑的场景
STL 三角形表面;缺少标准单位声明 无统一的标准颜色、纹理支持 不承载角色骨骼动画 只交形状,接收端支持STL
OBJ 常见为多边形网格;单位需约定 常用MTL及外部纹理;实现有差异 不作为骨骼动画交换格式 静态模型交换
FBX 可组织几何与场景节点 可含材质、纹理关联 可承载蒙皮与动画 动画制作软件之间的资产交换
GLB glTF二进制容器;线性距离按米解释 可表达PBR材质、纹理 可表达蒙皮与动画 实时展示、网页或引擎资产
3MF 三角网格、对象及构建信息;有单位字段 基础材质及扩展能力,须核对支持情况 不是角色动作交付格式 制造数据交换、支持它的打印流程

同一个带颜色的角色,给网页展示和给普通单色打印机,交付重点就不一样。前者要检查贴图与材质;后者先看真实几何、尺寸和可切片性。

2. STL和OBJ:形状看得见,不等于资料交齐了

STL主要描述三角形表面。颜色和纹理不是其统一标准能力,因此不要靠转成STL来保存模型表面的花纹。其单位需要发送方与接收方约定,导入后应重新核对一个已知长度,而不是只看预览里的大小。STL格式说明

假设建模时一个边长为20的方块原意是20毫米,接收端却把同样的数字解释为米,这就不是“缩放稍有误差”。交付说明写明单位,并附一个基准尺寸,能比反复尝试导出选项更直接地定位问题。这个例子只说明单位解释,不是软件实测。

OBJ除了常见的顶点与面,还能记录法线、纹理坐标等信息;配色和贴图经常需要MTL及外部图片配合。部分软件使用额外的顶点颜色约定,不宜把它当成所有软件一致支持的规则。OBJ格式说明

所以收到OBJ时,先查看有没有mtllib,再沿着MTL检查纹理路径。只传一个OBJ,然后问为什么变灰,可能只是材质文件或图片没有一起交付。目录名、文件名大小写和相对路径,也属于交付内容。

3. FBX和GLB:带得走角色,不代表工作场景原样搬家

Autodesk的FBX SDK把场景对象、动画栈和蒙皮变形器分别建模为接口,这说明FBX交付不局限于静态三角网格。它适合承接角色和动画交换需求,但实际交付仍要检查骨骼、权重、动作片段及材质映射。FbxScene、FbxSkin

不要据此推导出“软件里能做的东西都能完整导出”。修改器、约束、程序化材质或软件专属节点是否需要转换、烘焙,应该用目标软件的导入结果确认。先约定要保留什么,再确定导出设置;只对比一张静止截图,验不出动作有没有丢。

GLB是glTF的二进制封装。glTF 2.0定义了以米计的线性距离、材质表达、蒙皮与动画等内容。一个容易被忽略的细节是:GLB仍允许引用外部资源,因此扩展名是.glb不等于所有贴图一定都封进去了。glTF 2.0规范

做展示交付时,我会先把文件复制到一个没有原始素材的目录,再交给目标查看器打开,检查贴图、动作和尺寸。这比在原工程所在目录预览更容易暴露依赖遗漏;它是交付检查建议,不是本文对所有查看器的兼容性测试结果。

4. 3MF:有制造语义,但不等于通用切片工程

3MF Core的模型元素带有unit属性,默认是millimeter,还定义了资源、对象和构建项。对于必须支持的扩展,规范要求不支持的消费者不要继续处理;它不是“忽略所有未知字段也总能正确打印”。3MF Core规范

颜色、纹理和更复杂的材质表达还涉及相应扩展。接收软件是否支持,应连同文件声明一起核对。3MF Materials and Properties扩展

还要分开两件事:模型数据的3MF,与某个切片器保存的完整工程文件。后者可能附带软件专有配置。即使都以.3mf结尾,也不能默认打印机配置、支撑设置和耗材预设可以跨软件原样恢复。

交给协作者前,最好明确这次传的是“模型”还是“工程”,并附生成软件及版本。目标是复现打印配置时,除了能打开,还要逐项核对关键设置;目标只是交付形状时,则不要让接收方误把附带的配置当成生产要求。

5. 先查文件里有什么,再排查导入器

本文章用inspect_delivery.py,做三个很窄的检查:读取OBJ里的MTL声明、列出GLB JSON中的外部资源引用、读取3MF模型部件的单位与必要扩展。它不会修复模型,也不证明文件能打印。

python3 inspect_delivery.py model.obj
python3 inspect_delivery.py character.glb
python3 inspect_delivery.py print-job.3mf

脚本已在本地使用自建最小夹具验证:OBJ声明demo.mtl时能读出;GLB JSON引用albedo.png时能列出;3MF显式写入inch时返回inch,省略单位时返回规范默认值millimeter。这些是解析检查结果,不是三款建模软件的互导测试,也不是完整格式符合性认证。

若脚本显示GLB还有外部图片,就把图片一起交付或重新打包;如果3MF单位与你预期不同,就回到导出设置确认。对于OBJ,它仅找出MTL声明,不递归验证MTL里的所有纹理;对任何格式,完整性仍要靠目标软件复核。不要对不可信的大文件直接运行,脚本设置了读取大小上限,但不是安全扫描器。

6. 一份可复用的交付清单

真正好用的选择方法,不是背一张“最强格式”排名,而是把以下几项写到交付记录里。

  • 目标软件与版本: 确认它实际支持的格式和扩展,不凭文件后缀推断。
  • 基准尺寸与单位: 导出前后各量一次;涉及节点变换时核对最终尺寸。
  • 材质依赖: 贴图是否存在、路径能否解析、显示是否符合目标用途。
  • 动态内容: 是否需要骨骼、权重与动作;需要时逐段播放检查。
  • 制造条件: 封闭性、薄壁、悬空结构和打印方向,与格式选择分开检查。
  • 源文件归档: 交换文件不能代替含参数、历史和原始素材的工程备份。
  • 只交形状,可以从双方支持的STL或3MF中选择;交静态带材质模型,考虑完整打包的OBJ或目标端支持的GLB;交动作角色,先确认FBX或GLB在目标工具链中的实际表现。选对格式解决“信息能不能装进去”,交付验收解决“对方能不能正确用出来”。

    赞(0)
    未经允许不得转载:171主机测评 » STL、OBJ、FBX、GLB、3MF有什么区别?一文看懂3D文件格式
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址