Click or drag to resize
OIV.DirectViz Namespace

DirectViz is a ray-tracing extension for Open Inventor.

Public classSoDirectVizManager Obsolete.

Manages ray-traced rendering.


DEPRECATED: DirectViz is deprecated and no longer supported since OIV 9.5.

<font color="#0000FF">NOTE:</font> The classes in this extension do not exist in Open Inventor 10.0 and later.

DirectViz allows Open Inventor applications to render 3D scenes with very high realism and scalability by using the Real-Time Ray-tracing engine OpenRTRT(tm), an alternative to OpenGL.

Ray tracing is a rendering technique that uses principles of optics to model the path taken by light by following rays of light as they interact with surfaces.

NOTE: DirectViz is a separately licensed extension. You must have a DirectViz license string in addition to your Open Inventor license string. One of its fields specifies the maximum number of ray-tracing clients in cluster mode. If this field is set to zero, DirectViz runs in stand-alone mode and the rendering cannot be distributed on a cluster. You may also need to install a license for OpenRTRT. Please check your license document.

DirectViz features

  • Ray-traced rendering enabling accurate reflections, refractions, and shadows

  • High-performance ray-tracer engine optimized for Intel and AMD CPUs

  • Transparent integration with Open Inventor scene graph and viewers

  • Control of quality/interaction tradeoffs: resolution subsampling, progressive resolution, oversampling, recursion depth limit

  • Flexible shader sets - Phong, Glass, Environment, Bump, Car Paint...

  • Distribution ray-tracing supporting glossy effects, soft shadows

  • Extensible with custom shader classes (requires OpenRTRT SDK, provided separately)

  • Fast spatial indexing, with automatic or manual caching on file for large scenes

  • Handles dynamic scenes with animation and interaction

  • Cluster support for performance scalability

  • Takes advantage of multi-processor/multi-core systems

  • Support for offscreen rendering

  • Support for stereoscopy (raw OpenGL stereo and anaglyph stereo in current release)

  • Support for tiled displays or immersive VR displays configurations with ScaleViz

  • Support for fast ScaleViz remote rendering for building visualization servers

When using ray-tracing mode, OpenGL rendering is replaced, and OpenGL calls will have no effect.

Please see the Open Inventor by FEI User's Guide for an introduction to DirectViz ray-tracing.

Classes related to DirectViz

  • SoDirectVizManager This class manages ray-tracing rendering in viewers and render areas. It provides the programming interface for activating/deactivating ray-tracing, controlling interactivity/quality tradeoffs, enabling the DirectViz control dialog, getting information about the rendered scene, managing cache files.

  • SoDirectVizShader and derived classes This is a set of nodes interfacing ray-tracing shaders for controlling scene appearance (SoDirectVizGeneralShader for surface shaders and SoDirectVizEnvironmentShader for environment shaders). Supported shaders include: Diffuse, Phong, Glass, BumpMap, FresnelPhong1, AlphaMap, GlossyPhong, GlossyGlass, BumpMappedGlass (depending on shader package used).

  • SoMaterial, SoLight, SoCamera, and a number of other property classes are automatically translated into shaders internally.

  • SoMaterial has two new fields related to DirectViz: SoMaterial.receiveShadows and SoMaterial.reflectiveColor.

  • SoSeparator has a new field SoSeparator.directVizCaching for controlling the way DirectViz builds internal ray-tracer acceleration structures for shapes.

  • SoPreferences includes a number of environment variables related to DirectViz, prefixed by DIRECTVIZ_.


DirectViz performance depends on the number of processed rays. It depends on the resolution of the rendered frame because a primary ray is cast for each pixel (or more with oversampling). It also depends on the "optical complexity" of the scene, for instance the number of transparent objects, reflections, and refractions (casting secondary rays), as well as the number of light sources (to be checked by illumination and shadow rays). Therefore performance may change depending on the part of the scene that is visible in the rendered image.

DirectViz geometry objects and caching

DirectViz internal "geometry objects" - storing acceleration structures for ray-tracing - are quite similar to OpenGL display lists. SoDirectVizManager provides two ways of managing DirectViz objects:

  • Default way is fully automatic. One DirectViz geometry object will be created for each Open Inventor shape in the scene graph.

  • Managed by SoSeparator.directVizCaching field. One DirectViz geometry object will be created for each high-level SoSeparator with directVizCaching set to ON.

An optimal scene graph organization would group static parts of the scene graph under SoSeparator nodes with directVizCaching set to ON, and dynamic parts under SoSeparator nodes with directVizCaching set to OFF.

Avoid putting dynamic parts of a scene graph under a SoSeparator with the directVizCaching field set to ON (for instance draggers) as the performance could be very poor.

Cluster mode

 The cluster mode can only be set before the application has started.
It is enabled with the DIRECTVIZ_CLUSTER environment variable (see SoPreferences). 
If its value is different from 0, it specifies the number of OpenRTRT clients. 
DirectViz uses port 9001 for communication in cluster mode. 

See the Open Inventor by FEI User's Guide for information about cluster mode DirectViz.


The following Open Inventor features are not supported in this DirectViz release, i.e., ignored or not rendered as they would be with OpenGL: