Release Notes

Open Inventor® 10.0 Beta3 (December 2017) 

Older release notes

The following document contains the release notes for the latest minor release 10.0.0 Beta3 (December 2017).

The current service release is 10.0.0 Beta3. See the bugs fixed section for a complete list of issues resolved for each version. First of all, because Open Inventor 10 is 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.

Make also sure to read the Compatibility Notes as well. They contain information about important changes in this release. Finally, check the Life cycle topic for important information about Open Inventor platform support changes in upcoming release.

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


Licensing

Starting with Open Inventor 10, the licensing is now langage independent. Until now, a licence key was only unlocking a given module for a given API (i.e. Java, C++ or .NET), but now when you purchase a license key for a specific module, it will unlock the all available APIs.


From QT4 to QT5

Open Inventor now fully supports QT 5 and uses the version 5.6 of the well known GUI library. This new feature introduces two major changes from an application point of view

  • It's now mandatory to install Qt 5 on your machine if you wish to rebuild any demo contained in the Open Inventor package. If you just want to run these demos, the installation is not mandatory, but to rebuild them, Qt 5.6 must be installed on the developper computer.
  • On OS X the introduction of Qt 5 leads us to provide a fully compatible installer allowing a fast and reliable distribution. To support such feature, Open Inventor 10 binaries (libraries and executable) or now built upon the RPATH mechanism. In extension, any QT application based on Open Inventor will need to use the same mechanism in its deployment process.
  • Open Inventor 10 Beta uses the QOpenGLWidget as main class for QtViewerComponent. Please refer to the official documentation of QOpenGLWidget to get more information about methods that may not be available anymore compared to the old QGLWidget used previously.

Performance improvements - Benefits from the Introduction of the Lazy Evaluation

Open Inventor 10 Beta 2 introduces a new featture: the Lazy Evaluation. An internal cache management allowing to improve performances by minimizing the number of scene graph traversals needed to render an interactive scene. Following scenegraph has been used to run some performances comparisons: 

The scene is made of a set of SoSeparator with, for each:
  • SoTransform
  • SoMaterial
  • SoSphere

The following chart shows the performances comparison with Open Inventor 10 beta 1. The gain of performances goes from a factor 10 to 100 depending on the number of shapes (from 33 to 203). 

 

The second comparison has been made between Open Inventor 10 Beta 2 and current Open Inventor 9.7.1 and shows some very interesting results for the final version of Open Inventor 10. Of course, Open Inventor 10 is still in development and a lot of improvements are still yet to come to cover as much configurations as possible.


Open Inventor

Custom nodes management

Of course with the new Beta version of Open Inventor we continued the API cleanup and remove as much as possible deprecated methods, fields and nodes. More than ever the upgrade path documentation will help you to move your application to Open Inventor 10 as it has been updated with latest information. But with Open Inventor 10 Beta we also try to bring you a clear guidance and all the needed tools to manage existing custom nodes and OpenGL in your application. Open Inventor 10 Alpha 2 was clearly the starting point if you deal with this kind of cases in your application.

You'll find all the needed information in the complete guide available on this page.

 

How to write shader with OIV 10

Starting with its version 10, Open Inventor provides a complete shader API to access various state values from shaders. It which brings some useful functions separated into two different headers files.

  • State accessors: are functions defined to get information from the state. It covers transformation, lighting, material and clip plane properties. These properties are accessible whatever the shader pipeline stage is. The include gathering these functions can be found in the file $OIVHOME/shaders/include/Inventor/oivShaderState.h
  • Shape Attribute accessors: The functions define a generic way to access implementation dependant values. It covers vertex attributes as well as shape instance attributes. These functions are available only from the vertex shader. All these methods are gathered in the include file $OIVHOME/shaders/include/Inventor/oivShapeAttribute.h

In order to simplify the use of this shader API, Open Inventor 10 also provides a simple tools to replace GLSL built-in uniforms into OIV shader API calls, providing therefore a way to port shaders that work in Open Inventor 9.x to shaders working in Open Inventor 10 as well. The tool is a python script named GLSLConverter.py (compatible with python 2.x) that can be found in the directory $OIVHOME/src/Inventor/tools/GLSLConverter

A complete guide on how to write shader wih OIV 10 can be found on this dedicated page. Please also note that the C++ reference manual now also provides a dedicated chapter to Shader API (under Modules / Shader API).

 

Notification mechanism

Notification mechanism has been changed starting with Open Inventor 10 Alpha2. Until now, each time a value was assigned to a field, a notification was generated and processed by Open Inventor. Now, if a field is given a value equal to its current value no notification will be generated. This new behavior will not change the way your application currently works

Multithread: Starting with Alpha2, Open Inventor is now multithreaded by default and there is no way to turn the feature off. From a performance point of view, if your application was previously not using this mode, there should have no impact. Please refer to the upgrade path documentation to get all the needed informations. If you think your application is penalized by this change, please contact-us to ask for support.

 

Nodes

  • SoLicensedProduct provides now a brand new API to allow managing the license information in a given product. Please refer to its online documentation page to get all the needed information on how to use it.
  • SoBillboard: because of the removal of the VRML API, Open Inventor introduces this new node with the exact same properties than the removed SoVRMLBillboard.
  • SoPolyLineScreenDrawer
    • The node has now a new field named lineWidth used to define line width. Its default value is 0, meaning we use default OpenGL value (1). Line widths greater than zero are considered to be specified in printer's points, where 1 inch = 72 printer's points. However the default pixels-per-inch value (managed by SbViewportRegion) is also 72. So effectively line width is specified in pixels unless the application sets a different pixels-per-inch value.
    • The node, and all those who inherit from it now provide start and moving event handler in addition to the finish callback already existing.
    • The node, and all those who inherit from it now also provide two new properties to provide the support of dotted lines.
      • SoSFUShort linePattern: specifies how dashed or dotted lines will be drawn
      • SoSFInt32 linePatternScaleFactor: stretches the line pattern by multiplying each sub series of consecutive 1 and 0. Scale factors are clamped to lie between 1 and 255. Default is 1.
  • Open Inventor 10 Beta1 provides a new utility class to easily manage cache. SoNodeDependencies encapsulates and manages a SoCache object and let application manage cache at a higher level.
  • SoAlphaPolicy: is a new node useful to set the current alpha comparison policy the renderer has to follow. It affects the blending operation to control how, if necessary, a transparent object should be rendered. Several policies are available in Open Inventor Beta2:
    • POLICY_AS_IS: Use the alpha value of the fragment to control color blending
    • POLICY_OPAQUE: If the fragment to render has a transparency different from 0.0, the object is rendered opaque (no transparency). If the alpha value is 0.0 the object is considered fully transparent.
    • POLICY_DISCARD: If the fragment alpha value is different from 1.0, the object is considered fully transparent. Otherwise it's rendered opaque.
  • SoOffscreenRenderer and SoBigImageRenderer have been removed from Open Inventor public API. As a replacement, please use SoOffscreenRenderArea. Please note that this new SoOffscreenRenderArea has been successfully tested with image generation upto (25 000 x 25 000).  This limitation is the same as in Open Inventor 9, because, in a first step, we wanted to be sure to to reach the same level of feature with a new design before going further. This limitation on the size will, of course, be remove in future release in order to offer the possibility to generate image as big as needed by your application. Anti Aliasing will aslo be supported in future release, but for now the feature is not available. Finally, for application activating tiling, a new function has been added to retrieve the maximum subimage size for rendering : static SbVec2i32 SoOffscreenRenderArea::getMaxTileSize()
  • Open Inventor 10 also provide a new API to retrieve a list of common capabilities set internally. Please refer to the documentation of SbGraphicsCapabilities  to check which capability can be check using this helper.
  • SoVertexAttribFeedback: is used to record selected vertex attributes for each primitive processed by the OpenGL system. The recorded vertex attributes may be stored in separate SoGLBufferObjects or interleaved into a single buffer object (green frame in the illustration below).

    In a nutshell, the SoVertexAttribFeedback node is used to perform expensive geometry steps on the GPU to benefit from its parallel capabilities as much as avoiding copies between GPU and CPU memory.

    However the implementation of the node has two limitations:

    • The automatic resize of the buffer objects requires two traversal of the children, one to compute the number of primitives which will be generated and the actual traversal.
    • Most of the regular actions (except Render and Write) don't traverse the children.
       

    Three examples are available in Open Inventor 10 package to start with SoVertexAttribFeedback and can be found in $OIVHOME/src/Inventor/examples/Features/BufferObjects. Examples are:

    • VertexAttribFeedback
    • SimpleVertexAttribFeedback
    • InterleavedVertexAttribFeedback

VolumeViz

  • A lot of default paramaters value have been updated in order to improve the default rendering quality of VolumeViz. Changes concern the SoVolumeRender, SoVolumeShader, SoVolumeRenderingQuality and the SoSlice node. All the changes are well documented in the How to upgrade from 9 to 10 section of this website in the VolumeViz section.
  • Starting from Open Inventor 10 Alpha2, the "Ldm in memory compression" feature will start to be more flexible that it used to be. Now the user controls the way he wants LDM to manage its memory and the way it manages gzipped ldm files. A new field, named tileCachePolicy has been added to node SoLDMResourceParameters and it allows controlling the property for each volume and not globally anymore (default value is ALL). The fields specifies which tiles should be cached in LDM memory. Please refer to the relative documentation to get more information.
  • A method called getLDMTopoOctree() has been added to SoDataSet because it can be useful to access functions like
    • getTilePos( tileId )
    • getTileID( cellPos, resolution )
    • int getLevelMax()
    • int level( tileId )

MeshVizXLM

C++ Specific

  • The virtual methods getNewClone() has been removed from input mesh interfaces. Thus providing an implementation of getNewClone() is no more mandatory for MeshViz XLM. However, the meshes built by any MeshViz XLM extractors are still cloneable as the getNewClone() method is now defined in each MeX*Mesh* interfaces.
  • Public header MxMeshIViz.h has been renamed to MxMeshVizXLM.h. This change may generate some compilation error, so be sure to replace any occurence of MxMeshIViz.h in your code by MxMeshVizXLM.h before recompiling it with Open Inventor 10 Beta2
  • In order to replace getNodeName() and getCellName() methods removed from the mesh topology interfaces, a new interface MiStringSet has been created. This implies:
    • Obviously methods getNodeName() and getCellName() have been removed from all mesh interfaces
    • New MiStringSetI, MiStringSetIj and MiStringSetIjk interfaces are now available
    • New MoStringSetElement and MoStringSet node have been added to store any kind of string data set
    • MoMeshCellShape now handles string sets to display cell and node names

 

Java/.NET Specific

As for the C++ API, MeshViz XLM Java and .Net provide a new MiStringSet to replace removed methods from the mesh topology interfaces (getNodeName() and getCellName()). This implies:

 


RemoteViz

RemoteViz Java on Linux

In addition to C++, you can now develop a RemoteViz service using Java on Linux. RemoteViz Java on Linux offers the same level of feature as the C++ API. All the RemoteViz C++ examples are available in Java.

 


.NET API

  • In all your C# projects using the Open Inventor viewer, you need to add a new reference named : OIV.Inventor.Win.dll
  • The assembly OIV.InventorToWpf has been renamed to OIV.Inventor.Wpf

 


Java API

  • JDK 1.8 is required.
  • On Windows, you need to install Microsoft Visual C++ 2012 Update 4 Redistributable to execute an Open Inventor Java application.
  • Open Inventor Java is not available on Linux 32bit.
  • On Linux 64bit, Open Inventor Java needs RHEL6 or CentOS6 run-time.
  • OpenInventor.jar is now split into several jar files instead of a unique one :
    • com.openinventor.inventor.jar
    • com.openinventor.inventor.ui.awt.jar
    • com.openinventor.inventor.io.stl.jar
    • com.openinventor.hardcopy.jar
    • com.openinventor.ivtune.jar
    • com.openinventor.meshviz.jar
    • com.openinventor.volumeviz.jar
    • com.openinventor.ldm.jar
    • com.openinventor.remoteviz.jar
    • com.openinventor.scaleviz.jar
  • New CAD Reader features

    The rework done on CAD Readers in Open Inventor 9.5 C++ and .net, is now available for the Java API. This global rework allows providing a new level of features:

    • Number of supported file formats has been greatly increased as Open Inventor now fully supports:
      CATIA V5 and CATIA V6, IGES, JT, ProE, Solide Edge, STEP, SolidWorks, UG, VDA and parasolid.
      Please note that (as before) a specific licence key is required for each of these formats. 
    • Loading times are drastically reduced
    • CAD Readers now support input parameters allowing the user to adjust the file import. This is done using the new SoCADInputReaderParametersclass. It allows the application to activate or not the import of edges, open shell and product and manufacturing information (PMI). It is also possible to choose the level of tessellation either by choosing one of the predefined options (see public void setTessellationOption(SoCADInputReaderParameters.Qualities quality) with quality being LOW, MEDIUM or HIGH) or by setting values with the SoCADInputReaderParameters::TesselationOption class.

    Product Manufacturing Information (PMI) import
    (Click on the picture to get a full resolution version)

 


Linux

Open Inventor 10 Beta2 is released, for both Java and C++, with a new RPM to install the product on your computer.

  • For C++ the RPM name is OpenInventorC++-<product release>-Linux-<compiler release>-<architecture>.rpm
  • For Java the RPM is OpenInventorJava<product release>-Linux-<architecture>.rpm

To get more informations regarding all the details of these installers, please refer to the installation procedures (C++ - Java)

All librairies delivered in the package are built with the -fPIC and the -std=c++11 compile option.

 

OS X

Since the beginning of the development of Open Inventor 10 we have mainly focused our efforts on Windows platforms so as a direct consequence Os X version has not been upgraded since Open Inventor Alpha 1. For this reason we decided to not publish any version of Open Inventor on Os X for now, as it wouldn't reflect the level of feature and quality we ought to deliver.

Please note that this does not mean Open Inventor 10 will not be available on Os X as we will concentrate our workforce on Os X version after the official release of Open Inventor 10. Until then, you can find here the main directions we started few month ago with the Os X version of Open Inventor Alpha 1.

So far then, only Open Inventor 10 Alpha 1 is available for this platform. It introduces a brand new installer for the C++ and Java package. For more informations regarding all the details of these installers, please refer to the installation procedures (C++ - Java).

Architecture name has changed : MacOSX is now OSX. So the OIVARCH environnement variable need to be set to arch-OSX-x86_64-clang60-release or arch-OSX-x86_64-clang60-debug. The only supported compiler for MacOSX is now clang 6.0. Not also that all demos are available through xcode projects.