Antti Ylimutka

SceneStream Unity SDK - Advanced features

Back to blog
April 20, 2020

Not long ago, we wrote about how you can use Umbra SceneStream to render large and complex 3D models in Unity. This time around we thought it would be a nice tidbit to showcase some of the lesser known features that our Unity SDK supports.

In short, the ones we’ll showcase today are:

We hope these give you novel ideas how to use large 3D input within the context of your Unity application. If you are still unfamiliar with what Umbra SceneStream is, head on over to the technology page or go straight ahead to experience the umbrafied results at our demo section.

But now, let’s move on with the actual topic.

Multiscene Support

You can add multiple scenes by simply clicking the “Add Scene”-button in the Umbra Runtime component. You can assign each can Scene-component a unique source of data for streaming.

Umbra SceneStream Unity SDK instructions for setting up multiple Umbra Scenes into a Unity project, enabling infinite detail in your application.

You can allocate a maximum memory budget for the runtime component and it automatically handles the data streaming within the given limits. At some point someone floated the idea of naming the product as the Infinite Detail Engine as that’s pretty much what the hierarchical data structure and multiscene support enable.

In the example below, we’ve shown a typical customer case where additional content is added on top of, for example, a larger world scan. The scene contains 4 different scenes from our demo page - Helsinki City, Norwich Castle, Toija Studio and Adidas Shoe.

Multicamera Rendering

You can add multiple cameras into your scene. Umbra’s runtime takes each camera’s position into account when deciding what data to stream in. This means all data that is shared between cameras needs to be streamed in only once. The renderable assets for each camera are then derived from this streaming set.

SceneStream Unity SDK - setting up multicamera rendering in Unity. Example shows a 6 camera stack mimicking capture gear on an autonomous vehicle.

In the below example, we’ve created a camera rig that loosely mimics a setup potentially found on an autonomous vehicle. Another example could have been player cameras in a multiplayer game or any other kind of multi-user experience but let’s get back to that some other time.

Collision Meshes

As we have already generated multiple levels of detail (LOD) of the input 3D, it makes a lot of sense to be able to use the same meshes for collision detection. Just click “Add collider” in a Umbra Scene object and then modify the overall parameters in the Umbra Runtime-component.

SceneStream Unity SDK - how to use Umbra-generated meshes for colliders and the parameters you can tune the colliders with.

Often the most accurate LODs are often needlessly accurate for simple collision detection, thus you can choose which LOD is used for this purpose. The streaming radius dictates the distance (in world units) when the runtime will stream in the colliders relative to a given camera. The granularity of this radius is tied to the size of our streaming units on a given LOD.

We hope you gained valuable insights into the Umbra SceneStream Unity SDK. In case you don’t have an account already, you can request access through the link below.

Request Access