Release Notes 8.6

Open Inventor 8.6 (June 2011)

Be sure to read the Compatibility Notes as well. They contain news about important changes in this release.
Finally, check the System Requirements topic for important news about Open Inventor platform support changes in this release.


This new version of Open Inventor contains several new features targeting different advanced usages as well as many improvements of basic features. A specific effort has been put in improving the control of advanced shader usage such as Vertex Attribute Feedback. Rendering to texture or buffer is now possible in a more flexible way than before. Draggers and manipulators have been improved to be more compliant with standard usages. Several new shapes, nodes or utility tools have been added to facilitate the development of powerful applications: new simplified way of defining triangle sets, immediate mode drawing classes, viewport control and depth buffer clear, etc…

The .NET binding has a new management method for memory disposal.

MeshViz XLM is now available in Java and the C++ implementation contains many enhancements.

VolumeViz benefits also from several performance enhancements.

But the most important change is the new documentation framework. All the Open Inventor documentation is now integrated in a modern HTML framework. The Open Inventor Mentor, Toolmaker, User’s guide, extension documentation and C++ reference manual are now available in a single format with cross references and advanced search.

Open Inventor

WYSIWIG manipulators and draggers

Most of the standard Open Inventor draggers have a behaviour which is not consistent with the WYSIWYG paradigm. Some hollow faces can be selected for dragging for instance when dragging a side of a box.
Only visible parts should be selectable in a WYSIWYG interface. To implement this rule, we provide now a new set of draggers with new semi-transparent handles on faces that were previously pickable. Notice that this new draggers are not enabled by default and are provided only as Open Inventor files in a new dragger directory. They can be turned onby replacing the default dragger directory with the new one.

See $OIVHOME/src/Inventor/demos/DraggerBenchmark/

(SO_DRAGGER_DIR must be set to $OIVHOME/data/draggerWysiwyg)

New Vertex Attributes feedback (SoVertexAttribFeedback)

This new node records in a buffer object the vertex attributes created by a geometry or vertex shader.

See $OIVHOME/src /Inventor Features/BufferObjects/VertexAttribFeedback

Primitive restart support for Buffered Shapes (SoBufferedShape)

Allows to store many primitives of the same type in a single buffered shape and to have them draw separately.

See $OIVHOME/src /Inventor/Features/BufferObjects/PrimitiveRestart

New Render to target node (SoRenderToTarget)

This node performs the rendering of the sub scene graph in any rendering target : buffer or texture.

See $OIVHOME/src/Inventor/examples/Features/ SimpleRenderToTexture

SoVertexShaderParameter support of SoBufferObject

Better integration of Buffer Objects in API

See $OIVHOME/src /Inventor/Features/BufferObjects/SoVertexShaderParameter

New Screen Drawer utility classes (SoScreenDrawer)

Better solution for drawing primitives in immediate mode. Replaces SoExtSelection drawing methods.

See $OIVHOME/src/VolumeViz/examples/CSGClippingGroup

New circular extrusion shape (SoCircularExtrusion) and reworked SoExtrusion

This new shape draws a circle extruded along a profile line. The SoExtrusion class has been refactored, optimized and a new base class has been added.

See $OIVHOME/src/Inventor/examples/Features/CircularExtrusion

New SoCSGShape

This node displays the result of a boolean operation of two sub scene graphs. Each sub scene graph can be another SoCSGShape allowing you to perform complex assemblies.The result of this shape can be used to define VolumeViz Volume Clipping Groups.

See $OIVHOME/src/VolumeViz/examples/CSGClippingGroup

New Triangle Set nodes (SoTriangleSet/SoIndexedTriangleSet)

These new nodes are very similar to Indexed Face Sets and Facet Sets except that they help to save memory.

For indexed Triangle Sets, it is not necessary to add an index separator (-1) between each group of three indices thus reducing the size of the index list by 25%.
For Triangle Sets, since each face has three points, the numVertices field is no more necessary.

New Cylindrical Projection (SbCylindricalProjection)

This utility class computes a cylindrical projection.

New Viewport node (SoViewport)

This class specifies the viewport used for rendering during a traversal of the scene graph.

New Viewport clipping node (SoViewportClipping)

This group node defines a clipping zone specified with a position and a size.  The result is that the shapes under the view clipping node are rendered in the specified clipping zone.

See $OIVHOME/src/Inventor/examples/Features/ViewClipping

Clear depth buffer at traversal time (SoDepthBuffer::clearBuffer)

It is sometimes convenient to clear the depth buffer manually. This method allows you to do that.

InteractiveComplexity interactive mode

The SoInteractiveComplexity node can be now controled by program using the new interactiveMode field. This allows you to display the full resolution, the interactive resolution or to disable the node completely. See $OIVHOME/src/Inventor/examples/simpleInteractiveParameters

OpenGL 3.3, 4.0 and 4.1 extensions available from the extension manager

The latest OpenGL extensions can now be used through the Open Inventor extension handling mechanism.

Node selection can be turned off from SoSelection.

A new value has been added to the SoSelection selection policy enumerated to disable the selection. This can be useful to temporarily control the selection mechanism without modifying thescene graph structure.

Mouse enter and leave events supported

These two new events allows a finer control of the system events.

Suse Linux Support

Open Inventor is now fully supported on Suse Linux. It means that the Linux version is fully tested on a Suse distribution.


Height field render improvement

The height field render can now be used without defining a SoHeightFieldProperty. In this case, the current material color is used for rendering the height field.

See $OIVHOME/src/VolumeViz/examples/multiData/horizonGpuCompose

Isosurface interpolation threshold

In isosurface rendering, the new segmentedInterpolationThreshold field of SoVolumeRenderingQuality can be used to adjust the position of the isosurface relatively to the voxel.

See $OIVHOME/src/VolumeViz/examples/segmentedInterpolation

Uniform Grid Projection Clipping

The new SoUniformGridProjectionClipping node, derived from SoUniformGridClipping , can be used to clip a volume rendering with a sub-scene graph.

See $OIVHOME/src/VolumeViz/examples/horizonClipping

Volume render pick detail enhancement

The SoVolumeRenderDetail  class has a new method to get the list of RGBA values crossed by the pick ray along with their positions in object space.

See $OIVHOME/src/VolumeViz/examples/volumePickingGpu

LDM Volume Clipping Enhancements

Better LDM Loading priority for SoUniformGridClipping or SoVolumeClipping based on tiles culled by clipping objects.

Projected Tile Subdivision usable with Interactive Complexity

The SoVolumerender::projectedTileSubdivision field can now be used with SoInteractiveComplexity.

Buffer Async Interface


Template scene graph for VolumeViz nodes

A new example program is provided to generate a synthetic VolumeViz scene graph for a given dataset with most common VolumeViz nodes. (OIVHOME/src/VolumeViz/contrib/VVIZ-template-SG)

MeshViz XLM


Performance enhancement of  HexahedronIjk meshes visualization.

Optimization of skin extraction for MiVolumeMeshHexahedronIjk mesh.
The previous parallel version of the skin extraction algorithm needs several accesses to each cell of the input volume mesh. Now an internal cache of cell description allows to access only 1 time each cell.
This may produce a major performance enhancement typically when the cell interface is implemented by the application using “on the fly” cell construct.

New storage layout in the definition of HexahedronIjk meshes.

New method getStorageLayout() in the interfaceMiHexahedronTopologyExplicitIjk.
If the application implements this method by describing the appropriate layout of the set of cells in the application storage, the skin extractor algorithm will iterate on this set of cells by using the optimal order. This may produce a major performance enhancement compared to previous version typically when the user application did not store the set of cells in the same order MeshViz traverses.

New features

Isosurfaces on polyhedral meshes

The extraction of an isosurface on polyhedral mesh does not need any more a pre-tessellation step of the mesh. This requires a polyhedral tessellator in the scene graph before the isosurface node. (See MiTessellator::getNewTessellatorPolyhedron). The new extract implementation is optimized as it just needs to tessellate in sub tetrahedrons the polyhedron cells in which the isosurface passes through. This new implementation is more efficient regarding memory usage and performance. Thus, the extraction MiPolyhedralToMixVolumeExtract is no more mandatory to visualize or extract an isosurface on mesh containing polyhedral cells.

Isosurface for PER_CELL dataset

The extraction of an isosurface on datasets bound PER_ does not need any more a pre conversion step into a dataset bound PER_NODE. Thus, the extraction tools MiPerCellToPerNodeExtractUnstructured or MiPerCellToPerNodeExtractUnstructuredIjk are no more mandatory to visualize or extract an isosurface on PER_CELL dataset.

New demo PEBIMeshViz and PolyhedralIsosurface

They highlight these new isosurface extraction features.

Java implementation

A java version of MeshViz XLM is available in this release. It is a full Java implementation. It contains a subset of the mesh types supported by the C++ version but it will be completed in the next release.

Open Inventor .NET

New IsDisposable property for node classes

A new interface ISafeDisposable has been introduced for node classes, to be able to determine if it is safe to call Dispose(). Calling Dispose() on nodes that are still referenced in scene graph may produce errors. The property returns true when it is safe to call the Dispose() method. Furthermore, the Dispose() method will raise an OIV.Inventor.IllegalObjectStateException when the node is still referenced by a scene graph. If the property returns true, the Dispose() will not raise any exception. Accessing fields on a disposed node now raises a System::ObjectDisposedException.This is the expected behavior according the System.IDisposable documentation.

New recursive Dispose() for SoGroup nodes

When calling Dispose() on an SoGroup instance, the method will try to Dispose() all its children recursively. If nodes are referenced by other root nodes, they are kept unchanged. This improvement insures that unmanaged resources of nodes only referenced by the root group will be freed when calling the method on the root. This is particularly useful when the root contains several volume data nodes.

Open Inventor Java

No new features.


Starting with OIV 8.6, ladmin and the VSG in-house licensing have been discontinued for node-locked developer and runtime licenses. It has been replaced by the FLEXnet node-locked licensin. See the licensing chapter for more details