Compatibility Notes 8.5

Open Inventor 8.5 (March 2011) Older compatibility notes

Technical Overview

New classes

New Fields/Enums in Existing Nodes

Open Inventor

VolumeViz

MeshViz

.NET

Assemblies

API Changes

Open Inventor 8.1 (February 2010)

Open Inventor 8.0 (May 2009)

Open Inventor 7.2 (October 2008)

Open Inventor 7.1 (April 2008)


Technical Overview

Please at least glance through these compatibility notes so that you are not surprised by any differences in behavior between this release and the previous release.

You should always re-run CMake (if you are using it) after installing a new version of Open Inventor.
CMake generates project/make files with absolute paths that could refer to an older version of Open Inventor.

You should completely recompile existing applications after installing a new version of Open Inventor.
New versions of Open Inventor are source code compatible (unless noted in this document), but not binary compatible.

New Classes

Inventor

  • SoHDRImageRW
  • SoBufferObjectCache

LDM

  • SoBufferPropertiesInterface
  • SoCpuBufferBasicProperty
  • SoCpuBufferBitSet
  • SoCpuBufferCompressed
  • SoCpuBufferFromVolumeReader
  • SoCpuBufferUniform

VolumeViz

  • SoLdmValuationAction

New Fields/Enums in Existing Nodes

Inventor

  • SbRasterImage::Components::RGBE
  • SoImage::FileType::DDS
  • SoImage::FileType::HDRI
  • SoVRMLImageTexture::FileType::DDS
  • SoVRMLImageTexture::FileType::HDRI
  • SoTexture::internalFormat::DEPTH_COMPONENT16
  • SoTexture::internalFormat::DEPTH_COMPONENT24
  • SoTexture::internalFormat::DEPTH24_STENCIL8

DialogViz

  • SoTopLevelDialog::minimized
  • SoTopLevelDialog::independantMinimizedPosition

LDM

  • SoDataCompositor::rgbaMode

VolumeViz

  • SoVolumeData::dataRGBA
  • SoVolumeRenderingQuality::segmentedInterpolation

Open Inventor files that contain any of these new fields will not be readable by older versions of Open Inventor. As long as you never set any of these fields, there will not be a problem because fields that contain their default value are not written out.

Remember: New fields affect classes derived from the above nodes as well.

Open Inventor

Picking

The default value for the static method SoRayPickAction::enableTriangleCulling() has been changed to TRUE. This setting improves picking performance for shapes containing a large number of triangles.

VolumeViz

LDM Tile Cache

LDM can now store uniform and compressed tiles efficiently in system memory and create the expanded tile on-demand at runtime. This mechanism is also used to avoid duplicating data for in-memory volumes. These created tiles are considered temporary and are stored in the new LDM Tile Cache. This cache is separate from, and in addition to, the LDM main memory. Applications should be aware of this additional memory and may want to manage the size. See SoLdmGlobalResourceParameters for more information.

Picking

Picking on an SoVolumeRender now returns the first non-transparent voxel by default. In other words, when you call SoPickedPoint::getPoint(), it will now return the 3D coordinate of the first non-transparent voxel (i.e. with alpha value greater than zero) intersected by the pick ray. Previously getPoint() returned the point intersected on the face of the volume and it was then necessary to get the SoVolumeRenderDetail object and call the getFirstNonTransparentValue() method explicitly.
The previous behavior can be restored using an SoPickStyle node with style set to SoPickStyle::BBOX.

SoVolumeRender node

The following fields of the SoVolumeRender node are now marked deprecated. (They only applied to CPU computed volume lighting.) Applications should always use GPU computed volume lighting, which is very fast and is enabled using the lighting field of SoVolumeRenderingQuality.

  • lighting
  • lightDirection
  • lightIntensity

Volume Geometry nodes

For better consistency, the useVBO field in the following list of nodes is now marked deprecated. Applications should use the SoShapeHints::useVBO field to control the use of vertex buffer objects.

  • SoVolumeFaceSet
  • SoVolumeIndexedFaceSet
  • SoVolumeIndexedTriangleStripSet
  • SoVolumeTriangleStripSet

SoLdmValuationAction

Valuation of the LDM octree is now done separately from the render traversal (SoGLRenderAction), using the new SoLdmValuationAction. This allows both operations to be more efficient. Applications using an Open Inventor viewer class (e.g. SoQtExaminerViewer) or using the SoSceneManager class are not affected by this change, except that C++ applications must respect the following new restriction:

SoVolumeRendering::init() must be called before any viewer or SoSceneManager instance is created.
Generally we recommend calling init() immediately after initializing Open Inventor (e.g. after calling SoQt::init).

SoVolumeReader (custom LDM volume readers)

  • VolumeViz now calls a new version of the readTile method that returns an SoBufferObject.
    A default compatibility implementation of this method is provided in the SoVolumeReader class. The compatibility implementation allocates memory and calls the old version of readTile. However applications are encouraged to implement their own version of the new method. The new method allows the reader to return data to VolumeViz without copying into a buffer allocated by VolumeViz. It also allows the reader to take advantage of the new specialized subclasses of SoCpuBufferObject that allow, for example, uniform and compressed tiles to be stored efficiently in system memory. See SoVolumeReader for more information.
     
  • Previously LDM volume readers were required to set the isDataConverted member variable to TRUE.
    Starting with version 8.5, LDM volume readers should implement the isDataConverted method and return TRUE.
     
  • The isDataConverted method is now declared const.
  • The isThreadSafe method is now declared const.

MeshViz

The following methods of the MoMeshCellShape node are now marked deprecated:

  • getRegularExtractor()
    Please use getIjkExtractor() instead
  • getSurfaceRegularExtractor()
    Please use getIjExtractor() instead

The following methods of the MoMeshIsosurface node are now marked deprecated:

  • getRegularExtractor()
    Please use getIjkExtractor() instead

.NET

Assemblies

OpenInventor.NET 8.5 is not binary compatible with previous release as the previous assembly InventorNet has been replaced by several assemblies (See Release Notes/Open Inventor for details)

API Changes

Open Inventor C++ methods having some size_t arguments were wrapped in Open Inventor .NET by 2 methods. The first one using UInt32, and the second one using UInt64. See for instance SoBufferObject.SetSize(UInt32) and SetSize(UInt64). Since Open Inventor .NET 8.5, such C++ methods are wrapped by only one .NET method using UInt64 type. Thus, for instance SoBufferObject.SetSize(UInt32) is removed since 8.5.

In the same way, Open Inventor C++ methods returning size_t value were also wrapped in Open Inventor .NET by 2 methods. See for instance SoBufferObject.GetSize() and GetLongSize(). Since Open Inventor .NET 8.5, such C++ methods are wrapped by only one .NET method returning a UInt64. Thus any C++ method that returns a size_t returns now a UInt64 in Open Inventor .NET. However for compatibility reason, the GetLongXXX() remains but are described as obsolete.