Integrating a game engine into Omniverse

We have a separate game engine built in C++ and running on D3D12 that we would like to integrate into Omniverse. Basically we are looking to use something like Create as our editor, but integrate our game in a separate viewport, to speed up iteration. The game viewport won’t necessarily reflect the current scene in the main viewport, for the sake of the discussion it can be thought to be rendering something else completely.

My question is, how would I accomplish such a thing? Two options I’ve heard mentioned are:

  1. A custom Hydra renderer
  2. Copying our backbuffer into the viewport.

Correct me if I’m wrong, but my understanding is that if I were to implement a Hydra renderer, it would basically largely reflect the current USD scene. I.e. it wouldn’t be a suitable choice for an independently running game?

And for the other option, I’ve messed around a bit with the viewport extension, and maybe I’m missing something obvious, but I don’t see how I would actually do such a copy. Admittedly I’m an Omniverse newbie, and not particularly experienced with Python either, so maybe I’m looking in the wrong place entirely. Or should I perhaps wait for the upcoming C++ support, given that our game engine is running in C++?

Any pointers much appreciated.

Hi @emil.persson. I think it will depend on the workflow that you’re envisioning. A couple of other options that I’ve seen game devs exploring:

  1. Game Engine Omniverse Connector: Some college students connected their game engines to Nucleus using the Connector API: NVIDIA Community Stream | Community Spotlight: UAD Students Created Omniverse Connectors - YouTube
  2. FileFormat Plugin: A custom FileFormat plugin for USD could convert to your native game engine format. Here’s how one of our USD devs described it:

They could start with a FileFormat plugin for their native format. Then you could do something like stage->Export(“out.myformat”), and it would enable sanity checking because you could re-open the exported layer in usdview or Create (if they built against our internal nv_usd).

I’ll check with the dev team to see if they have any new advice.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.