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.

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.

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.

Last updated