【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply / .npz
【3D入门-指标篇上】3D 网格重建评估指标详解与通俗比喻【3D入门-指标篇下】 3D重建评估指标对比-附实现代码
1. 格式基本信息与核心特点
格式全称开发背景核心特点.objWavefront Object由Wavefront公司开发文本格式为主,支持多面体、材质关联,适合建模软件间交换.stlStereolithography由3D Systems开发仅支持三角形网格,结构简单,专为3D打印设计.plyPolygon File Format斯坦福大学开发高扩展性,支持自定义属性(颜色、强度等),适合三维扫描数据.glbGL Transmission Format基于Khronos Group的glTF标准二进制格式,紧凑高效,内置材质/动画,专为实时渲染和web传输优化.npzNumPy Compressed Archive基于NumPy科学计算库压缩二进制格式,可存储多个NumPy数组,适合3D数值数据的存储与程序处理
2. 关键能力对比表
对比维度.obj.stl.ply.glb.npz支持的几何类型多边形(三角形、四边形等)仅三角形多边形+点云+顶点属性三角形/多边形+骨骼/动画数值化几何(顶点数组、面索引等)材质与纹理支持(需关联.mtl文件)不支持支持(自定义属性)内置(无需外部文件)不直接支持(需通过数组存储属性值)动画支持不支持不支持不支持支持(骨骼、变形动画)不直接支持(可存储关键帧数值数组)文件格式文本(主流)/二进制文本/二进制文本/二进制二进制(单一文件)压缩二进制(ZIP容器)文件大小较大(文本冗余)中等(二进制紧凑)中等-较大(依属性多少)小(二进制压缩优化)小(压缩存储数值数据)加载速度较慢(文本解析耗时)较快中等极快(二进制+预编译)快(直接加载为数组)扩展性弱(固定格式)极弱(仅几何)强(可自定义属性)强(支持扩展规范)极强(可自由定义数组结构)兼容性建模软件(Blender/Maya)3D打印软件(Cura)扫描软件(MeshLab)实时引擎(Unity/Three.js)编程环境(Python/NumPy生态)
3. 典型应用场景
.obj: 3D建模、动画前期制作、游戏美术资源交换(需传递材质信息时)。例如:设计师用Blender导出模型给Maya时保存为.obj,同时附带.mtl材质文件。
.stl: 3D打印、快速原型制造、有限元分析(FEA)。例如:用CAD软件设计零件后,导出为.stl格式导入切片软件(如PrusaSlicer)生成打印路径。
.ply: 三维扫描数据存储、点云处理、逆向工程。例如:激光扫描得到的物体表面点云(含颜色、反射强度)保存为.ply,用于后续网格重建。
.glb: Web3D展示(如Three.js场景)、AR/VR应用、实时渲染引擎。例如:电商网站用.glb格式展示3D商品模型,支持用户实时旋转缩放;VR游戏中用.glb加载带动画的角色模型。
.npz: 3D数据预处理、机器学习训练、程序间数值数据交换。例如:将点云的坐标、法线、特征向量等数据存储为.npz,供3D深度学习模型(如PointNet)加载训练;在三维重建流程中,保存中间计算的深度图、体素网格等数值结果。
4. 核心差异总结
存储效率:.glb ≈ .npz > .stl > .ply > .obj(二进制格式普遍优于文本格式,.npz的压缩特性适合纯数值数据)。功能丰富度:.glb(支持动画、内置材质) > .ply(自定义属性) > .obj(基础材质) > .npz(纯数值存储) > .stl(仅几何)。行业适配:
建模/设计:.obj3D打印:.stl扫描/逆向工程:.ply实时渲染/Web/AR/VR:.glb数据处理/机器学习:.npz
实际应用中,格式选择需结合具体需求:若需在软件间交互可视化模型,选.obj/.glb;若处理3D打印,选.stl;若需保留扫描数据的丰富属性,选.ply;若需在程序中高效存储和处理3D数值数据(如训练AI模型),.npz是最优选择。