Spout and NDI are frameworks for sharing video data between applications locally (Spout/NDI) or over the network (NDI) in real-time. Many popular VJ mixing applications, like Resolume, support these protocols allowing us to pipe data into these applications for mixing with other application outputs.
Sending Video Data Out Of Simmetri
First let's look at outputting a camera's view in Simmetri to an outside application. To do this, we will use the 'camera to display' tool.
- Undock the Toolbox Panel and click cameras from the top list.
- Select 'camera to display' from the bottom list
- Next, click in the space to create a camera
- Finally, right-click to exit draw mode
After we create the camera, Simmetri will also create a ViewPort along with a Display. You can think of the rendering pipeline as starting from the camera in the space, through the ViewPort and out the Display. The next thing we need to do is bind that Display to an output to get it rendering out of Simmetri.
- Select Preferences... from the Edit menu
- Click the 'outputs' tab at the bottom of the preferences panel
Here you'll see all the Displays in your Universe listed on the left. Their corresponding outputs will be listed on the right. In our example, we want to send the Camera Display's output to an external app.
- Select Camera Display from the left Displays list
- Now click the + button on the bottom-right of the Display Outputs list
- Finally, select either Spout or NewTek NDI to begin rendering and sending data to another application
Tips
- If your local external application supports both, you might want to choose Spout over NDI as it works by directly sharing texture data. NDI, on the other hand, is designed for transmitting over networks so it needs to encode and compress the image data which will lower image quality and take CPU/GPU cycles to do so. However, if your external application resides somewhere else on the network, then NDI is the way to go.
All we now need to do is launch an external tool that supports Spout or NDI and find the output with the same name as our Display (e.g. "Camera Display"). Whatever the camera sees will be sent along to the other application.
Let's look at where we can configure the output's resolution.
- Locate the Resolution drop-down underneath the Displays list
- Select an appropriate resolution. You can also select Custom from the Resolution drop down to use whatever values you set under Custom Resolution.
Receiving Video Data Into Simmetri
Let's look at how we can receive video data from another application.
- Undock the Browser Panel and click TerrainSpace from the left list
- Click the + button from the bottom-right of the panel
- Next hover your mouse over Textures
- Finally, click New Input2DTexture from the sub-menu that appears
A new texture will be added to your library that represents the output of an external application. By default, Simmetri will use the first output (Spout or NDI) it can find (usually there will only be one). In the case that there are more than one, you can configure the binding in the following way.
- Select Preferences... from the Edit menu
- Click the 'inputs' tab at the bottom of the preferences panel
- From the left Input Set list, select Input Textures. All of the Input2DTextures in your Universe are listed on the right list
- Ensure Input2DTexture is selected from the right list
- Click the set button. A menu of external application senders is displayed.
- Select the desired input
- Click OK to close the preferences panel
We can use this texture wherever a texture is needed, such as in a Material's diffuse map, for instance.
Tips
- As a shortcut, you can drag-and-drop the texture directly onto an object in the space to automatically create a new Material for it and assign the texture as its diffuse texture map.
- You can also drag and drop the texture directly into the space to create a plane that renders it
For an example of bringing in your phone's camera video stream into Simmetri via NDI, see this article: Phone Video Cam into Simmetri: NDI
Comments
0 comments
Please sign in to leave a comment.