Open Inventor 2023.2.2 C++ for Visual Studio 2022

2023-12-14 10:13:22

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


VolumeViz

Arbitrary tile size

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.

Progress bar on slices

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.

New platforms

List of supported platforms

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 on .NET6

Open Inventor is available on .NET6 as a preview built in addition to .NET framework 4.7/4.8.

Limitations:

  • As the .NET api of Open Inventor is mostly written in C++ and C++/CLI, some related limitations exist and described?here. Thus, any application using some Open Inventor .NET6 assemblies must embed the ijwhost.dll that is delivered in the folder $OIVNETHOME/assemblies/arch-xxx.
  • the native dlls of Open Inventor must be manually copied in the destination folder of your application. As alternative, you can also add to your PATH environment variable $OIVNETHOME/assemblies/arch-xxx.
  • the examples using?RemoteViz?assembly do not yet work with this version.

Visual Studio 2022 support

A new package of Open Inventor C++ built with Visual Studio 2022 is available in the download pages as of 2023.2 version.

RemoteViz

Front-end & back-end synchronization

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.

  • C++: $OIVHOME/examples/source/RemoteViz/FrontBackSync
  • .NET: $OIVNETHOME/examples/source/RemoteViz/FrontBackSync
  • Java: $OIVJHOME/examples/remoteviz/frontbacksync

MeshVizXLM

Color mapping improved in MeshViz XLM

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.

Core

Minor API changes

  • In C# API:
    • The method SoAction.EnableElements() is obsolete : Use the EnabledElements property instead.
    • Some methods of the?SoVolumeReader?class are now deprecated:
      • The method GetBorderFlag() is now obsolete in the class?SoVolumeReader. It is only kept in the class?SoVRLdmFileBorderReader?that is used to read old file format that contains borderFlag.
      • The method GetMinMax(Int32,Int32) is now obsolete and GetMinMax(Int64,Int64) must be used instead.
      • The method SetUserData(Object) is now obsolete and the property UserData must be used instead.
      • The method GetHistogram(Queue) is now obsolete and GetHistogram(IList<long>) must be used instead.
  • In C++ API and Java API:
    • The class?SbXfBox3f?have 2 new methods computeMaxDistance2() and getClosestPoint().
    • The class?SbMatrix3?have 2 new methods det() and inverse().

Reference manual update

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:

  • a new search engine.
  • a different look and style.
  • the document of each class provides a new "list of all members" including all inherited members.
  • a new list of the fields and methods per parent class.

Compatibility notes

The following notes mention the API changes made in this version compared to Open Inventor 2023.1.

C++ API

SoVolumeReader::getSubSlice(const SbBox2i32&, int, void*)
this method has now a default implementation that prints an error message when called.

C# API

The method SoVRLdmFileBorderReader.IsThreadSafe() is removed and replaced by the IsThreadSafe property inherited from?SoVolumeReader.

Java API

class com.openinventor.inventor.SbViewVolume
the method getProjectedBbox(com.openinventor.inventor.SbMatrix, com.openinventor.inventor.SbBox3f) is now static

Life cycle events

Dropped platforms

As of Open Inventor 2023.2 the following platforms or devices are no longer supported:

  • AMD GPUs
  • Ubuntu18.04

ImageViz becomes deprecated

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

Misc API and feature deprecation

The support of the following file format becomes deprecated.

  • VolumeViz JP3D compression
  • PNM (Portable Any Map)
  • PGX (JPEG 2000 Verification Model)
  • RAS (Raster Graphic by SunOS)

文章来源:https://blog.csdn.net/john_dwh/article/details/134986181
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。