Making the Omniverse Hub Vision Reality

At SIGGRAPH 2023, Jensen Huang (founder and CEO of NVIDIA) described Omniverse as more of a connector of tools, rather than the only tool you need. For example, over 50 tools now have direct OpenUSD support. I like this model, but is it reality today?

TL;DR: Almost – I think one more step is required.

Sharing projects with OpenUSD

Why is OpenUSD different to existing standards, like FBX, OBJ, or glTF? Partly because it was designed (by Pixar) to solve the shared project problem. Core to OpenUSD (formerly just USD, but USD also stands for US Dollars) is the ability to layer files. OpenUSD defines precise rules for how one layer can “override” the contents of a lower layer in a layer stack. This means team 1 can own one file and team 2 can own a different file and there are clearly defined semantics on how the files contents are merged together to form the final result. (When you hear “non-destructive editing”, it means you are editing your own layer file in such a stack. You may override what someone else has done, but you don’t delete or modify it.)

Is this vision really true? Doing file merges is hard enough with text, but with binary files you enter a whole new world of pain. Having separate files with clear override semantics avoids conflicts due to people editing the same file, but different people can still make incompatible changes in their own layer files (e.g. if something is renamed or moved). Overall well defined layering does help, because if it does happen, the teams can still resynchronize their work just by editing their own layers. Nothing is lost, it just needs realignment. So layers can help projects avoid conflicts, but things can still go wrong.

The practical implication is if you are working on an OpenUSD project and you know there will be different people working on it, plan out your files so you know who owns which files to avoid editing conflicts.

OpenUSD file sharing strategies

If you have multiple people on a project, how can you share file changes? Here are some options.

  • USDZ: Bundle all the files you need to share and distribute as a USDZ file (a ZIP file containing USD files). It does not really allow collaborative editing, it is more of a publishing approach where one person creates content and other users can view it.
  • Check-in/out: Use a version control service (like GitHub) to check in/check out sets of files. Individuals decide when to check files in, when to pull changes from other users, and the platform controls access to the shared asset repository. If you go this route, make sure you pick one with good large binary file support.
  • Cloud drive synchronization: Use file synchronization software to a shared cloud drive. Set up a convention for who owns what files and then have everyone sync to the same cloud location. Make a change, and it gets synced to the cloud. Everyone else pointing at the same cloud drive will then see your changes and download it. One challenge is files you are working on may suddenly change while you are in the middle of using a tool, so tools would need to be able to cope with files changing on them without notice.
  • Protected cloud synchronization: If you want greater protection, create a more customized solution with, say, a file naming convention. Make it so only you can upload files where the file name ends with your name. That way you can be sure another user won’t accidentally overwrite your files.

Omniverse Nucleus

Omniverse Nucleus brings another approach to the table.

Omniverse consists of a suite of tools, one of which is the Nucleus server. Nucleus makes it possible for Omniverse tools to connect live to a shared session, similar to multiple editors being in a Google doc at the same time. It worries about safe collaborative editing, and pushing changes out to everyone else in the same live session. It really is nice, and really supports the idea of Omniverse being a core hub for OpenUSD. As a bonus, it does not require carefully planning who owns which layer files. The Nucleus server instead can coordinate multiple people editing the same content. (I do not know the exact way it does this internally.)

This model does not rely on OpenUSD file layering. It is a different way of working. NVIDIA have been building a number of connectors with different tools that support live session synchronization. To me, Nucleus is actually the real reason that NVIDIA can claim Omniverse is at the center of the OpenUSD universe. NVIDIA have been getting multiple tools to connect to Nucleus directly.

What about teams that don’t have access to a Nucleus server? Currently Nucleus is a part of the Omniverse “Enterprise” product. (There is a workstation version you can experiment with, but it has to run on your desktop and is licensed for only 2 users.) This is where the problem arises.

Personally, I would love to see NVIDIA offer an Nucleus cloud hosting solution. I would love to use Nucleus myself, but without the hefty price tag of a full Enterprise license. Charge me for my level of usage (storage needed, multiple layers of pricing plans based on number of users, etc), but at a price small users can join the game.

NVIDIA may one day release Nucleus to the greater public as a service, I don’t know. I have no complaints Omniverse having paid products and offerings, targeted at Enterprises. I just think Nucleus is currently a missed opportunity to grow the ecosystem. The current licensing is stopping the keynote diagram with Omniverse at the center being true.

What is the right solution?

I believe the real power of sharing files is when everyone agrees on the same approach, whatever it is. So I am less concerned what the standard is, I am more concerned that all the tool vendors agree on it.

For example, NVIDIA Omniverse are launching a new RunUSD service (more info coming later) where there first step is to upload a USDZ file. Why USDZ? I now have to package my project up into a mega file, hoping I don’t run out of disk space or exceed the size limits. I have to send it all each edit I make (very slow). I would have rather provide a link to my online repository, preferably one with version control. I can have a “production” branch and just push releases to it when I am ready.

I do like and agree with the vision posed at the SIGGRAPH keynote. The real power of OpenUSD (whether you put Omniverse or something else at the center) is many tools able to work together with low friction, providing an end-to-end solution. I would argue that Omniverse being at the center at the moment is because of Nucleus. NVIDIA have built live connectors from a number of different products, giving hope for a centralized data sharing model that is agreed to by multiple vendors.

But, it’s just not open to all.

That means smaller agencies and developers will not get on board.

I don’t think that is a long term winning solution for a vibrant innovating community or Omniverse.

Note that I am not saying that with any malice, and NVIDIA may have cool plans up their sleeves. Omniverse is still a relatively new product and they are fleshing out the functionality and learning the market. I am just hoping NVIDIA take the next step, rather than keeping things restricted to Enterprise customers.

Personal recommendations

What would I do? My personal recommendation would be to make Nucleus functionality accessible to all. Omniverse, tool vendors, large business, small independent developers, agencies of all sizes. There are multiple ways this could be achieved:

  • Make Nucleus available for free (or at low cost) to run on a cloud server (e.g., as a Docker container).
  • Provides a low cost hosting solution for content online, based on Nucleus. Pay based on usage, allowing everyone to use it. NVIDIA can run it or someone else. Just make it accessible to all.
  • Open source Nucleus to open it up to the community and allow further innovation.
  • Open source/standardize the Nucleus communication protocol. Define it as a standard for the OpenUSD community to build upon, without relying on the Nucleus implementation.

If NVIDIA want Omniverse to be the hub of the OpenUSD ecosystem, then I think a Nucleus based strategy makes the most sense. Don’t only rely on file layering – allow collaborative editing of the same content. Or, agree on a file sharing strategy. If the sharing strategy is reserved to Enterprise customers, I think it will limit progress in the community. It stops small innovators (users and developers) from using it.

So I thought I would write up this blog post to share how I do think Omniverse can become the hub of a thriving ecosystem. It is so close, but just not quite there yet.

But this is all my point of view of course. What do you think?

Postscript: My Personal Background

I was Chief Architect for Magento for 4 years, an open source ecommerce platform with free and paids version (Magneto Community Edition and Magento Enterprise Edition, now Adobe Commerce). It is used by over 200,000 web sites with over 300,000 developers. Internally we faced constant decisions over growing the ecosystem vs growing revenue of the paid offering (which also funded development for the free version). What to make free is not an easy decision, and it is very hard to unwind things once the genie is out of the bottle. But if NVIDIA’s goal is to achieve the diagram and vision from the keynote, then I believe a unified model across all products supporting OpenUSD is they key to its success.


Leave a comment