Compatibility

Open Inventor 7.2 (October 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.

Open Inventor version 7.2 is source code compatible with the previous version (7.1).

You should completely recompile existing applications after installing a new version of Open Inventor.

As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Passwords

You will need an updated password with the new version number for each of your Mercury Computer Systems toolkit products.

Contact the license administrator:

From North America, South America, and Central America:
3D_license@mc.com

From Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCScomputerID, while the laptop is *not* connected to its docking station. This is because the MAC address of the network card in the docking station will be detected while connected, but this address will not be known while the machine is disconnected from the docking station.

New Classes

Open Inventor

New Fields in Existing Nodes

Open Inventor
DirectViz
VolumeViz

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.

Qt Support Notes

Open Inventor Qt 3 support is based on Qt version 3.3.6.
Please note: Open Inventor 7.1 is the last version that supports any Qt 3.X versions.

Open Inventor Qt 4 support is based on, and requires, Qt 4.2.
Please note: Qt 4.0 and 4.1 are not compatible.
On Windows, Qt 4.2.2 or higher is required.

[Windows] The prebuilt InvQt7x.DLL is built with Qt 3.3.6. If you are still using Qt 3.1.x, you will need to use the InvQt70Builder application to build SoQt DLLs compatible with your version of Qt.

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.

Open Inventor version 7.1 is source code compatible with the previous version (7.0).

You should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Passwords

You will need an updated password with the new version number for each of your Mercury Computer Systems toolkit products.

Contact the license administrator:

From North America, South America, and Central America:
3D_license@mc.com

From Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCScomputerID, while the laptop is *not* connected to its docking station. This is because the MAC address of the network card in the docking station will be detected while connected, but this address will not be known while the machine is disconnected from the docking station.

New Nodes

Open Inventor
LDM

Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.

New Fields in Existing Nodes

Open Inventor
VolumeViz

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 added to parent classes affect their children as well.

Deprecated methods

As part of the continuing improvement of the Open Inventor API, more methods have been marked as deprecated in this release. This means that there is a better version of the method or that the property set by the method is now contained in a field. New versions of methods may be added because they are safer, more efficient or more powerful. Properties may be moved into fields to allow them to be written into a .iv file. For example the method SoVolumeData::setVolumeData is now deprecated in favor of the new field SoVolumeData::data.

Deprecated methods are preceded by the SoDEPRECATED macro in the header file. This macro normally causes the compiler to issue a warning message. These messages are intended to help you find and (eventually) change code that uses deprecated methods. Using Visual Studio on Windows you can turn off these messages by adding this pragma in a source file:
        #pragma warning ( disable : 4996 )
or by adding "4996" to the "Disable Specific Warnings" entry on the Configuration/C++/Advanced tab of project properties.

Qt Support Notes

Open Inventor Qt 3 support is based on Qt version 3.3.6.
Please note: Open Inventor 7.1 is the last version that supports any Qt 3.X versions.

Open Inventor Qt 4 support is based on, and requires, Qt 4.2.
Please note: Qt 4.0 and 4.1 are not compatible.
On Windows, Qt 4.2.2 or higher is required.

[Windows] The prebuilt InvQt7x.DLL is built with Qt 3.3.6. If you are still using Qt 3.1.x, you will need to use the InvQt70Builder application to build SoQt DLLs compatible with your version of Qt.

Open Inventor Redistribution

Due to code cleanup and re-factoring the SoWin, SoQt and SoXt viewer libraries now depend on the new Open Inventor GUI shared library. See the Redistribution topic for complete details on application distribution.

Open Inventor 7.0 (December 2007)

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.

Open Inventor version 7.0 is source code compatible with the previous version (6.1).

You should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Passwords

You will need an updated password with the new version number for each of your Mercury Computer Systems toolkit products.

Contact the license administrator:

From North America, South America, and Central America:
3D_license@mc.com

From Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCScomputerID, while the laptop is *not* connected to its docking station. This is because the MAC address of the network card in the docking station will be detected while connected, but this address will not be known while the machine is disconnected from the docking station.

New Nodes

Open Inventor
ReservoirViz
ScaleViz
VolumeViz
LDM

Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.

New Fields in Existing Nodes

Open Inventor
ScaleViz
VolumeViz
LDM

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 added to parent classes affect their children as well.

New Enum Values for Existing Fields

Open Inventor
VolumeViz

Some existing fields now have additional enumeration values. They can pose a backward compatibility problem if you set the field to a new enumeration value and then write the node to an Open Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown enumeration value error will be generated).

Reorganization of LDM/VolumeViz

The LDM core, which was previously part of VolumeViz, has been re-factored to support multiple extensions such as ReservoirViz. Consequently some header files which were part of VolumeViz in previous releases are now common to multiple extensions and so have been moved to the directory $OIVHOME/include/LDM. For example SoROI.h has been moved from $OIVHOME/include/VolumeViz/nodes/SoROI.h to $OIVHOME/include/LDM/nodes/SoROI.h. Another consequence is that the class SoVolumeData now inherits from the new SoDataSet class which is a generic class for all LDM data sets.

Upward compatibility has been kept, so no code changes are required.

Deprecated methods

As part of the continuing improvement of the Open Inventor API, more methods have been marked as deprecated in this release. This means that there is a better version of the method or that the property set by the method is now contained in a field. New versions of methods may be added because they are safer, more efficient or more powerful. Properties may be moved into fields to allow them to be written into a .iv file. For example the method SoVolumeShader::setForVolumeOnly is now deprecated in favor of the new field SoVolumeShader::forVolumeOnly.

Deprecated methods are preceded by the SoDEPRECATED macro in the header file. This macro normally causes the compiler to issue a warning message. These messages are intended to help you find and (eventually) change code that uses deprecated methods. Using Visual Studio on Windows you can turn off these messages by adding this pragma in a source file:
        #pragma warning ( disable : 4996 )
or by adding "4996" to the "Disable Specific Warnings" entry on the Configuration/C++/Advanced tab of project properties.

ScaleViz

SCALEVIZ_USER_LIBS is no longer used.
It has been replaced by OIV_USER_LIBS. This environment variable is used to specify which libraries to search for custom nodes.

VolumeViz

When the LDM LoadPolicy is set to NEVER (see setLoadPolicy), VolumeViz 7.0 will always display at least resolution level 0. Previously it was possible that nothing would be displayed.

VolumePro support

The support of VolumePro boards from TeraRecon has been dropped.

RTTI (Run-Time Type Info)

Open Inventor 7.0 is now built with RTTI enabled on all platforms. This implies that it may be necessary to make changes to existing project files.

Qt Support Notes

Open Inventor Qt 3 support is based on Qt version 3.3.6.
Please note: Open Inventor 7.0 is the last version that supports any Qt 3.X versions.

Open Inventor Qt 4 support is based on, and requires, Qt 4.2.
Please note: Qt 4.0 and 4.1 are not compatible.
On Windows, Qt 4.2.2 or higher is required.

[Windows] The prebuilt InvQt7x.DLL is built with Qt 3.3.6. If you are still using Qt 3.1.x, you will need to use the InvQt70Builder application to build SoQt DLLs compatible with your version of Qt.

Open Inventor Redistribution

VolumeViz and ReservoirViz applications now depend on the new LDM shared library. See the Redistribution topic for complete details on application distribution.
VolumeViz also now depends on the MeshViz shared library.

Open Inventor 6.1 (March 2007)

Technical Overview

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

Open Inventor version 6.1 is source code compatible with the previous version (6.0).

You should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Passwords

You will need an updated password with the new version number for each of your Mercury Computer Systems toolkit products.

Contact the license administrator:

From North America, South America, and Central America:
3D_license@mc.com

From Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCScomputerID, while the laptop is not connected to its docking station. This is because the MAC address of the network card in the docking station will not be known while the machine is disconnected from the docking station.

New Nodes

ScaleViz
DirectViz

Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.

New Fields in Existing Nodes

Open Inventor
ScaleViz

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 added to parent classes affect their children as well.

New Enum Values for Existing Fields

Open Inventor

Some existing fields now have additional enumeration values. They can pose a backward compatibility problem if you set the field to a new enumeration value and then write the node to an Open Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown enumeration value error will be generated).

Qt Support Notes

Open Inventor Qt 3 support is now based on Qt version 3.3.6. Previously Qt 3.1.x was used.

Open Inventor Qt 4 support is now based on Qt 4.2, but not Qt 4.0 or 4.1, which are incompatible. On Windows, Qt 4.2.2 or higher is required.

[Windows] The prebuilt InvQt6x.DLL is built with Qt 3.3.6. If you are still using Qt 3.1.x, you will need to use the InvQt61Builder application to build SoQt DLLs builts with your version of Qt.

Open Inventor: Redistribution: All Applications Depend on the DirectViz Library (and the ScaleViz Library)

All Open Inventor 6.1 applications now have a dependency on the DirectViz and ScaleViz shared libraries. If you distribute your application, you will need to distribute the DirectViz and ScaleViz libraries with it. See the Redistribution topic for complete details on application distribution.

Open Inventor 6.0 (March 2006)

Technical Overview

Please a least glance through these compatibility notes so that you are not surprised by any differences in behavior between this release and the previous. See especially the MeshViz changes as some of them may cause the default image to look different than before.

Open Inventor version 6.0 is source code compatible with the previous version (5.0).

You should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Geographic Service Area Change

Note that the geographic regions served by the US and European offices have changed. Australasia is now being served by the European support team. In a nutshell, the US support team now serves North, Central, and South America. The European support team supports the rest of the world.

Passwords

You will need an updated password with the new version number for each of your Mercury Computer Systems toolkit products.

Contact the license administrator:

From North America, South America, and Central America:
3D_license@mc.com

From Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCScomputerID, while the laptop is not connected to its docking station. This is because the MAC address of the network card in the docking station will not be known while the machine is disconnected from the docking station.

Run-time and SDK Licensing Change

Previously, a developer license string (which must have "SDK" in the info field) was required if an Open Inventor SDK was installed on the system.

Starting with version 6.0, this requirement is extended. A developer license string is required if an Open Inventor SDK is installed on the system or if the application is running with a debug build of the Open Inventor library or DLL.

This change could affect a small number of software developers. For instance, if a software developer were to send out a debug build of their application to one of their customers, then with Open Inventor 6.0, the customer would need an SDK license to run the application. A run-time license string would not be sufficient.

New Nodes

Open Inventor
ScaleViz
VolumeViz

Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.

New Fields in Existing Nodes

Open Inventor
MeshViz
ScaleViz

(These classes were formerly part of MultiPipe.)

VolumeViz

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 added to parent classes affect their children as well.

New Enum Values for Existing Fields

Open Inventor
VolumeViz

Some existing fields now have additional enumeration values. They can pose a backward compatibility problem if you set the field to a new enumeration value and then write the node to an Open Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown enumeration value error will be generated).

Open Inventor: Redistribution: All Applications Depend on the ScaleViz Library

All Open Inventor 6.0 applications now have a dependency on the ScaleViz shared library. If you distribute your application, you will need to distribute the ScaleViz library with it. See the Redistribution topic for complete details on application distribution.

Open Inventor: Redistribution: IvTune Access to Scene Graph

In Open Inventor 6.0, by default, a user can launch IvTune from any Open Inventor viewer with just a few keypresses. IvTune allows the user to view the scene graph contents and even modify them. To protect your application's scene graph, we recommend disallowing this feature when you distribute your application. See the Redistribution topic for details.

Open Inventor: Caching Changes

The default caching behavior has changed. Now caches will be built first at the "leaf" separators, then at the parents of those nodes, then at their parents, and so on. In previous versions of Open Inventor, the goal was to minimize the number of caches. This motivation for the new behavior was to improve performance.

Since, however, the optimal caching strategy depends on the scene graph structure and contents, you can still select the old behavior if you find it works better for your application.

To request the old behavior, you can use the following configuration parameter:
     OIV_PRIORITIZE_CHILDREN_CACHING=0
Programmatically, you can use
     SoDB::prioritizeChildrenCaching(FALSE);

Open Inventor: Changes in SoFont

MeshViz: Default Crease Angle Changed

To improve performance in the default case, the default crease angle in MeshViz has changed from 0.8f to 0.0f. You may notice that surfaces will have a more faceted appearance now because with crease angle = 0 render smoothing is not done.

To obtain the same visual results as in MeshViz 5.0, you can set configuration parameter OIV_3DDATA_CREASE_ANGLE to 0.8f as follows:
      SoPreferences::setFloat("OIV_3DDATA_CREASE_ANGLE",0.8f);

MeshViz: Changes in PoMeshLevelSurf and PoMeshCrossSection

Prior to Open Inventor 5.0.5, only indexed face sets were used for drawing isosurfaces. Now triangle strip set are used by default. This change was made because triangle strip sets are faster and in order to simplify the code internally.

Use environment variable OIV_3DDATA_USE_TRIANGLE_STRIP_SET to choose either a triangle strip set (TRUE) or an indexed face set (FALSE).

MultiPipe Support Incorporated into ScaleViz

The features of MultiPipe are now incorporated into the new cluster rendering product, ScaleViz. The following two differences will be apparent to current MultiPipe users:

NOTE: In cluster mode, multipipe rendering is not supported.

VolumeViz: Deprecated Methods / Compiler Warnings

Methods that use the type of SbVec3s or SbBox3s have been superseded by equivalent methods that use the type SbVec3i32 and SbBox3i32. See the VolumeViz release notes for more details.

The older methods still exist and still work. However, programs that use these methods will now get a warning message from the compiler saying that these methods are deprecated.

VolumeViz: Redistribution of VolumeViz Applications

When distributing your VolumeViz 6.0 application, it it now necessary to distribute the predefined shaders from <OIV_INSTALL_DIR>/data/volumeviz/shaders. See the Redistribution topic for details.

VolumeViz: SoVolumeGeometry Node Clipping Done in Software

Starting with VolumeViz 6.0, SoVolumeGeometry nodes are clipped using software clipping rather than OpenGL clipping. If you need the version 5.0 behavior, set environment variable IVVR_OGL_CLIPPING to 1.

Qt Support Notes

[Windows Only] INVENTOR_API (And Other) Macros

You may notice some new macros in the header files. For example:

     INVENTOR_API friend SbVec3i32 operator *(const SbVec3i32 &v, int d);
or
     class MESHVIZ_API PoMeshViz 

These are part of a new, cleaner scheme for building DLLs on Windows. You as the programmer do not need to concern yourself with them. They are mentioned here simply because they are a change that you might otherwise find mysterious. This change should not affect existing applications.

[Windows Only] Change in the Way Open Inventor DLLs are Built

As a result of the new scheme for building Open Inventor DLLs (see discussion of INVENTOR_API macros), the SoWinEnterScope and SoWinLeaveScope header files are no longer required when building custom nodes. These header files are now empty and have been removed from the ToolMaker examples.

Open Inventor 5.0 (August 2004)

Acquisition of TGS by Mercury Computer Systems

In May, 2004, TGS was acquired by Mercury Computer Systems. As a result of the acquisition, the Open Inventor product name was changed to Open Inventor™ by Mercury. You'll notice some cosmetic product packaging changes -- new logos, icons, copyrights, etc. -- but, by and large, the changes will have little to no effect on your everyday use of Open Inventor. The same Open Inventor team that has provided quality software, services, and support over the years is still in place to continue meeting your graphics software needs.

Here are the few changes related to the acquisition that you need to know about:

Technical Overview

Please read this entire section. Here is a list of the changes most likely to affect developers (details following):

Open Inventor version 5.0 is source code compatible with the previous version (4.0).

However, you should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

Passwords

You will need an updated password with the new version number for each of your Open Inventor by Mercury products.

Contact the license administrator:

From North America, South America, and Australasia:
3D_license@mc.com

From Europe, Middle East, Africa, and Asia:
3d_license_europe@mc.com

NOTE: We recommend that customers using a laptop machine give us the hostid obtained using, for example, LAdmin or MCSComputerID, while the laptop is not connected to its docking station. This is because the MAC address of the network card in the docking station will not be known while the machine is disconnected from the docking station.

Discontinued or Superseded Platforms

Note that we still fully support newer versions of Linux. Requests for support on old or unusual platforms may be addressed to your Mercury sales representative.

Packaging Changes

Name Change: DataViz -> MeshViz

See the MeshViz release notes for details.

New Nodes

Open Inventor
MeshViz

Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.

New Fields in Existing Nodes

Open Inventor
MeshViz
VolumeViz

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.

NOTE: Although strictly speaking, SoTexture is a new abstract base class, it is now the parent node of SoTexture2, SoTexture3, etc. Hence the compatibility warning.

See also Changes to VRML97 Nodes.

New Enum Values for Existing Fields

Open Inventor
VolumeViz

Some existing fields now have additional enumeration values. They can pose a backward compatibility problem if you set the field to a new enumeration value and then write the node to an Open Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown enumeration value error will be generated).

Changes to VRML97 Nodes (New Fields and EventOuts)

In order to bring the existing VRML97 nodes into compliance with the X3D specification, new fields and eventOuts were added to some of the nodes.

If you specify a non-default value for a field, when the node is written to a file, the file will contain this new field. Older versions of Open Inventor will not be able to read this file and will generate an Inventor read error (unknown field). VMRL97 browsers may also be unable to read the file. If you want your file to be readable by VRML97 browsers and by older versions of Open Inventor, do not specify a value for any of the newly added fields.

Likewise, if you use a new eventOut in your application and write out the scene graph, the file will not be able to be read by older versions of Open Inventor and VRML97 browsers.

Below is a list of VRML nodes with new fields and/or eventOuts.

Appearance
fillProperties NI
lineProperties

AudioClip
pauseTime NI
resumeTime NI
elapsedTime (eventOut) NI
isPaused (eventOut) NI

Background (action not implemented)
bindTime (eventOut)

Box
solid

Collision (action partially implemented for this node)
collide NI (VRML97, see note)
enabled NI (VRML97, see note)
isActive (eventOut) NI

NOTE: In the X3D spec, the collide field was renamed enabled. Open Inventor is keeping both fields. Use the enabled field for X3D compatibility. Use the collide field for VRML97 compatibility.

Cone
solid

Cylinder
solid

CylinderSensor (not implemented)
description
isOver (eventOut)

ElevationGrid
solid

Extrusion
solid

Fog (not implemented)
bindTime (eventOut)

Inline
load NI

LOD
level (VRML97, see note)
children (X3D, see note)
bboxCenter
bboxSize

NOTE: In the X3D spec, the choice field was renamed children. Open Inventor is keeping both fields. Use the children field for X3D compatibility. Use the choice field for VRML97 compatibility.

MovieTexture
pauseTime NI
resumeTime NI
elapsedTime (eventOut) NI
isPaused (eventOut) NI

NavigationInfo (action partially implemented for this node)
transitionType NI
bindTime (eventOut) NI

PlaneSensor
description
isOver (eventOut) NI

ProximitySensor
centerOfRotation_changed (eventOut) NI

Switch
choice (VRML97, see note)
children (X3D, see note)
bboxCenter
bboxSize

NOTE: In the X3D spec, the choice field was renamed children. Open Inventor is keeping both fields. Use the children field for X3D compatibility. Use the choice field for VRML97 compatibility.

Sphere
solid

SphereSensor (not implemented)
description
isOver (eventOut)

Text
solid NI

TimeSensor
pauseTime NI
resumeTime NI
elapsedTime (eventOut)
isPaused NI (eventOut)

TouchSensor
description
isOver (eventOut) NI

Viewpoint
centerOfRotation NI

[Win32] SoQt Libs and DLLs Pre-Built for Qt 3.1.2 Only

The SoQt libs and DLLs are delivered pre-built for Qt 3.1.2 only. (These DLLs allows you to run the QtLargeModelViewer and the ivTune examples even if you don't have Qt installed on your system.)

If you are using a different version of Qt, you will need to build the libs and DLLs for that version of Qt using the installer provided. See Inventor Qt Support Repackaged for details.

Third Party Libraries Dynamically Loaded

Third party libraries (libTiff, libJpeg, etc.) are now dynamically loaded. This implies that applications must distribute the corresponding files (which are provided) in addition to the Open Inventor and extensions files. See Dynamic Loading of External Libraries for details. The Redistribution topic contains updated info as well.

SoBigImageRenderer Deprecated

SoBigImageRenderer is obsolete. Use instead SoOffscreenRenderer, which has incorporated the functionality of SoBigImageRenderer.

TerrainViz Incompatible Changes

VolumeViz Delayed Rendering Flag Default Changed

In previous versions of VolumeViz, the delayed rendering flag (set using SoVolumeRendering::setDelayedRendering()) was FALSE by default. Now the default is TRUE. This was the recommended value even in VolumeViz 4.0 and is more likely to produce the correct image if translucent volume objects are mixed with opaque objects. Note that this flag has no effect in LDM mode (translucent objects are always delayed).

[Win32] ivExtInfo Superseded by OGLInfo

The ivExtInfo utility program is no longer distributed because its functionality has been incorporated into the new and improved version of OGLInfo.

Minor Changes

The following are miscellaneous minor changes (since OIV 4.0.6) that no one will likely notice:

STL Usage

Open Inventor 5.0 is the first version using STL in the public includes. In order to solve any compatibity problems with old compilers, all includes to STL are done through $OIVHOME/include/Inventor/STL. All include files in this directory make the correct include to STL depending on the target platform and the compiler version.

Open Inventor 4.0 (April 2003)

General

Open Inventor version 4.0 is source code compatible with the previous version (3.1 / 3.1.1).

However, you should completely recompile existing applications after installing a new version of Open Inventor. As usual on Windows, the library and DLL names have been changed to reflect the current version number. As usual on UNIX, the library names have not changed. See Open Inventor Files for details.

You will need an updated password with the new version number for each of your TGS toolkit products. Since the TGS licensing hostid mechanism has changed, you will need to supply new hostids with your requests. See below for information on how to obtain your new hostid.

Contact the license administrator at:

New "hostid" Used for Licensing

There is now a new mechanism for obtaining your "hostid" used for Open Inventor licensing. MCScomputerID, a command-line program, prints the string that will be used for generating license strings for your system. For example,

     > TGScomputerID

     TGS Computer ID: "000102376555"

This program is used for all platforms, which means you no longer have to use platform-specific commands to get your hostid. More important, the value returned (the physical Ethernet address on most platforms) is a more reliable way of identifying a specific system.

If your system does not have an Ethernet interface, TGScomputerID will return the same hostid as the current release. For example on Windows machines, hostid would be the volume serial number of the first hard drive.

This program is in the program directory (Windows) or the license directory (UNIX) of your Open Inventor installation.

NOTE: On Windows, you can also get the new hostid by clicking in the TGS Computer ID field of the TGS License Tool dialog (Ladmin.exe).

[Win32] Redistribution Requires OpenAL32.DLL

If you are redistributing an Open Inventor application for Windows, you will need to include OpenAL32.DLL with your distribution. It is used for VRML sound support and is required even if your application does not use VRML sound.

New Fields for Existing Classes

A number of classes have new fields in this release. They can pose a backward compatibility problem if you set the field to a non-default value and then write the node to an Open Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown field error will be generated).

Note, however, that as long as you never set these new fields, they will not cause a problem because fields that contain their default value are not written out.

Here are the classes with new fields:

Open Inventor
SoDrawStyle::linePatternScaleFactor
SoShapeHints::windingType
SoExtTexture2::enableCompressedTexture
SoTexture2::enableCompressedTexture
SoTexture3::enableCompressedTexture
SoVRMLMovieTexture::alpha
SoVRMLMovieTexture::model
SoVRMLMovieTexture::blendColor
SoVRMLMovieTexture::scaleTexCoord
SoVRMLSound::dopplerFactor
SoVRMLSound::dopplerVelocity

DataViz
PoMiscTextAttr::outliningEnabled

FXViz
SoShadowGroup::visibilityRadius
SoShadowGroup::visibilityFlag

TerrainViz
SoTVizRender::camera
SoTVizRender::frustumCulling
SoTVizRender::mappingMode

VolumeViz
SoObliqueSlice::alternateRep
SoOrthoSlice::alternateRep

New Enum Values for Existing Fields

Some existing fields now have additional enumeration values. They can pose a backward compatibility problem if you set the field to a new enumeration value and then write the node to an Inventor file. Older versions of Open Inventor will not be able to read the file (an unknown enumeration value error will be generated).

Here are the classes with new enums:

SoTexture2::Model (new value REPLACE)
SoTexture3::Model (new value REPLACE)
SoExtTexture2::Model (new value REPLACE)

New Fields Incompatible with VRML97

Some VRML nodes have been extended and now contain fields that are not compatible with VRML97. You need to avoid using these fields if you intend for your VRML files to be read by standard VRML97 readers.

Here are the VRML classes with non-standard fields:

SoVRMLMovieTexture::alpha
SoVRMLMovieTexture::model
SoVRMLMovieTexture::blendColor
SoVRMLMovieTexture::scaleTexCoord
SoVRMLSound::dopplerFactor
SoVRMLSound::dopplerVelocity

Compatibility Headers No Longer Provided

In order to make the previous release of Open Inventor (V3.1) and its extensions more closely integrated and more consistent with each other, some header files were renamed or moved. For use on a temporary basis, compatibility header files were provided. These compatibility headers are not provided in Open Inventor 4.0. If you have not previously modified older programs to use these files in their now standard locations, you will need to do so now. See the Open Inventor 3.1 Compatibility Notes (below) for further info.

DialogViz Replaces DialogMaster

The new Open Inventor DialogViz classes supersede the older DialogMaster classes. Please use the DialogViz classes for all new development.

NOTE: For compatibility, the DialogMaster classes have not been removed, but may be removed at a future date.

SoOffscreenRenderer::writeToJPEG Changed

Because of the new write-to-buffer feature, writeToJPEG is no longer declared "const". In some cases you might need to cast the result to avoid a compiler message.

MultiPipe Differences

See the MultiPipe release notes for details.

TerrainViz Differences

See the TerrainViz release notes for details.

Using Open Inventor 3.1 with DataViz 3.7 and other TGS extensions

In order to make Open Inventor and its extensions more closely integrated and more consistent with each other, some header files have been renamed or moved. See list below.

For use on a temporary basis, compatibility header files have been provided. They have the same name/location as in Open Inventor 3.0, but contain only a line that #includes the new header at its new location.

For example, the file

%OIVHOME%\include\Inventor\Win\stereo\SoWinRawStereo.h

now contains the following single line:

#include <Inventor/components/stereo/SoRawStereo.h>

NOTE: These compatibility header files will be removed in a future release, so we encourage you to update your source code to reference the header files in their new locations.

For existing applications, we provide a tool to automatically update your source files. It is a simple batch file for editing the Inventor #include statements in your source.

Using the conversion tool to update your source code

On Windows

1. Back up your project.

Since the tool will edit your source files, it's a good idea to make a backup of them.

2. Launch the tool, specifying your project directory as the input argument.

From a command prompt:

> cd %OIVHOME%\Compatibility
> remap.bat your_project_directory

-OR-

By drag-and-drop:

Create a shortcut to %OIVHOME%\Compatibility\remap.bat on the desktop.
Drag your project directory onto the shortcut.

3. Test the results by rebuilding your application.

On UNIX

1. Back up your project.

Since the tool will edit your source files, it's a good idea to make a backup of them.

2. Launch the tool, specifying your project directory as the input argument.

From a command prompt:

$ cd $OIVHOME/Compatibility
$ remap your_project_directory

3. Test the results by rebuilding your application.


List of renamed/moved header files

Here is the list of header files that have been renamed or moved.
To find out the new name and/or location of any of these files, open the compatibility file and see its new contents.

<Inventor/Win/stereo/SoWin*.h>
<Inventor/Xt/stereo/SoXt*.h>
<Inventor/details/volumeRendering/*.h>
<Inventor/elements/volumeRendering/*.h>
<Inventor/nodes/volumeRendering/*.h>
<3Ddata/*.h>
<actions/*.h>
<dialog/*.h>
<fields/*.h>
<graph/*.h>
<misc/*.h>
<nodes/*.h>
<plot/*.h>
<view/*.h>
<PbBasic.h>
<Inventor/nodes/TerrainViz/*.h>
<Inventor/TerrainViz/*.h>
<Inventor/actions/SolidViz/*.h>
<Inventor/nodes/SolidViz/*.h>
<Inventor/SolidViz/*.h>
<Inventor/nodes/FXViz/*.h>
<Inventor/FXViz/*.h>

Other 3.1 Compatibility Notes

Custom actions

If your application uses custom actions (i.e., actions you have written that are derived from one of the built-in Open Inventor actions), it may be necessary for you to enable the SoLightElement in the initClass of your custom action. This would only be necessary if the scene graph to be traversed contains any of the SoLight nodes (e.g., SoDirectionalLight). For example, you would add code similar to the following to your custom action:

#include <Inventor/elements/SoLightElement.h>
.
.
.
SO_ENABLE(yourAction, SoLightElement);

If you do not make this change, the only consequence is that you will see an Open Inventor debug warning. It is merely a warning; your program will still work correctly.

SbTime [Win32 only]

The method SbTime::max() was changed to maxTime() because Visual C++ insists that max is a macro. Programs that use the max() method need to change it to maxTime().

Prior Releases

This section provides compatibility information for prior releases.

IVF Required Changes

You need to read this chapter only if you are porting your application from Open Inventor 2.5 (or earlier) to Open Inventor 3.1.

Modifying 2.5 IVF Applications

Applications using IVF version 2.5 (or earlier) need to make a small change in the C<app>View::OnDestroy() method. The call to IvfOnDestroy() must come before the CView::OnDestroy().

 void C<app>View::OnDestroy() 
 { 
   IvfOnDestroy(); // This call must be before the CView::OnDestroy(); 
   CView::OnDestroy(); 
 }
Modifying 2.2.1 IVF Applications

Applications using IVF version 2.2.1 (or earlier) may need to make a small change to avoid an "access violation" error at program shutdown. This is a result of fixing a bug in IVF which, under some conditions, prevented complete shutdown of embedded OLE server applications.

The change is a modification to one line of the PreTranslateMessage method in your applications App class. It should look like this:

// PreTranslateMessage - 
// thread messages are forwarded to the document for handling. 
// 
BOOL CMyApp::PreTranslateMessage( MSG *pMsg ) 
{ 
  CIvfDocument *pDoc = IvfGetDocument(); 
     
  if (!(pDoc && pDoc->IvfPreTranslateMessage(pMsg))) 
  // ^^^^^^^^ ^ <- Added code 
     
  return CWinApp::PreTranslateMessage(pMsg); 
     
  return(TRUE); 
}

The new IVF AppWizard generates correct code for this method.

Modifying 2.1.2 IVF Applications

Applications using IVF version 2.1.2 (or earlier) must be modified to work with version 2.2 or higher because of IVF changes required to support new features in version 2.2. The changes should be minor for almost all applications. All the standard IVF example programs have been modified to work with version 2.2 and you can compare this code to the code that came with version 2.1.2.

NOTE: If your application implements a feature that is now supported directly in IVF, for example if you implemented printing support based on the PrintA example program, your application will continue to work as long as you make the minor required change described below.

Changes:

The main change required is to move PreTranslateMessage from the mainframe class (window message handler) to the application class (thread message handler). Here's how to change this:

  • mainfrm.h - remove the following: 
    BOOL PreTranslateMessage(MSG* pMsg);
  • mainfrm.cpp - remove the following:      
    BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
    { 
     if(IvfPreTranslateMessage(pMsg)) 
       return TRUE; 
     return IVF_FRAME_TYPE::PreTranslateMessage(pMsg); 
    }
  • <app>.h - add the following: 
    BOOL PreTranslateMessage(MSG *pMsg);
  • <app>.cpp - add the following: 
    // PreTranslateMessage // Thread messages are forwarded to the document for handling. // BOOL <app>::PreTranslateMessage(MSG *pMsg) { CIvfDocument *pDoc = IvfGetDocument(); if (!pDoc->IvfPreTranslateMessage(pMsg)) return CWinApp::PreTranslateMessage(pMsg); return(TRUE); }

The other thing to bear in mind is that there are two IvfSetSceneGraph's in the following classes:

<appDoc> : public CDocument, public CIvfDocument

This sets the Document scenegraph, which is contained as a data member within the class. Normally, this is the scenegraph you set/replace. You can retrieve this with IvfGetDocSceneGraph();

<appView> : public CView, public CIvfComponent

This sets the Viewer's scenegraph. The Document's scenegraph is added at the appropriate time underneath the viewer's scenegraph. Don't use this, unless you're doing something very specific.

NOTE: If you set the Inventor base viewer scenegraph (using m_pViewer->setSceneGraph(), you should override IvfComponent::IvfSetSceneGraph and use the m_pViewer version throughout.

WWWInline Support

If you need WWWInline support, there is an issue involving relative URL path resolution. You will have to add the following to your document class:

  • <appDoc>.h 
    virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
  • <appDoc>.cpp 
    BOOL CSceneViewerDoc::OnOpenDocument(LPCTSTR lpszPathName) 
    { 
      // 
      // beg OLE 
      // these lines needed only if an OLE server doc class or 
      // derivative 
      // 
      if (!lpszPathName) 
        return(COleServerDoc::OnOpenDocument(lpszPathName)); 
        // ole sends empty name for archive handling 
     // 
     // end OLE 
     // 
     return(IvfOnOpenDocumentMessage(lpszPathName)); 
     // IvfOnOpenDocumentMessage will convert the 
     // pathname to a url and establish a basepath 
    }

If you want import files to handle inlines, you'll need to add the following:

  • <appDoc>.h 
    (in AFX_MSG section)
    afx_msg void OnFileImport();
    afx_msg void OnUpdateFileImport(CCmdUI* pCmdUI);
    
  • <appDoc>.cpp (in MESSAGEMAP section)
    ON_COMMAND(ID_FILE_IMPORT, OnFileImport)
    ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT, OnUpdateFileImport)
    (in body - add these functions) void CSceneViewerDoc::OnFileImport() { CSceneViewerApp *t_app = (CSceneViewerApp *)::AfxGetApp(); m_eOpenType = IVFDOC_OPEN_IMPORT; // modifies behavior of IvfOnOpenDocumentMessage t_app->OnFileOpen(); // let the app prompt for a filename m_eOpenType = IVFDOC_OPEN_NORMAL; // next open document is normal } void CSceneViewerDoc::OnUpdateFileImport(CCmdUI *pCmdUI) { pCmdUI->Enable(m_pSceneRoot != NULL); }