# AMF: A Better File Format for 3D Printing?

June 28, 2011

The [STL](http://en.wikipedia.org/wiki/STL_%28file_format%29) has been the quasi-default file format for 3D printing/rapid prototyping since the mid 80’s when it was developed by [3D Systems](http://en.wikipedia.org/wiki/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](http://en.wikipedia.org/wiki/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](http://www.astm.org/) under the leadership of [Professor Hod Lipson](http://www.mae.cornell.edu/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…..

**UPDATE:** You can [download the STL converter](http://creativemachines.cornell.edu/amf) and some sample files to take a look.

What does this mean exactly?

Firstly the file format is compatible with STL so you are not going to have 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](http://en.wikipedia.org/wiki/Base64 "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](http://www.objet.com/) 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_
gradiants 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**.

Found via [Makepartsfast](http://www.makepartsfast.com/2011/06/2054/new-file-format-replaces-stl/) details via [Wikipedia](http://en.wikipedia.org/wiki/Additive_Manufacturing_File_Format)
