What Is Open Inventor?
The Inventor Mentor introduces graphics programmers and application developers to Open Inventor, an object-oriented 3D toolkit. Open Inventor is a library of objects and methods used to create interactive 3D graphics applications. Although it is written in C++, Inventor also includes C bindings.
Release notes Open Inventor 2023.2
Minor version published in September 2023.
Enhancements and new features included in this version:
Open Inventor 2023.2 includes all fixes available in?Open Inventor 2023.1
A volume data is represented as a set of tiles for out-of-core and multiresolution rendering. In previous releases, each tile had to have the same dimensions in x and y, and had to be a power of 2, e.g., (128,128,128) or (512,512,8). As of 2023.2 the tile dimensions can be 3 different arbitrary values in x, y, and z.
The main benefit of this new feature is the ability to specify tile dimensions equal to the volume dimensions. In that case, the rendering is performed using only a single resolution, i.e., the resolution of the volume without multiresolution. However, this option needs that the volume data fits entirely in the available CPU and GPU memories (see the fields maxMainMemory and maxTexMemory in the class?SoLDMResourceParameters). Otherwise, VolumeViz falls back in the classic behavior and creates tiles to support out-of-core rendering.
The tile dimensions are specified by the field?SoLDMResourceParameters::tileDimension. If the API is not new in 2023.2 it makes it independent from the tile dimensions specified by the?SoVolumeReader::getTileSize()?method. This enables to load a tiled dataset (such as LDM file format) with different tile dimensions than the original format to improve the loading time. The?SoLDMResourceParameters::tileDimension?must be set once the filename is set. That parameter can be push up to the volume dimensions.
On previous versions, the loading progression of the data was only tracked when doing volume rendering. As of 2023.2 version, it is also possible to track data loading progression with slices (see?SoOrthoSlice?or?SoObliqueSlice) or volume skin (see?SoVolumeSkin).
See?SoVolumeShape::setRenderProgress?for detail. Note: the render progress is only taken into account by the classes?SoOrthoSlice,?SoObliqueSlice?and?SoVolumeSkin?even if their base class?SoVolumeShape?contains other sub classes.
The example named VolRend has been updated and a progress bar is attached to the loading progression of the volume rendering, the volume skin, and all ortho and oblique slices.
Until 2022, the system requirements and supported platforms were only specified in the?developper zone?and were only updated for the latest version of Open Inventor. As of Open Inventor 2023.2, the list of supported/deprecated/dropped platforms and their requirements are now part of the reference manual?here.
Furthermore, the system requirements document now includes the requirements of previous versions of Open Inventor.
Open Inventor is available on .NET6 as a preview built in addition to .NET framework 4.7/4.8.
Limitations:
A new package of Open Inventor C++ built with Visual Studio 2022 is available in the download pages as of 2023.2 version.
Thanks to some javascript libraries for 2D vector drawing, it can be useful and convenient to mix javascript rendering on the front-end with an Open Inventor rendering on the back-end. However, it can be necessary to send information from back-end to front-end in order to synchronize both rendering. For instance, when a javascript circle's center must track a vertex of the 3D scene rendered by Open Inventor. Thus, it is necessary to synchronize front-end and back-end when a simple zoom or pan of the 3D scene leads to a new position of the 3D vertex in the pixel space of the rendering area.
Such type of synchronization can be done by using the following new methods available as of 2023.2 version:
A new example highlights how to synchronize a javascript cirle with the top of a cone.
When rendering a structured mesh having PER_NODE data binding, the default interpolations performed by the GPU can lead to display some pixels whose color does not belong to the chosen color map. This new version removes this artifact and all pixels used to render the mesh have only colors that belong to the color map. This new correct behavior may generate significant change in the rendering compared to previous version. That can be noticed when a large number of pixels are used by the render area to represent a cell, for instance when zooming on a single cell that have a large data gradient on its nodes.
The following images show the rendering of a 3D structured mesh where all mesh nodes in its left part have value 0, and all the mesh nodes in its right part have value 100. The color map used is a blue-white-red from 0 to 100. All hexahedron cells in the middle of the mesh have 4 nodes with value 0, and 4 nodes with value 100. Those cells are rendered with unexpected purple pixels before this new version.
The C++ reference manual provided in $OIVHOME/doc/ReferenceManual in the Windows package has change and has a new look and user interface thanks to the latest?Doxygen?version. The CHM file provided in previous versions has been replaced by a folder containing a list of HTML files. Open the file $OIVHOME/doc/ReferenceManual.html in any browser to see the main page of the reference manual. The following changes can be noticed in the new manual:
The following notes mention the API changes made in this version compared to Open Inventor 2023.1.
SoVolumeReader::getSubSlice(const SbBox2i32&, int, void*)
this method has now a default implementation that prints an error message when called.
The method SoVRLdmFileBorderReader.IsThreadSafe() is removed and replaced by the IsThreadSafe property inherited from?SoVolumeReader.
class com.openinventor.inventor.SbViewVolume
the method getProjectedBbox(com.openinventor.inventor.SbMatrix, com.openinventor.inventor.SbBox3f) is now static
As of Open Inventor 2023.2 the following platforms or devices are no longer supported:
ImageViz extension is deprecated as of Open Inventor 2023.2 . ImageViz is still supported and there is no impact when running an application using ImageViz. However warnings are raised when compiling source code that uses a class or a function of ImageViz. The examples using ImageViz have been removed but can be retreived from previous versions.
ImageViz is replaced by the new ImageDev toolkit which provides the same features with the added benefit of a simpler API. More details are available here:?developer.imageviz.com?and?imagedev-software-development-toolkit
The support of the following file format becomes deprecated.