Release notes Open Inventor 10.8

Below, a link to the "online" version of this release note that contain more images, interactive chartings and videos.

https://developer.openinventor.com/index.php/release-notes/open-inventor-10-8-release-notes/

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.8

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
In 2021 , the following platforms will be added
  • Open Inventor 10 C++ & Java: RHEL8 (gcc 8) + Ubuntu 20.04 (gcc 9)
RemoteViz : Microsoft Internet Explorer no longer supported (Microsoft Edge still supported)

Inventor

SoTransform performance enhancement.

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:

SoTabBoxDragger automatic highlight

In order to ease the interaction with an SoTabBoxDragger two new fields have been added to the class allowing to automatically highlight interactive parts of the dragger when selected/flew over: enableHighlight and hightlightColor.
The first one is a SoSFBool allowing to turn on or off the feature (activated by default). The second one, a SoSFColor, is useful to customize the color of the highlight with a defaut color set to Yelow (R=1, G=1, B=0).
The feature is available for both modes of SoTabBoxDragger as shown below.
8mCtk3Dk1z.gif

SoTabBoxDragger WYSIWYG style

djiWcn69wK.gif

SoTabBoxDragger classic style

Finally, the following examples show this new highlight behaviour
  • C++: $OIVHOME/examples/source/VolumeViz/roiManip
  • .NET: $OIVNETHOME/examples/source/Medical/Tools/MedicalRoiManip
  • Java: $OIVJHOME/examples/volumeviz/sample/roiManip

SoAnnoText3 performances improved.

Open Inventor 10.8 brings some rendering performance improvements in case of scene graph containing SoAnnoText3. 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. Note that for Open Inventor 10.7 300 SoAnnoText3 was not usable because of the huge memory usage.
so_annotext3_perf_enh.png
Furthermore the amount of texture memory used by SoAnnoText3 has also been reduced.
Please note that these enhancements concern only the mode RENDER2D_PRINT_RASTER (see SoAnnoText3Property::renderPrintType)

The scene orbiter can be used on touch screen

The SceneOrbiter is now able to handle touch events received from screen. With 1 finger touch, you can orbit, you can pick elements such as the face of the SoViewingCube. With 2 fingers touch, you can zoom, rotate or pan.
The example RenderAreaOrbiter (in viewer components) has been updated and can be used now on a touch screen device.

SoBaseKit(C++) API enhancement

New C++ template methods SoBaseKit::getPart and SoBaseKit::checkPart. These new methods can safely replace the SO_GET_PART and SO_CHECK_PART macros. They can also safely replace their non-template version which allow 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" );

SoEventCallback(C++) API enhancement

New C++ template methods SoEventCallback::addEventCallback() and SoEventCallback::removeEventCallback(). These new methods can safely replace their non-template version which allow to remove calls to getClassTypeId(). For instance:
           eventCB->addEventCallback( SoKeyboardEvent::getClassTypeId()   , keyEventCB );
can be replaced by
           eventCB->addEventCallback<SoKeyboardEvent>( keyEventCB );

SoRenderAreaCore API change.

The deprecated method getViewportRegion of the class SoRenderAreaCore has been removed. As of 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. The example now uses an SoSelection and an SoHaloHighlightRenderAction.

VolumeViz

Heights can be used to color an SoHeightFieldRender.

With Open Inventor 10.8, SoHeightfieldRender 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, an SoHeightFieldGeometry and a SoHeightFieldRender but no SoHeightFieldProperty, the SoHeightFieldRender is colored by applying the transfer function on the height field geometry.
This is an important improvement regarding the amount of ram usage. Up to Open Inventor 10.7, in order to color an height field surface according the heights, it was necessary to duplicate the data from the geometry to the property. That leads to an important waste of memory.
Warning: there is a small behaviour change because there is no new api. Up to Open Inventor 10.7 rendering such scene graph leads to a uniform colored surface. However no behaviour change when there is an SoHeightFieldGeometry and an SoHeightFieldProperty before an SoHeightFieldRender in the scene graph. If a uniform colored surface must be rendered, the transfer function must be removed from the scene graph.
The 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

The vertex coordinates of an SoHeightFieldRender can be modified by a shader.

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 class.
The 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

Open Inventor Toolkit reference manual, generated on 15 Mar 2023
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/