Compatibility Notes


Open Inventor 9.6.3 (September 2016)

Older compatibility notes

Please at least glance through these compatibility notes so that you are not surprised by any differences in behavior between this release and the previous release.

Technical overview

You should completely recompile existing applications after installing a new version of Open Inventor.
New versions of Open Inventor are source code compatible (unless noted in this document), but not binary compatible.

New APIs

This section lists all the new APIs introduced into Open Inventor 9.6. New methods, fields and classes are listed to give a quick access to new material available in this new release.

Open Inventor

Default behavior

SoText2 and SoText3 : Spacing value, for both SoText2 and SoText3, is now in font size units. It used to be the then printer's points for SoText2 and in the current object space units for SoText3.


In order to lighten the documentation package, all the html files have been removed from the Open Inventor downlodable package on Windows platforms. Now the documentation are available:

  • As a .chm file for C++ and .Net API : respectivly OpenInventorC++.chm and OpenInventorNet.chm under the doc/ReferenceManual directory. 
  • As .zip file for Java API : under the doc directory. 

Online documentation are available too by following the link for Java API, C++ API and .NET API.

New Classes

  • SoRemoteVizClient
  • SbEventHandler

New Methods

  • void SoState::enableSendToGL(bool enable)
  • bool SoState::isSendToGLEnabled()
  • SoInstanceParameter* SoInstanceParameter::setTranslation( SbVec3f* values, size_t nbValues, uint32_t divisor = 1, SoMemoryObject::CopyPolicy policy = SoMemoryObject::NO_COPY );
  • SoInstanceParameter* SoInstanceParameter::setRotation( SbVec4f* values, size_t nbValues, uint32_t divisor = 1, SoMemoryObject::CopyPolicy policy = SoMemoryObject::NO_COPY );
  • SoInstanceParameter* SoInstanceParameter::setScale( SbVec3f* values, size_t nbValues, uint32_t divisor = 1, SoMemoryObject::CopyPolicy policy = SoMemoryObject::NO_COPY );
  • SoInstanceParameter* SoInstanceParameter::setColor( SbColor* values, size_t nbValues, uint32_t divisor = 1, SoMemoryObject::CopyPolicy policy = SoMemoryObject::NO_COPY );
  • SoInstanceParameter* SoInstanceParameter::setVisibility( int32_t* values, size_t nbValues, uint32_t divisor = 1, SoMemoryObject::CopyPolicy policy = SoMemoryObject::NO_COPY );
  • void SoAction::clearApplyResult(): allows to explicitly remove references to nodes created durig the apply() of a SoAction. Method has been implemented in : SoBoxHighlightRenderAction, SoGlobalSimplifyAction, SoHandleEventAction, SoLineHighlightRenderAction, SoRayPickAction and SoSearchAction.

New Fields

  • SoAlgebraicShape::clippingPolicy: allow to define the behavior of the shape with clip plane. STANDARD (default value) means the clipping is continuous and the shape can be partially clipped. FULL_SHAPE : On/Off behaviour, the entire shape is clipped if its center is on the clipped side of a clip plane.
  • SotextProperty::characterSpacing: specifies the spacing between individual characters. The value is in printer's points for 2D text (SoText2) and is in the current (object space) units for 3D text (SoText3). Default is 0.

MeshVizXLM C++

New Fields

  • MoLegend::valueNotationand MoLegend::valuePrecision : allow some control on the way legend values are displayed. Thanks to the field, application is able to specify the number of digits to be displayed and to specify if the values are displayed in fixed or scientific notation. The demo $OIVHOME\$OIVARCH\Demos\MeshVizDataMapping\Legend has been updated and show how to use these new fields.
  • SotextProperty::characterSpacing: specifies the spacing between individual characters. The value is in printer's points for 2D text (SoText2) and is in the current (object space) units for 3D text (SoText3). Default is 0.


New Fields

  • PoLogAxis::maxGradNum: Change the number of graduations displayed. Furthermore, when the number of displayed graduations is limited by the value of maxGradNum, (ie when the step between 2 graduations is > 1 or < -1) we do not display any decades (sub graduation)


New Methods

New Fields

  • SoSFInt32 SoLDMResourceParameters::max2DTexMemory


New Methods

  • The method RenderArea::pushFrame has been added to be able to send a frame to all clients of a renderArea when using the independent service mode.
  • The method Service::getRunMode has been added to know the run mode after opening the service.
  • The method RenderArea::getWidth has been added to return the render area width.
  • The method RenderArea::getHeight has been added to return the render area height.

New Enums

  • The RunMode INDEPENDENT_SERVICE has been added to use independent service mode (see the Service class).


Compatibility Issues

In this chapter are listed all the modifications that could impact application built with previous version of Open Inventor:

  • some of these updates will require to update the code of the application
  • some may change the default behavior of an existing application

In both cases we recommend to consult the documentation to be sure to get needed informations on how to bypass these compatibility issues. 

Open Inventor

The function SoAction::switchToNodeTraversal has been renamed to SoAction::forwardTraversal. SoAction::switchToNodeTraversal was not documented because it was an internal public method. It shouldn't have been used, but in some cases you could have been advised to use it if necessary. With Open Inventor 9.6.2 this method cannot be used anymore (code won't compile) and must simply be replaced by a call to SoAction::forwardTraversal with the same parameter.


Improve VolumeViz performances

VolumeViz behavior may have change, from a performance point of view, since Open Inventor 9. This may have two main causes : Rendering or Loading. In order to tune the performances of your application, you first have to identify where performance issue come from. First, spin the scene in your application. You may have some interactivity issue at the beginning but when scene starts to spin, it should run at a constant framerate. By default, LDM stops loading data when scene is moving. (please refer to SoLDMResourceParameters::loadPolicy for details). If framerate is too low, then you have a rendering issue. Please refer the Rendering issue section below. If framerate is satisfactory, you probably have loading issues. Please refer to the Loading issue section.

Rendering Issues

Since Open Inventor 9, VolumeRendering use a new rendering engine based on ray-casting. New render engine implies new effects and new optimizations different from previous versions. Here are some hints to help you improving your rendering performances:

Loading issues

If your scene spin at a decent framerate but your application seems slow and interactivity is poor then you probably have a loading issue and it's generally useless to decrease rendering quality. Loading issue has an impact when:

Unfortunately, there is no rule of thumb to optimize loading but here are some hints you may try:



Compared to Open Inventor 9.6 beta, the new class Oiv.Inventor.EventHandler has been renamed to Oiv.Inventor.SbEventHandler

New preference OIVNET_USER_ASSEMBLIES: When a type cannot be resolved when reading an iv file, try first to resolve the type using known assemblies of OpenInventor.Net framework. Then, try to resolve the type using user assemblies provided by the OIVNET_USER_ASSEMBLIES preference.


MeshVizXlm Java

  • The namespace of interface MiColorMapping has changed
    • com.openinventor.meshvizxlm.mapping.interfaces.MiColorMapping moved to com.openinventor.meshvizxlm.mapping.MiColorMapping
    • package com.openinventor.meshvizxlm.mapping.interfaces has been removed
  • The api to specify a vertex coordinates has changed
    • MiGeometryI, MiGeometryIj and MiGeometryIjk: getX/Y/Z methods replaced by one method getCoord
    • MeXGeometry: getXMin/YMin/ZMin methods replaced by one method getMin (same for max values)
    • MiVec3dSetI, MiVec3dSetIj and MiVec3dSetIjk: getX/Y/Z methods replaced by one method get
    • MiCell: getXCenter(), getYCenter(), getZCenter() methods replaced by getCenter
    • MiVolumeCell: getXFacetCenter(), getYFacetCenter(), getZFacetCenter() methods replaced by getFacetCenter
    • MiPointProbeUnstructured: getX/Y/Z replaced by getCoord
    • MiPointProbeUnstructured: moveLocation(double x, double y, double z, ...) replaced by moveLocation(doubel[] point, ...)
    • MiPointProbeUnstructured: setLocation(double x, double y, double z, ...) replaced by setLocation(double[] point, ...)
  • Jars files of MeshvizXLM Java have been renamed, in order to keep consistency with new jar naming convention for Open Inventor 10
    • MeshViz_MeshInterfaces.jar is now com.openinventor.meshvizxlm.mesh.jar
    • MeshViz_Extractors.jar is now com.openinventor.meshvizxlm.extractors.jar
    • MeshViz_DataMapping.jar is now com.openinventor.meshvizxlm.mapping.jar
  • Renaming of the extractors Mi***ExtractUnstructuredIjk
    • MiIsosurfExtractUnstructuredIjk is now MiIsosurfExtractHexahedronIjk
    • MiOutlineExtractUnstructuredIjk is now MiOutlineExtractHexahedronIjk
    • MiSkinExtractUnstructuredIjk is now MiSkinExtractHexahedronIjk
    • MiSlabExtractUnstructuredIjk is now MiSlabExtractHexahedronIjk
    • MiCylinderSliceExtractUnstructuredIjk is now MiCylinderSliceExtractHexahedronIjk
    • MiPlaneSliceExtractUnstructuredIjk is now MiPlaneSliceExtractHexahedronIjk
    • MiSphereSliceExtractUnstructuredIjk is now MiSphereSliceExtractHexahedronIjk
    • MoMeshIsosurface.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshOutline.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshSkin.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshSlab.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshCylinderSlice.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshPlaneSlice.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()
    • MoMeshSphereSlice.getUnstructuredIjkExtractor() is now getHexahedronIjkExtractor()


API evolution since the last version

  • The Service::STANDALONE mode has been renamed Service::INVENTOR_SERVICE.
  • The default value of the interactive compression quality parameter has been lowered from 0.5 to 0.3 (see the RenderAreaSettings class).
  • The default value of the max sending FPS parameter has been lowered from 60 to 30 (see the ConnectionSettings class).
  • The disconnection notification LICENCE in the serviceHandler (HTML5 API) has been renamed LICENSE.
  • RemoteVizClient.js has been moved to OIVHOME/include/RemoteViz/Clients/HTML5


Please note that even though there will be no further development for deprecated elements, support is still available according to the product life cycle policy described here.

Open Inventor


  • Following classes from Open Inventor have been set to deprecated : SoMaterialElement, SoFrontBufferGroup,SoGLRenderCache, SoGLCacheList, SoGLDisplayList.
  • SoTexture::ALPHA4, SoTexture::LUMINANCE4 and SoTexture::INTENSITY4 are now deprecated in Open inventor 9.6.2. Please use the 8 bits version of the type with the same name (ie: SoTexture::ALPHA8, SoTexture::LUMINANCE8 and SoTexture::INTENSITY8).
  • All SoGLXXXElement have been set to deprecated. As a replacement you should use the equivalent with no GL extension (SoGLDrawStyleElement -> SoDrawStyleElement for example). Please note that only SoGLLazyElement is still available
  • SoShadowGroup::SHADOW_MAP enum value has been deprecated. Please use VARIANCE_SHADOW_MAP instead
  • SoTexture::useAutoMipmap: field is now deprecated and will be deleted in Open Inventor 10 due to its uselessness
  • SoTransparencyTypeElement: class is now deprecated and will be deleted in Open Inventor 10 due to its uselessness



Following field are deprecated:

  • SoVolumeShader::raycasting : please note the field will be totally removed in Open Inventor 10


MeshViz Editor

Meshviz Editors are no longer supported, so all following classes are now set as deprecated : PoXtAngularAxisEditor, PoXtAutoValueLegendEditor, PoXtAxisEditor, PoXtCartesianAxisEditor, PoXtGenAxisEditor, PoXtItemLegendEditor, PoXtLegendEditor, PoXtLinearAxisEditor, PoXtLinearValueLegendEditor, PoXtLogAxisEditor, PoXtNonLinearValueLegend1Editor, PoXtNonLinearValueLegend2Editor, PoXtNonLinearValueLegend3Editor, PoXtPolarAxisEditor, PoXtPolarLinAxisEditor, PoXtPolarLogAxisEditor, PoXtTimeAxisEditor, PoXtValueLegendEditor.


The following methods are now deprecated.

The following fields are now deprecated.

  • SoSFInt32 SoLDMResourceParameters::max2DTextures

The following enums are now deprecated.

HardCopy Editor

HardCopy Editors are no longer supported so all following classes are now set as deprecated : PoPrinPSMonitor, PoPrintCGMMonitor, PoPrintHPGLMonitor, PoPrintMonitor.