Manages ray-traced rendering. More...
#include <DirectViz/SoDirectVizManager.h>
SoDirectVizManager manages ray-traced rendering of scenes. See DirectViz group for the package description.
SoDirectVizManager derives from SoNode, however it must not be referenced by the application and must not be inserted in a scene graph. SoDirectVizManager is freed by calling finish().
SoDirectVizManager provides general control of DirectViz:
Note: reflection and shadow rays computation use an offset internally used to deflect ray in order to prevent infinite hits. This offset is properly initialized to 1e-3, but it may lead to artefacts in some cases (wrong pixels). Then, the SoPreference variable DIRECTVIZ_RAY_EPSILON will have to be set to 1e-2 or 1e-1.
SoSceneManager, SoXtRenderArea, SoXtViewer, SoWinRenderArea, SoWinViewer, SoQtRenderArea, SoQtViewer, SoSeparator, SoDirectVizShader
DirectVizAlphaMap, DirectVizPhong, DirectVizDiffuse, DirectVizPhongEyeLight, DirectVizBumpMap, DirectVizBumpMapGlass, DirectVizDofCamera, DirectVizEnvLighting, DirectVizFresnel, DirectVizFuzzyPhong, DirectVizGlossyPhong, DirectVizGlass, DirectVizGlossyGlass, DirectVizShadowEnv, DirectVizSoftShadows, DirectVizSpotLight, DirectVizWallThickness, HelloIceCube, IceCubeExaminer, IceCubeOffscreen
SoDirectVizManager::~SoDirectVizManager | ( | ) |
Destructor.
static void SoDirectVizManager::finish | ( | ) | [static] |
Shuts down the DirectViz module, which includes freeing any internal static memory that it allocated.
Finish methods must be called in the reverse order of the init method calls:
SoDirectVizManager::finish(); SoXt::finish(); ...
static SoType SoDirectVizManager::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoNode.
int SoDirectVizManager::getCurrentAccumValue | ( | ) | const |
Gets the current accumulation value.
static SoDirectVizManager* SoDirectVizManager::getInstance | ( | SoSceneManager * | mgr | ) | [static] |
Returns a pointer to a DirectVizManager object associated with the specified scene manager.
If DirectViz was already associated with a scene manager, calling getInstance() with another scene manager will deactivate DirectViz on the previously associated scene manager. To retrieve the scene manager corresponding to a viewer or render area, you can use code similar to:
pViewer->getSceneManager();
double SoDirectVizManager::getLastRenderTime | ( | ) | const |
Gets the elapsed time for rendering the last frame in seconds.
int SoDirectVizManager::getNumEnvironmentLights | ( | ) |
Returns number of environment lights (see field numEnvLights).
void SoDirectVizManager::getRenderedImageSize | ( | SbVec2s & | size | ) | const |
Gets the size of rendered image in pixels.
virtual SoType SoDirectVizManager::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoNode.
static void SoDirectVizManager::init | ( | ) | [static] |
Initalizes the DirectViz classes.
It is not necessary to call this method directly from a user application as DirectViz will be initialized automatically by Open Inventor.
static bool SoDirectVizManager::isInitialized | ( | ) | [static] |
Returns TRUE if DirectViz is currently initialized.
void SoDirectVizManager::setCacheDirectory | ( | SbString | directory | ) |
Specifies cache directory (it must be an absolute path).
The initial value can be set using the environment variable DIRECTVIZ_CACHE_DIR. See SoPreferences.
Specifies cache file as an absolute path name.
Cache files can be used for either reading or writing depending on mode:
void SoDirectVizManager::setCamera | ( | SoCamera * | camera | ) |
Set the camera to use for rendering.
This method should only be called when using DirectViz rendering outside of a standard Open Inventor viewer based on SoGuiViewer (e.g. custom viewer usage).
Since Open Inventor 9.3friend class SoDirectVizCacheManager [friend] |
friend class SoDirectVizRenderAction [friend] |
friend class SoDirectVizRenderManager [friend] |
Activates/deactivates accumulation passes.
Accumulation consists of successive rendering passes resulting in progressive oversampling of the rendered image, reducing aliasing. Accumulation passes are started only after a small delay without rendering, i.e. when the viewer is still and there is no animation in the scene. Each rendering pass takes a time equivalent to render a full resolution image. Accumulation is stopped after the current rendering pass is completed as soon as interaction starts again. Default is TRUE.
The initial value can be set using the environment variable DIRECTVIZ _ACCUMULATION. See SoPreferences. The number of successive passes is controlled with the maxAccumulationValue field.
Enables/disables adaptive oversampling rendering.
Default is FALSE.
Adaptive oversampling reduces aliasing only near aliased pixels in the image. The initial value can be set using the environment variable DIRECTVIZ_ADAPTIVE_OVERSAMPLING. See SoPreferences. Since Open Inventor 7.2
Enables/disables the DirectViz control dialog.
DirectViz interactive parameters can be controlled using this dialog with Qt or Win32 viewers. When set to TRUE, the dialog can be displayed by pressing the Shift + F8 key (or the key specified in the DIRECTVIZ_DIALOG_SHORTCUT environment variable) Default is TRUE.
The initial value can be set using the environment variable DIRECTVIZ_CONTROL_DIALOG. See SoPreferences.
Intensity scale applied to environment lights defined by numEnvLights.
Default is 1.
The initial value can be set using the environment variable DIRECTVIZ_ENV_LIGHTS_SCALE. See SoPreferences. Since Open Inventor 8.0
Enables/disables acceleration structure cache file.
DirectViz file caching consists of saving on disk the internal accelaration structure built for OpenRTRT objects corresponding to an Open Inventor scene graph, which can save a significant amount of time when reloading large scenes.
A cache directory must be specified with the setCacheDirectory method, which will contain the cache files. For each scene graph there is exactly one cache file. A signature is automatically created and written in cache files, so it is not nesessary to name explicitly cached files.
If fileCaching is set to TRUE, before rendering a new scene, DirectViz will first search in the cache directory if there is a cache file correponding to the scene signature. If such cache file exists, DirectViz will directly load OpenRTRT objects from it. Otherwise, DirectViz will create OpenRTRT objects from the scene graph and save them with the scene signature in a new cache file in the cache directory. A cache file can also be specified explicitly with setCacheFile(). Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_FILE_CACHING. See SoPreferences.
Enables/disables fuzzy effects globally in the scene graph.
Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_FUZZY_LIGHTS. See SoPreferences. Since Open Inventor 7.2
Enables/disables shadows globally in the scene graph.
Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_GLOBAL_SHADOW. See SoPreferences.
Enables/disables glossy surfaces effects globally in the scene graph.
Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_GLOSSY_SURFACES. See SoPreferences. Since Open Inventor 7.2
Specifies a maximum number of accumulation passes.
Must be greater than or equal to 1. Default is 10.
The initial value can be set using the environment variable DIRECTVIZ_MAX_ACCUMULATION_VALUE. See SoPreferences.
Enables/disables environment lighting by specifying the number of lights.
When an Environment shader is specified, DirectViz allows extracting fake lights from the environment texture. Thus, the lighting is performed with additional lights coming directly from the environment. When combined with accumulation, the fake lights are taken at different environment texture positions at each accumulation step. Thus, lights from the entire environment can be used for illumination, giving a fast and accurate approximation of ambient occlusion. Default is 0.
The initial value can be set using the environment variable DIRECTVIZ_NUM_ENV_LIGHTS. See SoPreferences. Since Open Inventor 8.0
Specifies the number of steps (intermediate images) between subsampled rendering and full resolution rendering.
Must be greater than 0. Default is 5.
The initial value can be set using the environment variable DIRECTVIZ_RENDER_STEPS. See SoPreferences.
Activates/deactivates rendering with progressive resolution.
Progressive rendering consists of making several render steps between the subsampled image and the full resolution image. The number of steps can be controlled with the numProgressiveRenderingSteps field. Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_PROGRESSIVE_RENDERING. See SoPreferences.
Specifies the recursion depth limit.
This is the maximum number of times a single ray can be reflected/refracted - "bounced" within the scene - when rendering a frame. Reflection (ray reflected by a shape) is enabled when the recursion limit is at least 2. Refraction (ray traversing a shape) is enabled when the recursion limit is at least 3. Default is 20.
The initial value can be set using the environment variable DIRECTVIZ_RECURSION_LIMIT. See SoPreferences.
Activates/deactivates ray-traced rendering.
If TRUE, ray-traced rendering is enabled. Default is FALSE.
Enables/disables soft shadows globally in the scene graph.
Default is FALSE.
The initial value can be set using the environment variable DIRECTVIZ_SOFT_SHADOWS. See SoPreferences. Since Open Inventor 7.2
Enables/disables recursion when subsampling the scene.
Rendering may be sped up during interaction with the scene or when scene is animated by setting subRecursion to FALSE: it will force the recursion limit to 1 and therefore prevent reflections and refractions. Default is TRUE.
The initial value can be set using the environment variable DIRECTVIZ_SUB_RECURSION. See SoPreferences.
Activates/deactivates image sub-sampling.
Sub-sampling consists of rendering a smaller (i.e., lower resolution) image when the viewer is not still. Sub-sampling is controlled by a factor that represents the ratio between the rendered image and the full resolution image. Values can range from 0. to 1.0 (full resolution). To set this factor, use the subSamplingFactor field. Default is TRUE.
The initial value can be set using the environment variable DIRECTVIZ_SUBSAMPLING. See SoPreferences.
Specifies the sub-sampling factor.
Values can range from 0. to 1. Default value is 0.5. The initial value can be set using the environment variable DIRECTVIZ_SUBSAMPLING_FACTOR. See SoPreferences.