Open Inventor® 10.2 (May 2019)

The following document contains the release notes for the latest minor release 10.2.0 (May 2019).

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 informations and be sure you’re application is ready to be ported on his version of Open Inventor.

See below the complete list of enhancements and new features included in Open Inventor 10.2.


Open Inventor Headless build

This package provides an implementation of Open Inventor specifically for “headless ” server machines. It uses the EGL library, allowing Open Inventor applications to run without starting an X Server (X11). For example, in a Docker based environment. In order to use this package in your project, the following macro must be defined: OIV_HEADLESS.

Compared to the standard package, this package has some limitations:

    • No viewers are provided so RemoteViz must be used
    • Some Open Inventor extensions are not provided:
      • HardCopy
      • DialogViz
      • ImageViz

To help you starting with this build a Docker (based on NVIDIA’s OpenGL Ubuntu 18.04 image) example has been added. For more details please read the ReadMe1st.md file available in your Open Inventor Headless installation folder.

Please note that FlexNet floating license server version 11.16.2 (package available on download page) is mandatory to run this version of Open Inventor.

Open Inventor Headless build can be downloaded from the download page.


Open Inventor

    • Ambient Occlusion: is a shading technique used to calculate how exposed each point in a scene is to ambient lighting and, by then, enhances contrast and perception. This effect is now available in Open Inventor 10.2 via the field ambientOcclusion of the SoEnvironment node. Please note that this ambient occlusion is different from the one implemented in VolumeViz and only applies on line.

Illustration of Ambien Occlusion on a complex SoLineSet

    • SoVertexProperty has been complemented with two new fields: tangent and tangentBinding. While the existing normal field is used to define unit-length vector perpendicular to the surface at some point, the tangent field aims at defining unit-length vector that follows surface along horizontal direction. tangentBinding field describes how tangents are defined, e.g., per part, per face or per vertex.

      For user purpose, tangent values are accessible via the shader API using the OivVertexTangent

      In Open Inventor 10.2 any line shape, where tangent and tangentBinding fields are set, is shaded if light model is not base color (no shading is applied if tangents are not given). medicalDTI example, located in $OIVHOME\examples\source\Medical\Rendering\Visualization folder, shows how to benefits from this new feature.

Illustration of Phong lighting on a complex SoLineSet

      • Performances continue to be improved compare to previous Open Inventor version (10.1). Thanks to several optimizations, Open Inventor 10.2 is now, at least, at the same level than Open Inventor 9 and even more in many cases regarding FPS.

        Time to First Render (delay between the moment when data are loaded and the first render on the screen) has also been greatly enhanced as shown by following charts. Note that these TFR results have been obtained with some of the worst cases with huge and complex scenes. With simplest models TFR performances are at the same level than Open Inventor 9.

      • Open Inventor Studio, the tool replacing IvTuneViewer, is now active by default. If you want to turn it off (and then, turn on IvtuneViewer) you must define the variable OIV_USE_OIVS to 0 in your environnement or your configuration file. Then, when hitting Shift + F12 in your application, IvtuneViewer will popup instead of Open Inventor Studio.

        Once again your feedback is our most important ressource to make sure future versions of Open Inventor Studio will match your expectations. For missing features, issues or needed enhancements please send any kind of feedback to our support.


ImageViz

    • Texture Classification by Machine Learning

      The new SoSupervisedTextureClassificationProcessing2d and SoSupervisedTextureClassificationProcessing3d engines allow to segment an image on texture criteria after having learned a training image. This tool does not rely only on intensity criteria like the common multi class segmentation algorithms (e.g., SoAutoIntensityClassificationProcessing).

      The Texture Classification tool considers each pixel of a grayscale image as an object with textural features. The features to compute can be first order statistics (i.e. mean, variance, histogram quantiles) and Cooccurrence based statistics.

      The features related to the selection are computed locally on disk slicing windows in each region of the training image with different radius (texture scales). Then a classification model is computed rejecting any non-discriminant feature. At last, the relevant measures are computed on each pixel which is assigned to a label representing the closest class of the model. This classification is based on a Bayesian classifier.

      Mouse heart muscle segmentation. Data courtesy of Dr. Madesh Muniswamy from the Department of Medicine, UT Health San Antonio. (Left) Original and training image. (Right) Segmentation result after texture classification and watershed post processing.
    • 2D pruning
      The SoPruningProcessing3d engine has been introduced in ImageViz 9.8. Its 2D counterpart was initially not available. The SoPruningProcessing2d new command removes from a 2D binary image all object voxels having only one neighbor, also called spurs. It can be applied either by specifying an iterations number or until convergence.

      This feature can be used for removing terminal branches from a skeleton.

    • Structure enhancement engines
      • Structure Tensor 

        The SoGaussianGradientTensorProcessing2d and SoGaussianGradientTensorProcessing3d engines output a tensor image where each frame represents an element of the structure tensor also known as second-moment matrix. In 3D the second-moment matrix is:

        Where each partial derivative represents a linear Gaussian gradient with a standard deviation given as input.

      • Structureness computation

        From eigenvalues of a structure tensor or an Hessian matrix, the new engines SoEigenvaluesToStructurenessProcessing2d and SoEigenvaluesToStructurenessProcessing3d compute a score between 0 and 1 for each pixel, where 1 represents a good matching with a structure model and 0 a background pixel.

        Available models are:

        • Balls (circular structures in 2D, spherical in 3D, corners when used in combination with structure tensor)
        • Rods (linear structures)
        • Plates (only available in 3D)

        This command is intended to be applied on the eigenvalues of a matrix representing a tensor, i.e. after using an Hessian Matrix or a Structure Tensor algorithms followed by a Singular Value Decomposition.

        Example of ball structureness on a structure tensor

          • Tensor Voting :The SoTensorVotingProcessing2d algorithm strengthens local features of an image according to their consistency with a model of smooth curves. It is a powerful algorithm for reconnecting disrupted ridges.
            Initial score image Output after correction by tensor voting

            The tensor voting computation uses a stickness score image and an orientation vector image as inputs. This algorithm consists in propagating stickness scores along the direction of the structure in a predefined neighborhood by using a stick tensor voting field. A scale parameter allows to control the size of the neighborhood, i.e., the maximal length of disruptions to fill.

            Example of a stick voting field

            The method is referenced by Franken and van Almsick publication: E.Franken, M.van Almsick, P.Rongen, L.Florack, B.ter Haar Romeny, “An efficient method for tensor voting using steerable filters.” Computer Vision ECCV 2006. Springer, pp. 228-240, 2006.


MeshVizXLM

    • Illuminated Streamlines (C++|Java): based on ambient occlusion and new lighting available in Open Inventor, MeshVizXLM has now a better rendering of streamlines when Phong is enabled. Tangents are computed internally by MeshVizXLM so any application can benefit from illuminated streamlines rendering automatically.You can see the result by running the C++ Turbine demo in MeshVizXLM examples folder or the Java Streamlines demo (in examples/meshvizxlm/mapping)

RemoteViz

    • With this release RemoteViz adds the support of TLS v1.3 (Transport Layer Security) that includes security and performance improvements
    • A new licensing is applied starting with Open Inventor 10.2. Please refer to following illustration to understand how licensing is applied depending on each configuration

Configuration 1

A configuration with N connections (multi-tabs browser or a multi-views application) from a single computer to the same RemoteViz service will require one OIV runtime and N RemoteViz runtimes

Configuration 2

Configurations with N connections (from N instances of web browser from the same computer or not) to one RemoteViz service will require one OIV runtime and N RemoteViz runtimes

Configuration 3

Configurations with one or N connections from a single web browser to N RemoteViz services will require N OIV runtimes and N RemoteViz runtimes


Medical Content

    • Dicom orientation managementA new method has been added to the MedicalHelper class allowing to set a DICOM volume in the correct orientation.static SbBool dicomAdjustVolume (SoVolumeData *volume, SoMatrixTransform *imgToPatient)Will compute the SoMatrixTransform which embeds the image position and image orientation (as described here). Scaling part is embedded in SoVolumeData extent. This matrix must be inserted in the scene graph before the SoVolumeData as explained in this C++ example.Following pictures illustrate the difference between a DICOM loaded with and without the help of this new helper.
      DICOM volume loaded without (left) and with (right) function MedicalHelper::dicomAdjustVolume
    • A new example has been provided In C++. Named medicalDTI you can find it in $OIVHOME\examples\source\Medical\Rendering\Visualization it shows how the rendering of dti lineset benefits from the ambient occlusion and lighting.

OS X

Open Inventor 10 is not yet available on this platform.