This is a list of the “best” 3D mesh file formats for 3D Printing, including full color printing (for example, on 3D Systems Projet CJP printers). While 3MF, AMF or some other format may someday become the One True Format for 3D printing, that day is certainly not here yet! Formats for storing geometry only, texture colors or vertex colors are covered.
“Best” is a subjective term; your criteria may be quite different than mine. Below is the criteria for which the file formats were evaluated, listed in order of importance:
- Free and open (non-proprietary) – this is an absolute must; if the format is not open, then you never truly own your own data, as you will always need to pay someone else to access it. Besides, from a practical perspective this first requirement helps enable the next.
- Wide support and compatibility – especially with freeware and open source tools, including mesh editing software Blender, MeshLab, MeshMixer, Sculptris, and also slicers, 3D printing software, and 3D printing services.
- Human readable – more of a nice to have; sometimes the only way to find out why a problematic file is not working is to examine the data itself. Simple plain text formats help make this task easier, and should be preferred where possible.
Vertices, edges, faces, and normals.
BEST: Wavefront OBJ (.obj) – this is an excellent format; it is a simple, plain text format that is quite readable, and is extremely well supported.
Dishonorable mention: STL – stl is an absolutely terrible format that should be avoided wherever possible. This is due in large part because stl files do not even store a mesh, it is just a list of triangles that the 3D software program must figure out how to stitch back together. Unfortunately, it is ubiquitous and cannot be avoided entirely, besides large libraries of models only available in this format, there are still some programs that only support this.
Store full color data as a texture image file and a UV map. Note that 3D printing only supports a diffuse color map.
BEST: Wavefront OBJ (.obj) – this is an excellent format; it is a simple, plain text format that is quite readable, and is extremely well supported. There is also the benefit that even if the software does not support textures, it may still be able to load the geometry of the file.
Honorable Mention: COLLADA (.dae) – some 3D printing services (*cough* Shapeways) don’t support OBJ for some reason; in this case COLLADA is an excellent second choice. It is XML based and so is not as readable to a human IMO, and is not as widely support as OBJ, but still enjoys pretty wide support.
Dishonorable mention: VRML2.0/X3D (.wrl/.x3d) – another XML based format acceptable to some 3D printing services, these have proved to be problematic on some meshes. Stick with COLLADA instead.
Store RGB color data in the vertices.
BEST: Polygon File Format (.ply) – this appears to be the only supported format for vertex colors in Blender, so by that metric it is the “best”.