glTF or OpenUSD - Which is the best 3D file format to use?
3D model by Husky (@ZubenelgennubiHusky) under Creative Common 4.0 license

glTF or OpenUSD - Which is the best 3D file format to use?

4D Pipeline. Updated: November 2023.

I've been doing 3D graphics for my entire career and over the last ~25 years we've seen many 3D file formats come and go, often one promising to be "The 3D File Format" (to rule them all). Finally now, we have two amazing 3D file formats that will work for most of your needs.

I am often asked - what should we use - USD or glTF? (USD is technically now called OpenUSD).

Both formats are 3D, Open, and Royalty Free to read or write/create.?

Both are fairly new formats and are actively being developed. However, the objectives of each of them are different:

  1. USD’s primarily provides interoperability as a central storage format during the content creation process.
  2. glTF is primarily a publishing format (for web and downstream real-time applications).

USD is more targeted towards "scene description", so describing a whole hierarchy with tons of objects, while glTF is more aimed towards describing a particular asset.

That said, glTF can be used as a storage format and USD can be used for publishing.

Let’s dive deeper into the different file formats:

Universal Scene Description (USD) (now called OpenUSD)

Universal Scene Description (USD) is an open source 3D exchange format developed initially by Pixar. It is designed for storage, interchange, and interoperability between different 3D packages.? As its name entails it’s used to save scene descriptions and it is intended for file editing in digital creation tools. Variants of USD are USDA, USDC, and USDZ. USDA is a simple ASCII format, USDC the binary (and faster) format. USDZ is a container for the format in ZIP and it’s predominantly used by Apple.

USD provides a centralized hierarchical representation of the data so that it can be used by multiple applications at different stages of the production pipeline.

It also provides a modular architecture and new technologies and applications can easily be integrated.

It’s recently been renamed to OpenUSD.

USD is more targeted towards "scene description", so describing a whole hierarchy with tons of objects.

Pros:

  • Supports a rich and wide set of features such as 3D models, scene hierarchy, materials, lighting, animations, bones, skinning, and blend shapes.
  • Great as a central storage format to manage production pipelines with multiple applications: compatibility with many Digital Content Creation (DCC) tools and 3D engines, Adobe Substance, Autodesk Maya/…, Houdini, UE4, Blender, NVIDIA Omniverse, …
  • Supported by other applications to accurately and easily move data from your 3D editor to another tool.OpenUSD alliance exists and has wide support for Interoperability and Collaboration
  • Fairly fast runtime processing especially when compared to STEP and older formats.

When creating a feature film or working on a process with multiple users or steps, you can use its layer properties to coordinate animators, technical directors, modelers, artists, …?

  • Support for layering and composting.?
  • USD's layering approach allows a scene to contain a whole bunch of layers. The USD SDK composes them together into a single, combined USD Stage when you open it. So an Animator may work on one "file", set dressing in another "file", but later on they are combined in the same stage.
  • Note: In USD a "layer" is essentially just a file.
  • USD also has a notion of variant management, for example to see an object in different colors or with different geometric options. For example, an animator may want the cube to be red, but set dressing wants it to be green: Depending on how the stage is composed it may end up red or green, but both of those "opinions" will remain on their respective files --> This is another way of doing "non-destructive editing”.

Cons:

  • No Android support.
  • No native Web support.
  • You always need the USD SDK.?When you read USD files from disk you always do it by calling a function of the SDK to ingest the file. This is because USD is very complex, and you need the code in the USD SDK to properly combine all the referenced files and opinions from them.
  • Bigger file sizes (than glTF).
  • No dedicated compression - only uses zip.
  • It’s a younger format and is still undergoing quite a bit of change (for example, material side of USD is actually being phased out in favor of MaterialX).

More information can be found at the Alliance for OpenUSD.


Graphics Library Transmission Format (glTF)

GL Transmission Format (glTF) is a file format for efficiently displaying 3D scenes and models in real-time. It is often called ‘the JPEG of 3D’ and it is developed and maintained by the Khronos Group and designed to be compact and easy to use. It supports PBR materials, hierarchical animations and JSON-based data storage. It is the standard for real-time 3D graphics in modern web and mobile applications. The current version is glTF 2.0.

.glTF is JSON based, .glb is a compressed binary version of it. Both can reference external textures.?

glTF is more aimed towards describing a particular asset (vs an entire interactive scene).

glTF the JPEG for 3D.


Pros:?

  • Great for Web and has strong browser compatibility.
  • Strong Mobile support (iOS and Android).
  • Compatibility with many DCCs and 3D engines.
  • Lightweight due to proprietary compression formats.
  • Fast processing and runtime.
  • For low poly it’s particularly optimized (faster loading and smaller file size).
  • Extensibility, existence of many open source libraries and extensions. The glTF format can be extended with arbitrary JSON to add additional functionality. Extensions can be placed on any part of a glTF, including nodes, animations, materials, textures, and on the entire document.

Cons:

  • Does not have as sophisticated material system although there are Physically Based Rendering (PBR) material extensions https://www.khronos.org/blog/blender-gltf-i-o-support-for-gltf-pbr-material-extensions
  • Not as feature rich as USD.
  • Not as easy to move data from your 3D editor to another 3D Editor. That said, there are plenty of glTF exporters to move 3D data downstream for viewing or collaboration. Autodesk Max, Maya, Blender, etc, all have glTF exporters.
  • The format is also still under development and still changing.?

More information can be found on the Khronos Group glTF page.


Hopefully that's a helpful summary to each format.

At 4D Pipeline, we use both formats often with our customers.

We've written over a dozen USD and glTF importers and exporters for different 3D software providers like Adobe and Epic Games. We've helped many enterprise customers use these 3D formats as part of their automation pipelines.

When building an online 3D car configurator for Honda. The original CAD file had 300 million triangles (after tessellation) for the car, far too big for displaying in a WebGL viewer. We processed, optimized, and broke it down to a ~300 thousand triangle glTF file to show up in a web browser. This then allows the customer to change the seating colors, accessories, wheels, trim, change the paint job etc. Making the car to be as realistic as possible and load quickly via web. Ultimately, making the car look great and having the customer engaged as soon as possible. Creating customer engagement, delight and fun will lead to the purchase. Anything that inhibits this process has to be removed. But not at the cost of quality.” - Says Jason from 4D Pipeline.

Another example of using the glTF file format is for the collaboration between IKEA and Geomagical Labs (both customers of 4D Pipeline).

IKEA utilizes Geomagical Labs technology to take a photograph of your room. Ideally taking 10 photographs from slightly different points of view. AI will then turn the photo into a 3D scene. Then the customer can take Ikea furniture and drag and drop it into the room where they want it. At 4D Pipeline, in order to accomplish this, we built an optimization system to process all their 3D files into low poly glTF files to come into the system fast and design their rooms. Our system figures out the optimal geometry and material package to yield a good visual experience while decreasing the size of the glTF file. When the customer drops an item in it will react with the scene and lighting. We also made them a glTF viewer and we are training their AI to recognize the data for machine learning.”??

It is important to start with the “why” and then choose the right file format with your technology team for your needs. If you want any guidance on which format to choose or how to bring your product into 3D and online, please reach out to us at [email protected]

Thanks for reading!




Thomas Kumlehn

AR Quick Look & Web Specialist

1 年

Do not rely on the platform supporting any of the 40+ KHR extensions to glTF. In example Android's AR service "SceneViewer" only supports 2 of those. Avoid converting from glTF to OpenUSD, as glTF only supports TriMeshes, but FBX and USD support Quads (consider SubD, NURB coming soon to Omniverse and Apple) and have a much better topology for any processing except WebGL. glTF is locked in (now) outdated GPU specs. Having OpenUSD master files and convert them to glTF seems fine (MaterialX and OpenPBR now have to fill a big gap, because the above mentioned 40+ extensions and pbrNext need to be supported). Google navigated itself in a deadend, because glTF is and will ever be a Web-transmissing / WebGL/GPU dedicated format, just for single assets. Google uses it to force all use cases to a browser (preferably Chrome). We all know why. Bigger structures like scenes, game levels are totally out of scope (only enthusiasts work on several, unrelated implementations of so called BehaviourGraphs). Apple went ahead 3yrs ago and RealityKit becomes a full fledged game engine next year. The current deadend: Google wants to finally (after 6yrs) bring WebXR to SmartPhone-AR, but is blocked by a patent troll (named Niantic/8thwall) to do so.

Brian Savery

Developer specializing in 3D rendering and graphics creator applications

1 年

The way I see it is that USD is best used for interchange with editable 3D data, GLTF for content delivery of final data for rendering. Both of these tools get much harder to use when not for their intended purposes.

Lina P.

Building the future of AI + ecommerce

1 年

Very well written and considered. Thank you for posting this. I don’t know too much about USD other than that it is Apple primarily. What are the downsides of using gLTF for scene description?

Michael Murray

Senior Solutions Engineer for Nextspace Digital Twin platform

1 年

Great overview thanks Jed! I knew allot about glTF and very little about USD - you’ve just fixed that :)

David Pollock

CGI | 3D Configurators | AI

1 年

Thanks for sharing!

要查看或添加评论,请登录

Jed Fisher的更多文章

社区洞察

其他会员也浏览了