3D Model File Types – A crash course in what you need to know

Everyone talks about different 3D files. And when we speak to customers, obviously Spiff3D’s system is based on glb. But other people within the industry will have other preferred file types. There are all kinds of 3D file types.

You might have heard of FBX, OBJ, STEP, glTF, USD, USDZ etc. Why did we settle with .glb and what do they all mean anyway? Is there one file type to rule them all?

What is GLB? Is it any good?

.glb was developed by the Kronos Group. We don’t pretend to be file-type historians, but each digital file format typically stems from certain organizations who are creating certain programs for specific purposes. They all come from different points in history and from different individuals, companies or organizations who created a file type that behaves and caters to them or their industry.

For example, FBX was made by Autodesk (the creator of AutoCAD and other engineering/manufacturing industry software). FBX is a popular 3D data interchange data used by 3D editors and game engines.

It was created as part of Kaydara’s Filmbox motion capture tool i.e “FilmBox”. A Software Development Kit (SDK) was released in 2005 which turned it from a private proprietary FX file format into a public file which Autodesk encouraged other people within the industry to start using.

Other popular 3D model and scene file formats include Wavefront’s OBJ 3D format and the Khronos Group glTF 3D format.

Which 3D file type is best?

While lots of companies have made their own 3D file formats, at the end of the day, they are just file types. The best way to explain what it all means is to compare 3D file types to image file types which you’ll be more familiar with.

Asking which 3D file format is better is the same as asking whether a JPEG is better than a PNG or TIFF or SVG or EPS. They all have their own different settings, inclusions, exclusions, pros and cons etc.

PNG tends to be favoured by Apple whereas JPEG is favoured by non-Apple users. SVG and EPS are vector files whereas JPEG and PNG are rasterized. PNG’s support transparencies whereas JPEG does not.

Why Spiff3D uses .glb

Our use of the .glb 3D file type is mainly to do with size and performance. GLB is great because you can have different images and settings all within the one single file container. It’s called a file ‘container’ because that container contains lots of other files and wraps it all up. For example, a .mp4 is a common video file format used natively by Youtube and many other video platforms which includes video files, a compression codec, audio files etc. A lot of different files are all wrapped up into this one file ‘container’. Depending on how you export the .mp4, the video can be good or bad quality. But using a container format means there’s some consistency in terms of all the file elements that go into that container. For our system to show products in 3D we need to have multiple file elements present such as the ‘mesh’, colors, light refraction, animation etc.

Advantages of .glb

Unlike FBX, you don’t have to upload images and meshes or textures separately because everything is included inside the container. When you compress the whole container that has these other elements already inside, the resulting file ends up being a lot smaller than compressing them all separately. This way, you save lots of space and don’t have to have a folder with a million folders within it. Everything is just compressed together but still easy for other programs to access downstream like the ones we use within our system’s architecture.

But within the 3D community, people prefer to use different software and systems and this is why some people will prefer some file types over others. Because they are more familiar with them. Spiff3D’s 3D artists used to use FBX but pivoted to GLB to make the file size smaller and make it easier for the 3D visualization to work within an internet browser – especially on mobile. This way, we wouldn’t have to upload things like textures separately.

What kinds of things are contained within the GLB container?

Here’s an example of things that can be contained within the glb container format. This is a screenshot from a Blender file.

Here’s another view of all the elements inside the 3D file

So you’ll have your actual physical, 3D object in the 3D space. Then you have the “Mesh” of the 3D model, which has no color data or texture, no shading. Think of it just like your shaped piece of clay you have before you paint it or the blueprints of a house.

A screenshot of a 3D model ‘mesh’

Separately, you will have your image textures and materials that essentially just add the paint to your piece of clay.

You will have color texture or color map and sometimes called the ‘Diffuse’ or ‘Albedo’ map.

And then you would have Normal maps which determines the visual surface of the model including how light reacts to it. For example, human skin needs to have pores so a normal map would determine where the pores are and how deep they are.

An example of all the textures laid out from a 3D model

And then you will have material settings that are separate from the textures. For example, how reflective the surface is, how light refracts, how glossy it is etc.

 

All of those settings, textures, meshes combined in as one file after exporting, it’s much easier than separated file types. And you only have to load that one file into the same, rather than loading each individual file, avoiding having to load every individual texture and everything.

Does having a CAD file of the product to start with help?

CAD files typically just contain data about the object itself without coloring or anything else that isn’t necessary for manufacturing. They are good for providing specific commands and positions for CNC machinery, casting etc. They are very, very exact and the scale is perfect in the 3D program that they use. So the CAD file will contain things that tell a machine where it’s located and how much material to cut out in order to make that shape and spot.

In terms of using them to create the glb file that’s suitable for our system they can provide a starting point. So customers can provide us an export from a CAD file and we can add color and textures to it and make it behave and look like the product would in real-life.

Like we’re specifically trying to make it look as realistic as we can to run on mobile. So we are going to use the format that supports that the best, which was FBX.

Then we went to JLB because it’s small, they would use CAD files for the sort of machinery, because it wouldn’t make sense to use anything else because it wouldn’t be as accurate or behave the same way. So also risks behaving exactly like. They need for their purpose. Okay, great. Um, I think that’s all my questions.

Is glb the same as glTF?

To be clear, GLB is a version of glTF. The biggest difference is that glTF is based on JSON (JavaScript Object Notation) and GLB is instead, binary. As we already mentioned above, with GLB, everything like textures, shaders, and animation are all stored within the container file. But, similar to FBX, with glTF, some of these elements are stored in external files.

3D model creation programs

Opening and editing glb files can be done via 3D design programs. Blender, 3D paint, Sketchfab, Earth and CityEngine can all be used.

Cinema4D, 3DSmax, Autodesk Maya, Keyshot and more can also be used depending on the use-case.

Posted in

johnjames