The STL has been the quasi-default file format for 3D printing/rapid prototyping since the mid 80's when it was developed by 3D Systems but a lot has changed in 3D printing since then with increased quality and complexity yet STL has remained the same.
Now we have a new contender called AMF (Additive Manufacturing File Format) that is better suited to today's and hopefully tomorrow's) 3D printers. Developed by the American Society for Testing and Materials under the leadership of Professor Hod Lipson of Cornell University AMF addresses what STL lacks with a more advanced file structure including object, material, texture, constellation and metadata with a specifiable unit system, curved triangles, Metadata and all of this in half the size of a comparable STL file.....
Firstly the file format is compatible with STL so you are not going to
have to do the BetaMax shuffle and have nightmares of transference. The
format still uses a triangle to specify the geometry but with the added
bonus of curved triangles which means smoother models!
Curved triangles and curved edges can optionally be specified in order
to reduce the number of mesh elements required to describe a curved
surface. The curvature information has been shown to reduce the error of
a spherical surface by a factor of 1000 as compared to a surface
described by the same number of planar triangles.
Anyone who has wrestled with VRMLs will be glad to know AMF also accepts color and texture map information. Color information and can be inserted at the material, object, volume, vertex, or triangle
levels, and takes priority in reverse order (triangle color is highest
priority). Texture data can be represented as either a 2D or a 3D array, depending on
whether the color or material need to be mapped to a surface or a
volume. The data is represented as a string of bytes in Base64 encoding, one byte per pixel specifying the grayscale level in the 0-255 range.
Perhaps one of the most exciting developments is the ability to specify mixed, graded, lattice, and random materials in one file!
This is currently especially relevant to Objet processes that allow you to mix and combine material properties though this is sure to become infinitely more complex and powerful in the very near future thanks in part to AMF.
New materials can be defined as compositions of other materials. The element <composite>
is used to specify the proportions of the composition, as a constant or
as a formula dependent of the x, y, and z coordinates. A constant
mixing proportion will lead to a homogenous material. A
coordinate-dependent composition can lead to a graded material. More
complex coordinate-dependent proportions can lead to nonlinear material
gradients as well as periodic and non-periodic substructure. The
proportion formula can also refer to a texture map using the tex(textureid,x,y,z) function. Reference to material-id "0" (void) can be used to specify porous structures. Reference to the rand(x,y,z) function can be used to specify pseudo-random materials. The rand(x,y,z) function returns a random number between 0 and 1 that is persistent for that coordinate.
Print constellations are possible to specify the position and orientation of objects to increase packing
efficiency and to describe large arrays of identical objects. This may also become an easy way to define print orientation?
Finally there is also facility to include Metadata such as name, textual description, authorship, copyright information and any other special instructions.