ScRayPickAction now supports setting the pick input point (viewport coordinate) using float values. This may be necessary to keep precision when a desktop is magnified on a wall of screens. See :
- ScRayPickAction::setPoint( const SbVec2f &viewportPoint )
- ScRayPickAction::getPoint( SbVec2f &point )
No new features were added. See the fixed bugs section.
No new features were added. See the fixed bugs section.
No new features were added. See the fixed bugs section.
An Open Inventor application using ScaleViz can now dynamically connect to a render cluster, then later disconnect from the cluster and continue to work with the application locally.
ScaleViz can now dynamically change the extent of the screen tiles to better balance the rendering tasks between render nodes and improve performance.
ScaleViz can now mix local and remote rendering. This provides support for custom nodes that cannot be distributed and for cases where data should be kept local.
The new SoDistributionAction class allows you to choose between two different ways of automatically distributing the scene graph:
- ROUND_ROBIN: A round robin algorithm that does a static distribution based on the number of running OIRUs.
- TRIANGLE_COUNT: A dynamic algorithm that takes into account the number of triangles under each separator, and tries to distribute the scene graph as equally as possible between the OIRUs.
Some actions can be performed on the cluster side. For example, GetBoundingBoxAction, GetPrimitiveCountAction, and RayPickAction. These classes are ScGetBoundingBoxAction, ScGetPrimitiveCountAction, and ScRayPickAction.
Passive stereo is supported for tile display and immersive configurations by using the new cameraMode field of the SoFlatScreen and SoScreen configuration nodes.
SCALEVIZ_USER_LIBS is no longer used, but replaced by OIV_USER_LIBS. This environment variable is used to specify which libraries to search for custom nodes.
There is a new communication node (SoClusterGateway) to manage the connection between the remote application (external network) and cluster nodes (internal network). This allows access to a remote cluster through a non-Graphic Master node.
- New Open Inventor header for ScaleViz 7.0 configuration files
- New configuration file structure
- New SoScaleVizConfig node for specifying the ScaleViz configuration.
- New SoScaleVizParameters node used in a ScaleViz configuration file to define parameters for tile and depth compositing and remote access parameters (through the new SoTileComposerParams, SoDepthComposerParams, and SoRemoteParams nodes)
- Support for loading of multiple configurations from the same file
- Support programmatic definition of configurations
Fast editing and full-scene antialiasing, Open Inventor core features, are now supported when using ScaleViz rendering.
The cluster rendering capabilities of ScaleViz have been greatly expanded in ScaleViz 6.1.There has been no change to the multipipe rendering capabilities of ScaleViz.
Here are highlights of the new cluster rendering features:
- Tile compositing with SoTileComposer nodes (in config file)
- Depth compositing with SoDepthComposer nodes (in config file)
- Remote cluster access with image compression.
- Immersive configuration supported with SoTracker nodes.
- Application/cluster heterogeneity support for OS and architecture.
- SoQt-viewer-based application support.
Each of these items is described in further detail below. For complete details, see the reference manual and/or the updated User's Guide (UsersGuide.pdf).
Tile compositing allows you to divide the application viewers viewport into several "tiles" that will be rendered independently by different render nodes, then composited into a single image on a single display.
This configuration improves performance (fill rate) for volume rendering because each render node renders only its tile (subregion) of the viewport. It also improves image quality (level of detail) for VolumeViz LDM-based applications because each render node uses all of its system memory and GPU texture memory.
To specify the render node and the size and position of the tile associated with each render node, you will use a ScaleViz configuration file and SoTileComposer nodes (one per render node). The SoTileComposer node has a hostname field for specifying the computer to use, as well as tileSize and tileOrigin fields for specifying the size and position of each tile.
Depth compositing allows you to divide the application viewer's scene graph into several parts ("subgraphs") that will be rendered independently by different rendering nodes, then composited into a single image on a single display based on the depth value of each pixel.
This configuration improves performance for scene graphs with very large geometry, i.e., having large numbers of triangles.
In order to use depth compositing, you must associate the subgraphs of your scene with specific render nodes.
For example, if you have 4 render nodes in the cluster, it would make sense to assign parts of your scene graph to the 4 render nodes such that the rendering load is roughly balanced between the nodes.
Render units 1-N are associated with SoDepthComposer nodes in the order in which they appear in the ScaleViz config file. That is, the first SoDepthComposer node in the file corresponds to render unit 1, and so on.
In your scene graph, you will use the new renderUnitId field of SoSeparator (or SoVRMLGroup) to specify the render unit to be used for rendering a particular subgraph.
By default, the value of renderUnitId is -1, which means that the subgraph is not distributed to any node. In other words, in order to use depth compositing, you must modify renderUnitId from the default, otherwise nothing will be rendered.
For sample distributed scene graphs, see: $OIVHOME/data/ScaleViz/models/distributed/harley.iv and test_1234.iv
It is now possible to use an immersive configuration, including head tracking, with cluster rendering. Use the hostname field of SoScreen in a configuration file to specify the render node to be used for each screen.
Previously, it was only possible to set up an immersive environment when using multipipe rendering.
Previously ScaleViz render nodes were limited to displaying their image on a directly attached device (screen or projector). Now the rendered image can be composited with images from other render nodes and displayed in the Open Inventor viewer window on the application node, which may be physically remote from the render cluster.
Depending on the network connection between the render machines and the display machines, it may be appropriate to use more (or less) frame compression as well as more (or less) lossy filtering. It is now possible for you to control these parameters via the ScaleViz configuration file (using SoMasterConfig) or using the new Remote Parameters dialog. SoMasterConfig has the following new fields:
- networkSpeed: LOCAL, FAST, MEDIUM, SLOW
This field controls the amount of image compression. With LOCAL, there is no compression; with the other values, there is more compression for slower networks.- lossyMode: NEVER, INTERACTIVE, ALWAYS
Specifies if lossy filtering should be used before image compression. Using lossy filtering can increase the compression ratio by a factor of 10.- lossyQuality: 1-100, where 100 is the best quality, and 0 is the worst.
The new Remote Parameters dialog is accessed via a keyboard shortcut, SHIFT+F9 by default. This shortcut can be changed by using configuration parameter OIV_REMOTEDIALOG_SHORTCUT. In addition to allowing you to configure the network profile, lossy mode, and lossy quality, the dialog also displays the frame rate and the bandwith in Mbits/sec.
NOTE:
This is not the same "remote rendering" in Open Inventor that is (still) supported via the following environment variables: OIV_LOWRESRENDER, OIV_LOWRESHIGHPERCENT, OIV_LOWRESLOWPERCENT.
Using classic remote rendering the user logs in and the application runs on a remote (server) machine. Using ScaleViz 6.1 the user logs in and the application runs on the local machine. In both cases rendering is done on the remote machine/cluster. Classic remote rendering does not support cluster rendering and requires a third party tool such as VNC to display the application's user interface. ScaleViz 6.1 is self contained.
Your application can now run on a different OS than the render nodes. (However, all of the render nodes must have the same architecture and be running the same OS.)
To simplify the specification of ScaleViz configuration files, you can provide a ScaleViz resource file that describes the available cluster resources. The config file can be very simple and ScaleViz will do automatic configuration based on the available resources. For complete details, see the chapter on ScaleViz in the User's Guide.
SoQt viewers can now be used with cluster rendering. Previously only SoXt and SoWin applications were supported.
NOTE: SoQt-based viewers are *still not* supported with multipipe rendering.
Your application can now run on a render node. Previously this was not possible.
ScaleViz is a new extension that adds support for cluster rendering to Open Inventor and incorporates the capabilities of the previous MultiPipe extension (multi-pipe rendering and immersive VR).
ScaleViz allows Open Inventor applications to render using a graphics cluster, that is, using a group of computers connected via a network, where each computer controls one or more screens of a multi-screen display system. ScaleViz synchronizes the different nodes and ensures that the same scene is rendered simultaneously on all of the screens.
Cluster rendering can be used, for example, to display a scene graph very large, at very high resolution, on a "wall" consisting of a grid of screens, with each screen connected to a computer doing its portion of the rendering.
In ScaleViz, the scene graph is distributed. The application runs on the master node and the Open Inventor scene graph is automatically copied to each of the rendering nodes. Each render node is in charge of rendering its portion of the total image, using its local copy of the scene graph. Once the scene graph has been copied, only changes, e.g., new field values, need to be sent to the render nodes.
Each render node runs a small Open Inventor application called the OIRU (Open Inventor Render Unit). At application startup, ScaleViz starts the OIRU on each of the render nodes.
It is very simple to make (most) existing Open Inventor applications ready for graphics cluster rendering. The main task is to supply a ScaleViz configuration file containing information about the graphics cluster. The configuration file specifies the computers in the cluster, the portion of the view volume they are responsible for rendering, and where on each screen the graphics should be rendered. Cluster rendering is only enabled if the configuration file contains an SoMasterConfig node.
See the User's Guide for complete details, including limitations of this release of cluster rendering.
NOTE: Like other extensions, ScaleViz requires a separate license. One of its fields specifies the maximum number of render nodes allowed. If its value is zero, multipipe rendering and immersive VR is allowed, but not cluster rendering.
The multipipe rendering and immersive VR capabilities are unchanged from the previous version (Multipipe 3.0).
The most significant new feature added to MultiPipe is a 3D user interface toolkit for immersive environments.
With the new release of DialogViz, a single definition of your GUI can be instantiated as 2D desktop widgets or as 3D geometry for use in immersive environments.
Unlike 2D DialogViz, which is unlocked using an Open Inventor license string, the 3D components are unlocked using a MultiPipe license string.
Example: $OIVHOME/src/DialogViz/examples/3D/simple3DMenu
You can redefine the appearance of the 3D components using skins. Several pre-defined skins are provided (default, texture, and transparent) or you can define your own if you wish. See SoDialogViz for additional info.
Example: $OIVHOME/src/DialogViz/examples/3D/setSkin
Draggers can now take position and orientation changes directly from a tracking device's position and orientation. Specifically the difference between the tracker's current values and the values at the start of the interaction is applied as an incremental change to the dragger. In general this is a much more natural way to manipulate objects in an immersive environment. You can use the setTrackerDirectMode method to enable this behavior. Alternatively, you can use the new configuration keyword: OIV_TRACKER_DIRECT_MODE. See SoDragger for more info.
Existing support for tiled displays is now extended to immersive multi-wall displays.
In addition to SoFlatScreen, MultiPipe provides an SoScreen node in its configuration file. By providing the coordinates of one or more screens, you can display images within immersive environments such as CAVEs, curved screens, head-mounted displays, and others.
MultiPipe now includes a set of classes interfacing to the widely used "trackd" library from VRCO (www.vrco.com). Trackd provides access to a wide variety of tracking systems and input devices for support of head and hand tracking in immersive environments.
MultiPipe will dynamically load the trackd library if the application attempts to use the MultiPipe tracking ability. The application does not need to link against libTrackdAPI. The node SoTracker in the new configuration file specifies the shared memory keys to access the tracker data.
MultiPipe can render the left view and the right view of a scene using different pipes. See the SoFlatScreen config file node.
Projection systems often overlap the images they are displaying. MultiPipe allows you to adjust the edges of the windows in order to accommodate projection systems that overlap the images that they are displaying.
MultiPipe now uses the Open Inventor file format for its configuration file. The nodes used within the configuration file are SoMPConfig, SoFlatScreen, SoScreen, and SoTracker.
NOTE: The old file format is no longer supported.
- SoMPConfig
Allows the user to set the behavior of the MultiPipe viewer. It is possible to select multithreaded or sequential rendering and to specify the MultiPipe viewer should behave like a regular viewer.- SoScreen and SoFlatScreen
Describe the additional rendering windows (e.g., their display, size, position, the portion of the scene to render, etc.)- SoTracker
Describes the setup of the scene (camera and object position) for immersive applications using tracking systems.
MultiPipe now uses a cursor mechanism that updates the cursor on all MultiPipe windows automatically. It uses a similar mechanism to create the popup menu for each MultiPipe window.
It is possible to raise and lower the main viewer (i.e., the GUI) with the Page Up and Page Down keyboard keys. This is useful when the configuration file defines full screen MP windows. If the GUI happens to be hidden by the rendering windows, you can use Page Up to display the GUI on top of the display, and Page Down to hide the GUI.
Previously, MultiPipe allowed the creation of several sub-widgets within the viewer. This mode in no longer supported. The MultiPipe default behavior is to create MP windows outside the viewer. However it is still possible to tell MultiPipe to behave like a regular viewer and this mode now has the same performance as the regular viewer class.