DirectViz is a ray-tracing extension for Open Inventor.
|SoDirectVizManager|| Obsolete. |
Manages ray-traced rendering.
Number of environment lights.
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.
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 Toolkit 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 has two new fields related to DirectViz: SoMaterial.receiveShadows and .
SoSeparator has a new field 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 with directVizCaching set to ON.field. One DirectViz geometry object will be created for each high-level
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.
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 Toolkit 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:
Only material binding OVERALL is supported.
2D text is ignored.
VolumeViz and FXViz are not supported.
Line sets are rendered as extruded face sets. This may impact performance.
field is ignored.
Backface culling (specified by SoShapeHints) is ignored: both sides of faces are always visible.
Texture coordinates functions are ignored (SoTextureCoordinateFunction).
Viewer's draw styles do not apply.
ScaleViz depth compositing is not supported.