Which 3D file formats are there? How do they compare? What should you use? We simply explain the most common 3D file formats used today: STL, OBJ, FBX, COLLADA, 3DS, IGES; STEP, and VRML/X3D.
A 3D file format is used for storing information about 3D models. You may have heard of the most popular formats STL, OBJ, FBX, COLLADA etc. They are widely used in 3D printing, video games, movies, architecture, academia, medicine, engineering, and earth sciences. Each industry has its own popular 3D file formats for historical and practical reasons. We will learn about 3D file formats and take a deep dive into the 8 most common 3D file formats in this article.
You can also jump to the most popular 3D file formats directly.
The basic purpose of a 3D file format is to store information about 3D models as plain text or binary data. In particular, they encode the 3D model’s geometry, appearance, scene, and animations.
The geometry of a model describes its shape. By appearance, we mean colors, textures, material type etc. The scene of a 3D model includes the position of light sources, cameras, and peripheral objects. Finally, animation defines how a 3D model moves.
However, not all 3D file formats store all of this data. 3D file formats such as STL store only the 3D model’s geometry and ignores all other attributes. On the other hand, the format COLLADA stores everything.
STL and COLLADA are just two of the many 3D file formats that people use. We estimate that there are hundreds of 3D file formats currently being used in the wild!
The problem with 3D file formats is that there are literally hundreds of them. Every CAD software manufacturer such as AutoDesk and Blender has their own proprietary format which is optimized for their software. So if you use AutoCAD, you get a DWG file. If you use Blender, you get a BLEND file.
However, the presence of so many proprietary file formats is a big problem. Suppose you use AutoCAD (which is an AutoDesk product) and your friend uses Blender. Suppose that you also want to share your 3D model with your friend.
This is not so easy. Your AutoCAD software gives you a DWG file because it is the native AutoCAD format. But your friend’s software, Blender, can only work with a BLEND file. This means that the two of you cannot work on the same 3D model.
To solve the problem of interoperability, neutral or open source formats were invented as intermediate formats for converting between two proprietary formats. Naturally, these formats have become hugely popular now.
Two famous examples of neutral formats are STL (with a .STL extension) and COLLADA (with a .DAE extension). They are widely used to share models across CAD software. If you want to share your 3D model, you convert the DWG file to a COLLADA file in a process called exporting and give your friend the COLLADA file. Your friend takes the COLLADA file and imports it into Blender, where the COLLADA file is converted to the native BLEND format. This way, you can continue to use different software and collaborate with others.
Proprietary vs. neutral is one of the most important dichotomies in the world of 3D file formats. Nowadays, most 3D modeling software supports reading and writing popular neutral formats. In addition, most software also support reading and writing to a subset of proprietary formats that are so popular that they cannot be ignored. We will discuss 8 such 3D file formats in this article. Here is the list, where the 3D file formats are marked with their type.
|3D file format||Type|
|OBJ||ASCII variant is neutral, binary variant is proprietary|
But before we discuss each these formats in detail, we will first take a look at the general features of a 3D file format and discuss the important things you should keep in mind when selecting a format for your project.
As we discussed earlier, the general features of a 3D file format are:
Every 3D model has a unique geometry and the capability of encoding this geometry can be considered to be the most basic feature of a 3D file format. Every 3D file format supports this — otherwise, they wouldn’t be considered 3D file formats.
There are three distinct ways of encoding surface geometry, each with their corresponding strengths and weaknesses. They are called approximate mesh, precise mesh and constructive solid geometry (CSG).
In this encoding, the surface of a 3D model is first covered with a mesh of tiny imaginary polygons. Triangles are most commonly used shape. The vertices of the covering triangles and the outward normal vector to the triangles are stored in the file. This represents the surface geometry of the target model.
The process of covering a surface with non-overlapping geometric shapes is also known as “tessellation”. Hence these file formats are also called tessellated formats.
The triangles approximate the smooth geometry of the surface. Hence this is an approximate format. The approximation gets better as the triangles get smaller. However, the smaller the triangles, the larger the number of triangles you need to tile the surface. This implies that the file needs to store a larger number of vertices and normal vectors. Thus better approximations come at the cost of increasing file size.
Approximate or tessellated formats are best used in situations where you don’t need ultrafine resolutions of the 3D model. A good example is 3D printing. 3D printers cannot print beyond a certain resolution and therefore, this type of 3D printing file formats are perfect for the job. In fact, the most popular 3D printing file format STL indeed belongs to this class of file formats.
There are, of course, situations where an approximate encoding of the 3D model is not enough and one needs precise encoding of the surface geometry. For example, when constructing the body of an airplane, in particular the round hull, a discrete polygonal mesh won’t work. Although the model might look good at small resolutions, the flat faces and sharp corners will become apparent up close.
Precise file formats get around this problem by using Non-Uniform Rational B-Spline patches (or NURBS) instead of polygons. These parametric surfaces are made up of a small number of weighted control points and a set of parameters called knots. From knots, a surface can be computed mathematically by smoothly interpolating over the control points.
These surfaces look smooth in any scale and can replicate the surface geometry of a small part of a 3D model in exact detail. However, there’s always a trade off. While the precise mesh is exact at any resolution, they render slower and should be avoided in applications where speedy rendering is important.
Finally, there’s yet another type of file format that does not involve meshes at all. In this format, 3D shapes are built by performing boolean operations (addition or subtraction) of primitive shapes like cubes, spheres etc. For example, to make a dumbbell, one can simply take two spheres and add a connecting cylindrical rod between. If you have ever used a CAD software, then you have seen this in action, because most of them use this principle.
Constructive solid geometry is great for designing 3D models and is very user-friendly. Another big advantage is that each individual editing step (addition, subtraction, transformations of primitive shapes) is stored in this 3D file format. Therefore, one can undo and redo any step at any time.
Clearly, if you convert this format to a mesh-based format, you will lose the information about the individual editing steps.
The second important feature of 3D file formats is the ability to store appearance related information. In many applications, the appearance of the 3D model is of prime importance. For example, no one wants to play Need For Speed with dull, colorless cars. The cars better be colorful and shiny! The color and shine of a car are examples of appearance related properties. In simple terms, appearance describes surface properties such as material type, texture, color etc. This decides how the model looks like when it is rendered.
Information about appearance can be encoded in two different ways.
In texture mapping, every point in the 3D model’s surface (or the polygonal mesh) is mapped to a 2-dimensional image. The coordinates of the 2D image have attributes like color and texture. When rendering the 3D model, every surface point is assigned a coordinate in this 2-dimensional image. The vertices of the mesh are mapped first. The other points are then assigned coordinates by interpolating between the coordinates of the vertices.
Most 3D file formats support texture mapping. In this case, the 2D image containing texture information needs to be stored within the same file or separately in a different file.
Another common way of storing texture information is to assign each face of the mesh a set of attributes. Common attributes include color, texture and material type.
In addition, a surface can have a specular component indicating the color and intensity of true mirror reflections of light sources and other nearby surfaces. Surfaces can be transparent or semi transparent. This is encoded by a transmissive component describing the color and intensity of light that passes through the surface. Transparent surfaces usually distort light passing through them. This distortion is represented by an index of refraction property, associated with the model’s material type.
The capability of encoding information about the scene is another important feature of some 3D file formats. The scene describes the layout of the 3D model in terms of cameras, light sources, and other nearby 3D models.
The camera is defined by four parameters: magnification and principal point, location, the direction the camera is facing and an arrow indicating which direction is “up”.
The encoding of the light source depends on the nature of the light source. In the simplest case of a point source, we simply need to store the source’s location, its color, and its intensity.
The spatial relationship between the 3D model and other nearby models is also sometimes stored. This is particularly important if the model is made of several parts, which needs to be laid out in a certain way to make up the scene.
It is worth noting that most 3D file formats often do not support scene information. This stems from practical reasons. When it comes to layout, one can always ensure that the parts of the model are placed in the correct location before saving the model. In this case, the file format does not need to explicitly define the relationships between the parts. The camera and light attributes can also be ignored since it is expected that the end users will change the camera position anyway as they navigate around a scene.
Some 3D file formats have the capability to store animations of a 3D model. This is very useful in game designing or movie making where animations are used heavily.
The most popular way of animating a 3D model is called “skeletal animation”. In skeletal animation, each model is associated with an underlying skeleton. The skeleton is made out of a hierarchy of virtual “bones”. The movement of bones higher in the hierarchy (parent bones) affect the bones lower in the hierarchy (child bones). This is similar to the human body, where a movement of the shin bone affects the position of the toes.
It is important to understand that these bones are not real bones, but merely mathematical constructs that help an animator define movements in a model. The bones are typically represented by a 4×3 matrix where the first three columns represent rotation, scale, and shear of the bone. The last column is the translation relative to the parent’s world space.
In addition to the transformation, each bone is given a unique ID and is associated with a subset of the mesh encoding the surface geometry. This subset moves along with the virtual bone.
Bones are connected by “joints”. Joints introduce constraints in the possible transformations associated with a bone, thereby restricting how a bone can move in relation to its parent. This is again similar to the human body – the elbow may only rotate around a specified axis while the ball joint between the thigh and pelvis allow rotation around all axis.
Here is a cool and short video explaining how bones and joints can be used to create basic animations in Cinema4D.
There are many different techniques of storing animations of skeletal structures. The most important techniques are forward kinematics, inverse kinematics, and keyframes. You can read much more about animation techniques and encodings in this Bachelor thesis by Marcus Lundgren.
We are now in good position to answer this question.
Every 3D modeling software allows exporting into many different 3D file formats. However, which one you choose for your application depends a lot on which features you need for your work and the software you are going to use. Since we are now familiar with the different features of 3D file formats, we are ready to take an abstract look at the different considerations that goes behind the choice of a particular file format. There are three major considerations.
3D file formats are used in many different sectors and industries and each has their own specific needs and requirements. Depending on which industry you are in, you might want different sets of features in your ideal 3D file format. To explain what we mean, let’s discuss three major industries using 3D file formats.
In 3D printing, high precision is not a requirement because the current printers cannot print beyond a certain resolution. Therefore, file formats using the approximate encoding of the surface geometry are ideal for the job. STL is such a file format and is the most popular 3D printing format to date.
STL, however, cannot store information related to appearance. So if you want to print a multicolor model, then you can’t use STL anymore because it cannot store color or material related information. There are other file formats such as OBJ or AMF which can store appearance related information. Thus these formats (OBJ being the most popular) are the best choice for multi-color models.
In graphics based applications, the requirements are different from 3D printing. Since we are way past the black and white era, 3D models used in games and movies require rich colors and texturing. Games and movies also need to support animation. In addition, all graphics based applications usually demand high rendering speeds. Therefore, the best formats for this kind of job would be something that uses approximate geometry to achieve fast rendering, can encode appearance and support animation. The FBX and COLLADA formats check all these boxes and hence are ideal for graphics applications.
The name says it all. In the discipline of high precision engineering such as aerospace engineering, the 3D models need to be smooth and precise at any scale. Therefore, formats using precise geometry such as IGES or STEP are going to be the best fit for this task.
Since the features of a 3D file format is a crucial consideration in identifying the ideal format, we have provided a table of features supported by the top 8 3D file formats in the appendix to this article. You can take a look at it when you need to make a decision.
The next important consideration is the software pipeline that you will use for your task. Not all software support importing and exporting of all 3D file formats. You should choose a file format that is supported by your software of choice.
For your reference, we have included a table of file formats supported by the commonly used 3D modeling software and engines in the second appendix to the article. This is another resource you can consult when deciding on a file format.
The file format that you choose not only needs to fit into your pipeline, but also into your collaborator’s pipeline. If you know your collaborators, ask them what they use and discuss which file formats fits well into both your and your collaborator’s workflow.
If you don’t know your collaborators, then it’s best to play it safe. Just choose the most popular format that satisfies the previous requirements. It’s best if the format is neutral and not proprietary.
So far, we have discussed 3D file formats at an abstract and high level. We have discussed the different features that 3D file formats implement and how you can pick the ideal 3D file format based on this knowledge. Now, let’s take a look at the 8 most important 3D file formats and find out which of these features they support, how popular they are and which industries use them the most.
If you are looking for information about a certain 3D file format, you can skip the others and jump right to that 3D file format.
STL (STereoLithography) is one of the most important neutral 3D file formats in the domain of 3D printing, rapid prototyping, and computer aided manufacturing. It is native to the stereolithography CAD software made by 3D Systems. The corresponding file extension is .STL.
STL is one of the oldest 3D file formats and was created in 1987 by Chuck Hull, who is currently the CTO at 3D Systems. He also invented the world’s first stereolithographic 3D printer. The STL file format was created subsequently as a simple way of transferring information about 3D CAD models to this 3D printer.
STL encodes the surface geometry of a 3D model approximately using a triangular mesh. Since it was one of the first 3D file formats to exploit tessellations as a way of encoding surface geometry, it has several backronyms such as “Standard Tessellation Language” and “Standard Triangle Language”.
STL ignores appearance, scene, and animations. It is one of the simplest and leanest 3D file formats available today. The STL format specifies both ASCII and binary representations. Binary files are more common since they are more compact.
Ever since its invention, the STL file format has been rapidly adopted by the rapid prototyping, 3D printing, and computer-aided manufacturing industries. It is still the most widely used file format in 3D printing.
The reign of STL over 3D printing might end soon, however. In recent years, 3D printing technology has advanced rapidly. The fidelity of printing processes are now reaching micron level accuracy. Since STL is an approximate format, it needs very small triangular facets to reach this resolution, producing huge and unwieldy files in the process. Secondly, many 3D printers now allow printing in full color, a technology that’s expected to become more widespread in the near future. STL can’t encode color information and is useless for this purpose. For these reasons, the reign of STL over the 3D printing world may not last long and formats like OBJ, 3MF, or AMF might replace it.
3D printing, rapid prototyping, computer aided manufacturing. To know more about the STL file format, you can see our detailed article on STL.
The OBJ file format is another neutral heavyweight in the field of 3D printing. It is also widely used in 3D graphics. It was first developed by Wavefront Technologies for its Advanced Visualization animation package. The 3D file format has the extension .OBJ.
The OBJ file format supports both approximate and precise encoding of surface geometry. When using the approximate encoding, it doesn’t restrict the surface mesh to triangular facets. If the user wants, he can use polygons like quadrilaterals. When using precise encoding, it uses smooth curves and surfaces such as NURBS.
The OBJ format can encode color and texture information. This information is stored in a separate file with the extension .MTL (Material Template Library). It does not support any kind of animation. The format specifies both ASCII and binary encodings, but only the ASCII encoding is open source.
The OBJ file format, by virtue of being neutral or open, is one of the most popular interchange formats for 3D graphics. It is also gaining traction in the 3D printing industry as the industry moves towards full color printing.
3D graphics, 3D printing
For more information on the OBJ file format, you can see its Wikipedia page.
FBX is a proprietary file format which is widely used in the film industry and video games. It was originally developed by Kaydara but was bought by Autodesk in 2006. Ever since the acquisition, AutoDesk has used FBX as an interchange format for its own portfolio which includes AutoCAD, Fusion 360, Maya, 3DS Max and other software packages.
The FBX file format supports geometry and appearance related properties like color and textures. It also supports skeletal animations and morphs. Both binary and ASCII files are supported.
FBX is one of the most popular choices for animation. In addition, it is also used as an exchange format which facilitates high fidelity exchange between 3DS Max, Maya, MotionBuilder, Mudbox and other proprietary software.
Video game industry and film industry. To know more about the FBX file format, you can see its Wikipedia page.
Collada is a neutral file format used heavily in the video game and film industry. It is managed by the non-profit technology consortium, the Khronos Group. The file extension for the COLLADA format is .DAE.
The COLLADA format supports geometry, appearance related properties like color, material, textures, and animation. In addition, it is one of the rare formats supporting kinematics and physics. The COLLADA format stores data using the XML markup language.
The original intention behind the COLLADA format was to become a standard among 3D file formats. Indeed, in 2013, it was adopted by ISO as a publicly available specification, ISO/PAS 17506. As a result of this history, lots of 3D modeling software support the COLLADA format.
However, the consensus is that the COLLADA format hasn’t kept up with the times. The COLLADA format was once used heavily as an interchange format for Autodesk Max/Maya in the film industry, but the industry has now shifted more towards OBJ, FBX, and Alembic.
Film industry, video game industry. For more information about the COLLADA file format, see the official docs from the Khronos Group.
3DS is a proprietary file format used in architecture, engineering, education, and manufacturing. It is native to the old Autodesk 3D Studio DOS, a popular modeling software which was later replaced by its successor 3D Studio MAX in 1996. Developed in the 90s, it is one of the oldest 3D file formats. It has become one of the de facto industry standards for storing 3D models or for interchanging between two other proprietary formats.
The 3DS file format retains only the most basic information about geometry, appearance, scene, and animation. It uses a triangular mesh to encode the surface geometry approximately, the total number of triangles being limited to 65536. It stores appearance related properties like color, texture, material, transmissivity etc. Scene information such camera position, lights can also be stored, but the format does not support directional light sources.
The 3DS format specifies a binary encoding and stores information in chunks. This allows parsers to skip chunks they don’t recognize and allows for extensions to the format.
Being one of the oldest file formats, 3DS has become a standard for storing 3D models and interchanging between other 3D file formats. Virtually all 3D software packages support it. However, since this format retains only the most basic information about the 3D model, it cannot be used in situations where one does not want to lose information. In this case, this format needs to supplemented by the MAX format (now superseded by the PRJ format), which contains extra information specific to Autodesk 3DS Max, to allow a scene to be completely saved/loaded.
Architecture, engineering, education, and manufacturing. To know more about the 3DS file format, you can check out the Wikipedia page.
IGES (pronounced eye-jess) is a neutral old timer used primarily in the defense industry and in the field of engineering. It was developed in the mid-seventies by the US Air Force.
Back in those days, the Air Force used to waste a lot of time in the tedious process of sharing and converting data between proprietary systems used by its suppliers. The situation was especially bad with larger projects like aircraft carriers or missile delivery systems involving hundreds of suppliers. The IGES format was developed by the Air Force in partnership with Boeing and others in order to serve as an interchange format that can be shared across all CAD systems. Since the 80s, the US Department of Defense has required that all defense and weapons contracts use IGES as the standard file format. The file extension corresponding to the IGES format is .IGS or .IGES.
The IGES format is an ASCII encoding that is extremely flexible when it comes to representing surface geometry. It has the ability to use circuit diagrams, wireframes, precise free-form surfaces or CSG for storing geometry related information. The format can also store colors but does not support material properties like textures, material type etc. Animation is also not supported.
IGES has enjoyed widespread popularity ever since it was invented in the 70s. It has been adopted as a national standard in many countries such as UK and Australia. Virtually all CAD software supports it.
The IGES file format is no longer developed, and yet it is still widely used to transfer data between CAD, CAM, and CAE software programs. It is a popular choice for 3D modeling, creation of technical drawings, and product design. It has the reputation of being a good choice for amateurs in 3D; professional 3D artists now prefer its successor STEP.
STEP (The Standard for the Exchange for Product Data) or ISO 10303 was developed as a successor of the IGES file format. It is widely used in engineering related fields like automotive and aeronautic engineering, building construction etc. The corresponding file format is .STP.
The officially stated objective of developing STEP was to create a mechanism that is capable of describing product data throughout the life cycle of a product, independent from any particular system. However, due to the complexity and size of the original standard, it has been later broken down into smaller, modular specifications in four major releases.
The STEP format supports all the features supported by the IGES format. In addition, it can also encode topology, geometrical tolerances, material properties like textures, material types, and other complex product data.
STEP, like IGES, is a popular format for interchange of data between CAD, CAM and CAE software programs. For compatibility, it is still advisable to use IGES as it is the more common format and more likely to work with the receiving party’s software. However, for use cases where one needs to transfer information related to the model’s appearance, tolerances of the parts etc., STEP is the right format.
Engineering e.g. automotive, aerospace, building construction etc.
For more information, read this comparative discussion of the IGES and STEP formats.
The last 3D file format we will discuss is VRML and X3D. VRML (pronounced vermal and having the file extension .WRL) stands for Virtual Reality Modeling Language. It is a 3D file format that was developed for the World Wide Web. It has been succeeded by X3D.
The term VRML was first coined in a paper by Dave Raggett titled “Extending WWW to support Platform Independent Virtual Reality” submitted to the first First World Wide Web conference in 1994. It took three more years till a mature version of the format VRML97 was created and became an ISO standard.
VRML97 was used in some personal homepages and 3D chatting sites such as “CyberTown”. However, the format failed to gain any significant adoption. In addition, VRML’s capabilities remained stagnant while realtime 3D graphics improved fast. Eventually, the VRML consortium changed its name to the Web3D Consortium and started developing the successor of the VRML format X3D, which was released in 2001.
X3D is an XML based 3D file format. It supports all features of the VRML format along with some additions.
The VRML format uses a polygonal mesh to encode surface geometry and can store appearance related information such as color, texture, transparency etc. The X3D format adds NURBS encoding of the surface geometry, the capability of storing scene related information and support for animation.
The goal of X3D is to become the standard 3D file format for the web. In particular, X3D applets can run within a browser and display content in 3D using the OpenGL 3D graphics technology. X3D was also designed to integrate seamlessly with HTML5 pages much like the SVG format for images. However, till date, the format has not received wide acceptance.
Internet and the web. For more information about the X3D format, read this guide from the Web3D Consortium.
We have learned quite a bit about 3D file formats in this article. We discussed how and why there are hundreds of formats and how they can be classified into two broad categories: proprietary and neutral. Next, we explored the most important features of a 3D file format and provided tips on how you can choose the ideal format for your application. We wrapped up with a discussion of the 8 most important 3D file formats, focusing on their features, popularity and use cases. The appendix has a wealth of information about the compatibility of these 3D file formats with the most popular 3D modeling software and engines. It also has a table for comparative analysis of the feature sets of these 3D file formats.
We hope you enjoyed this article. Share it with your friends who are interested in the world of 3D modeling, game development, special effects, engineering, architecture and 3D printing. If you have any question, opinion or feedback, please share it with us in the comment section.
|Approximate mesh||Precise mesh||CSG||Color||Material||Texture||Camera||Lights||Relative positioning|
License: The text of "2019 Most Common 3D File Formats" by All3DP is licensed under a Creative Commons Attribution 4.0 International License.