The following document contains the release notes for the latest minor release 10.8.0 (December 2020).

Because Open Inventor 10 was a major step in the history of the SDK, please refer to the upgrade path documentation to get all the needed information and be sure your application is ready to be ported on this version of Open Inventor.


Important note: Since Open Inventor patch release 10.2.1, the DLLs and executables in the Open Inventor SDK are digitally signed for security. This should also avoid warning messages from anti-virus software.


See below the complete list of enhancements, new features included and old features removed in Open Inventor 10.7


Upcoming life cycle events
Q4 2020 is the end of support for the following obsolete platforms.
“End of support” means that, starting January 2021, new Open Inventor releases will not be built for these platforms. The current releases of Open Inventor at the end of 2020 will receive critical bug fixes on these platforms, if necessary, for one year (until the end of 2021).

  • Open Inventor 10 C++: Qt 5.12 is replaced by Qt 5.15
  • Open Inventor 10 Java: Oracle JDK 8 is replaced by OpenJDK 11

Note that Open Inventor 9 is fully supported for existing applications, but new features are only implemented in Open Inventor 10.
Product Application Specialists are ready to assist with updating your application to use Open Inventor 10.

In 2021, the following platforms will be added

  • Open Inventor 10 C++ and Java : RedHat (RHEL) 8 / gcc 8.2 + Ubuntu 20.04 / gcc 9

RemoteViz : Microsoft Internet Explorer no longer supported (Microsoft Edge still supported)


Core

  • SoTransform performance enhancements

    When many SoTransform nodes depend on a camera, each update of this camera's position and
    or orientation no longer breaks caches, thus leading to an optimal frame rate. As a consequence the following use cases benefit from this improvement:

    • Performances of SoBillboard(C++|Java|.Net) have been improved, in particular with several of them containing one SoText3(C++|Java|.Net). As shown by video below, framerate is now far more stable
    • Performances also improved when many SoTransform(C++|Java|.Net) nodes are modified at each frame. For example when a SoCallback(C++|Java|.Net) is inserted at the top level before all these transforms in the scene graph.
  • SoTabBoxDragger(C++|Java|.Net) automatic highlight

    In order to improve interaction with SoTabBoxDragger(C++|Java|.Net), selectable parts of the dragger can now be dynamically highlighted when the mouse cursor moves over them. Two new fields have been added to the class: enableHighlight and hightlightColor.

    The first one is a SoSFBool(C++|Java|.Net) allowing to turn on or off the feature (activated by default). The second one, a SoSFColor(C++|Java|.Net), is useful to customize the color of the highlight with a default color set to Yelow (R=1, G=1, B=0).

    The feature is available for both modes of SoTabBoxDragger(C++|Java|.Net) as shown below.

    Finally, the following examples show this new highlight behaviour

    • C++ $OIVHOME/examples/source/VolumeViz/roiManip/VolumeViz/roiManip
    • .NET $OIVNETHOME/examples/source/Medical/Tools/MedicalRoiManip
    • Java $OIVJHOME/examples/volumeviz/sample/roiManip
  • SoAnnoText3(C++|Java|.Net) performances improvement

    Open Inventor 10.8 brings some rendering performance improvements in case of scene graphs containing SoAnnoText3(C++|Java|.Net). Up to Open Inventor 10.7, the time to render a frame depended on the size of the text on screen (larger text meant longer rendering time) leading to high CPU usage and, sometimes, low interactivity within the application. In Open Inventor 10.8, the rendering time is now independent from the text size making it fast in any case.

    Here is an example of performances improvement on a simple scene graph containing 100 and 300 SoAnnoText3(C++|Java|.Net). Note that for Open Inventor 10.7 300 SoAnnoText3(C++|Java|.Net) was not usable because of the huge memory usage.

    Furthermore the amount of texture memory used by SoAnnoText3(C++|Java|.Net) has also been reduced.

    Please note that these enhancements concern only the mode RENDER2D_PRINT_RASTER (see SoAnnoText3Property::renderPrintType)

  • Scene orbiter availability for touch screens

    The SceneOrbiter is now able to handle touch events received from screen. With 1 finger you can orbit or pick elements such as SoViewingCube's faces. With 2 fingers touch you can zoom, rotate or pan.

    The example RenderAreaOrbiter (in viewer components) has been updated so it can now be used on a touch screen device.

  • SoEventCallback(C++) API enhancement

    New C++ template methods SoEventCallback::addEventCallback() and SoEventCallback::removeEventCallback() can safely replace their non-template version, allowing to remove calls to getClassTypeId(). For instance:

      eventCB->addEventCallback( SoKeyboardEvent::getClassTypeId()   , keyEventCB );

    can be replaced by

      eventCB->addEventCallback<SoKeyboardEvent>( keyEventCB );
    
  • SoBaseKit(C++) API enhancement

    New C++ template methods SoBaseKit::getPart() and SoBaseKit::checkPart() can safely replace the SO_GET_PART and SO_CHECK_PART macros. They can also safely replace their non-template version allowing to remove tedious cast.

    For instance:

      xf = SO_GET_PART(myKit, "transform", SoTransform);
    or
      xf = (SoTransform*) myKit->getPart( "transform", FALSE );
    or
      xf = dynamic_cast<SoTransform*>(myKit->getPart( "transform", FALSE ));`

    can be replaced by

      xf = myKit->getPart<SoTransform>( "transform" );
    
  • SoRenderAreaCore(C++|Java|.Net) API change
    The deprecated method getViewportRegion() of the class SoRenderAreaCore(C++|Java|.Net) has been removed. Since Open Inventor 10.6 SoRenderAreaCore::getSize() must be used instead.
  • RenderAreaOrbiter example updated
  • The RenderAreaOrbiter example has been updated, in C++, Java and .Net, to better highlight the benefit of using a SceneOrbiter(C++|Java|.Net). Example now uses an SoSelection(C++|Java|.Net)
    and a SoHaloHighlightRenderAction(C++|Java|.Net)


VolumeViz

  • Height can be used to color an SoHeightfieldRender(C++|Java|.Net)

    With Open Invenror 10.8, SoHeightfieldRender(C++|Java|.Net) is now able to use the height values for both geometry and property data without having to duplicate datas.

    This means that if a scene graph contains an SoTransferFunction(C++|Java|.Net), an SoHeightFieldGeometry(C++|Java|.Net) and a SoHeightfieldRender(C++|Java|.Net) but no SoHeightFieldProperty(C++|Java|.Net), the SoHeightfieldRender(C++|Java|.Net) is colored by applying the transfer function on the height field geometry.

    Following examples have been updated to benefit from this improvement

    • C++ $OIVHOME/examples/source/VolumeViz/horizonIsolines and VolumeViz/simpleHorizon
    • .NET $OIVNETHOME/examples/source/VolumeViz/HorizonIsolines
    • Java $OIVJHOME/examples/volumeviz/sample/horizonIsolines
  • Coordinate shift in SoHeightfieldRender(C++|Java|.Net)

    A new vertex shader function can be defined to slightly modify the position of the surface's vertices. A new shader slot has been added and can be accessed through the new enum value SoVolumeShader::TESS_VERTEX_SHIFT.

    Note: To synchronize the vertex values on CPU with their values modified by the shader on the GPU (and thus ensure correct rendering, tile loading and picking result) it is necessary to override voxelToXYZ() and XYZToVoxel() in SoHeightFieldGeometry(C++|Java|.Net) class.

    Following examples have been added to demonstrate this new feature:

    • C++ $OIVHOME/examples/source/VolumeViz/horizonShiftProjection
    • .NET $OIVNETHOME/examples/source/VolumeViz/HorizonShiftProjection
    • Java $OIVJHOME/examples/volumeviz/sample/horizonShiftProjection