[2] An STL file describes a raw, unstructured triangulated surface by the unit normal and vertices (ordered by the right-hand rule[2]) of the triangles using a three-dimensional Cartesian coordinate system.
[8] STL files describe only the surface geometry of a three-dimensional object without any representation of color, texture or other common CAD model attributes.
[12][13] An ASCII STL file begins with the line: where name is an optional string (though if name is omitted there must still be a space after solid, for compatibility with some software).
There are at least two non-standard variations on the binary STL format for adding color information: The red/green/blue ordering within those two bytes is reversed in these two approaches – so while these formats could easily have been compatible, the reversal of the order of the colors means that they are not – and worse still, a generic STL file reader cannot automatically distinguish between them.
There is also no way to have facets be selectively transparent because there is no per-facet alpha value – although in the context of current rapid prototyping machinery, this is not important.
In both ASCII and binary versions of STL, the facet normal should be a unit vector pointing outward from the solid object.
However, native formats associated with many 3D design applications use mathematical surfaces to preserve detail losslessly in small files.
3D printers build objects by solidifying (SLA, SLS, SHS, DMLS, EBM, DLP) or printing (3DP, MJM, FDM, FFF, PJP, MJS)[19] one layer at a time.
However, since it is possible to vary the layer thicknesses for a faster though less precise build, it was easier to define the model to be built as a closed polyhedron that can be sliced at the necessary horizontal levels.
To properly form a 3D volume, the surface represented by any STL files must be closed (no holes or reversed vector normal) and connected, where every edge is shared by exactly two faces, and not self-intersecting.
The missing surface matters insofar as the software that slices the triangles requires it to ensure that the resulting 2D polygons are closed.
Although the output is simple to produce, mesh connectivity information is discarded because the identity of shared vertices is lost.