NVIDIA Omniverse streaming

Eagle 3D Streaming streams NVIDIA Omniverse Kit apps to a browser: the Kit app runs on an Eagle 3D Streaming GPU machine, and the viewer sees and controls it in a web page, with no static IP, no server and no install of their own. Omniverse streaming is in beta and free while in beta.

Try the demos

An app made with a game engine (Unreal Engine, Unity and others) usually builds its controls inside the app, with the engine's own UI system: menus, buttons and panels are part of the app, so its stream is interactive on its own. This USD Viewer demo is the opposite on purpose: it has no UI inside the app — all of its controls are in the web page, built with HTML and JavaScript. We chose it to show how a web page controls an Omniverse app programmatically, and how the page and the app talk to each other. (Other Omniverse apps, such as USD Explorer or USD Composer, do have panels inside the app.) There are two demos of it, also together in the Control Panel's Showcase - Omniverse:

DemoWhat you seeLink
Omniverse in the Eagle 3D Streaming playerThe stream alone, in our standard player. The app has no UI of its own, so there is almost nothing to interact with: you see the scene, but there are no menus or buttons. Open the demo
Omniverse with its own web controlsThe same stream, embedded in a web page with an <iframe>. Here the app does have a UI - the USD Viewer's panel (choose a stage, browse and select objects, reset) - built with HTML and JavaScript in the page itself. This is how an Omniverse app is meant to be used. Open the demo (hosted on GitHub Pages (learn how to host your page with your app for free)) · Source code (one index.html, no build step)

Showing your own app in the web-controls page

The web-controls page shows our demo stream unless you tell it otherwise. src is the stream link the page puts inside its <iframe> (the iframe's source). Add it to the page address:

https://e3ds.github.io/E3DS-Iframe-Demo/omniverse/?src=https://connector.eagle3dstreaming.com/v5/your-username/your-app/your-configuration
PartWhat it is
https://e3ds.github.io/E3DS-Iframe-Demo/omniverse/the web-controls page (our copy on GitHub Pages, or your own copy of index.html)
?src="use this stream": everything after it is the stream link put inside the iframe
https://connector.eagle3dstreaming.com/v5/the Eagle 3D Streaming stream address
your-username/your-app/your-configurationyour account name, your uploaded Omniverse app and the configuration to use (its platform set to Omniverse)

The demo's own stream, written out the same way: https://e3ds.github.io/E3DS-Iframe-Demo/omniverse/?src=https://stream.eagle3dstreaming.com/v5/demo/omniverseDemo/usdViewer. To test with the demo app itself in your own account, email support@eagle3dstreaming.com for the demo build.

What your Kit app needs

  1. Kit's WebRTC streaming extension. An app created from NVIDIA's kit-app-template has a streaming variant of its .kit file that adds omni.kit.livestream.webrtc; that is the one to stream.
  2. A self-contained package. Package the app with the template's own command (repo.bat package). The result is one ZIP that runs on a machine without the Kit SDK or NVIDIA's caches installed. The folder under _build is not enough on its own: most of it points into caches on the machine it was built on.
  3. Windows and an NVIDIA RTX GPU, which Eagle 3D Streaming's machines provide.

Verified with Kit 107.3 and the template's USD Viewer app. Other Kit versions are expected to work the same way but have not been tried; mention the version when you get in touch.

Starting your app is Eagle 3D Streaming's part

Send the packaged ZIP as it comes out of repo.bat package - nothing to rename and no start-up script to write. Eagle 3D Streaming sets up how your app starts on its machines. If you later upload the app under a different name, tell support so the start-up is updated with it.

Two ways to show the stream

Eagle 3D Streaming playerNVIDIA's web viewer page
Lookthe same player as every Eagle 3D Streaming app: full window, settings buttonNVIDIA's sample page with its own panel
Viewer inputmouse, wheel and keyboard; a touch acts as the left mouse buttonNVIDIA's own input handling
Talk to the app from your websiteyes, through the iframe (below)through NVIDIA's page only

Talking to the app from your own web page

A Kit app can define its own messages - the USD Viewer template, for example, answers openStageRequest by opening a file and getChildrenRequest by listing what is in the scene. With the Eagle 3D Streaming player in an <iframe> on your page, your page sends those messages to the player, and the player passes them to the app:

// your page -> the Kit app
iframe.contentWindow.postMessage(JSON.stringify({
  type: "omniverseMessage",
  event_type: "openStageRequest",
  payload: { url: "${omni.usd_viewer.samples}/samples_data/stage02.usd" }
}), "*");

// the Kit app -> your page
window.addEventListener("message", (e) => {
  const m = JSON.parse(e.data);
  if (m.type === "omniverseReady") { /* the app can now receive messages */ }
  if (m.type === "omniverseEvent") { console.log(m.event_type, m.payload); }
});

Which event_type names exist, and what is in each payload, is decided by your Kit app's own extension, not by Eagle 3D Streaming. Verified with the USD Viewer template: choosing a file, listing the scene, selecting objects from a list and resetting the stage all work this way, exactly as in NVIDIA's own viewer.

Frequently asked questions

Can NVIDIA Omniverse apps be streamed to a web browser without a static IP?

Yes. Kit's streaming normally expects the browser to reach the GPU machine directly. With Eagle 3D Streaming, the viewer opens an ordinary HTTPS link and the connection to the app is set up through Eagle 3D Streaming's servers, so the machine needs neither a static IP nor a public address of its own.

Do viewers need NVIDIA software or an RTX GPU?

No. The app renders on Eagle 3D Streaming's GPU machine; the viewer only decodes a video in the browser.

Which Omniverse apps can be streamed?

Kit apps that include Kit's WebRTC streaming extension, packaged as a self-contained ZIP - such as apps made from NVIDIA's kit-app-template. Verified with Kit 107.3.

What does Omniverse streaming cost?

Nothing during the beta. Email support@eagle3dstreaming.com to join.

Other kinds of app: Stream any app in the browser.

Related

Last updated