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.
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.comFrom Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.comNOTE: 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.
Open Inventor
- SbThreadSpinlock
Open Inventor
- SoShaderProgram::vertexProgramTwoSide
DirectViz
- SoDirectVizManager::adaptiveOversampling
- SoDirectVizManager::softShadows
- SoDirectVizManager::fuzzyLights
- SoDirectVizManager::glossySurfaces
VolumeViz
- SoVolumeRenderingQuality::colorInterpolation
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 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.
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.
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.comFrom Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.comNOTE: 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.
Open Inventor
- SoEllipsoidDragger
- SoMarker
- SoGeoProjection
- SoProjection
LDM
- SoLDMTopoOctree
Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.
Open Inventor
- SoDragger::enableCallbacks
- SoTabPlaneDragger::scaleUniform
- SoTabPlaneDragger::twoSidedLighting
- SoTabPlaneDragger::lineWidth
VolumeViz
- SoVolumeData::data
- SoVolumeRender::fixedNumSlicesInRoi
- SoVolumeRender::projectedTileSubdivision
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.
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.
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.
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.
- Windows: InvGui710.dll
- Unix/Linux: libInventorGui.so
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.
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.comFrom Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.comNOTE: 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.
Open Inventor
- SoGeometryShader
ReservoirViz
- (All ReservoirViz nodes are new.)
ScaleViz
- SoClusterGateway
- SoDepthComposerParams
- SoRemoteParams
- SoScaleVizParameters
- SoTileComposerParams
VolumeViz
- SoSlice(abstract)
- SoUniformGridClipping
- SoVolumeClippingGroup
- SoVolumeShape
LDM
- SoDataSet
- SoLDMResourceParameters
- SoMultiDataSeparator
- SoTimeHints
Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.
Open Inventor
- SoShaderProgram::geometryInputType
- SoShaderProgram::geometryOutputType
- SoTabBoxDragger::resizeHandles
- SoTabPlaneDragger::resizeHandles
- SoVRMLGroup::directVizCaching
ScaleViz
- SoFlatScreen::cameraMode
- SoScreen::cameraMode
VolumeViz
- SoVolumeRender::lowResMode
- SoVolumeRender::lowScreenResolutionScale
- SoVolumeRender::useEarlyZ
- SoVolumeRender::numEarlyZPasses
- SoVolumeRender::subdivideTile
- SoVolumeRender::gpuVertexGen
- SoVolumeRenderingQuality::jittering
- SoVolumeRenderingQuality::cubicInterpolation
- SoVolumeRenderingQuality::gradientThreshold
- SoVolumeRenderingQuality::edgeColoring;
- SoVolumeRenderingQuality::edgeColor
- SoVolumeRenderingQuality::edgeThreshold
- SoVolumeRenderingQuality::boundaryOpacity
- SoVolumeRenderingQuality::boundaryOpacityIntensity
- SoVolumeRenderingQuality::boundaryOpacityThreshold
- SoVolumeRenderingQuality::edgeDetect2D
- SoVolumeRenderingQuality::edgeDetect2DInnerThreshold
- SoVolumeRenderingQuality::edgeDetect2DOuterThreshold
- SoVolumeRenderingQuality::gradientQuality
- SoVolumeRenderingQuality::lightingModel
- SoVolumeShader::forVolumeOnly
LDM
- SoTransferFunction::minValue
- SoTransferFunction::maxValue
- SoTransferFunction::fauxShadingLength
- SoTransferFunction::fauxShadingStrength
- SoTransferFunction::fauxShadingDarkenThreshold
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.
Open Inventor
- SoTexture::HW_Feature (new values
HW_COMPRESSION_LATC,
HW_COMPRESSION_RGTC)- SoTexture::InternalFormat (new values
COMPRESSED_LUMINANCE_LATC1,
COMPRESSED_SIGNED_LUMINANCE_LATC1,
COMPRESSED_LUMINANCE_ALPHA_LATC2,
COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2,
COMPRESSED_RED_RGTC1,
COMPRESSED_SIGNED_RED_RGTC1,
COMPRESSED_RED_GREEN_RGTC2,
COMPRESSED_SIGNED_RED_GREEN_RGTC2)VolumeViz
- SoVolumeShape::Interpolation (new value MULTISAMPLE_12)
(SoVolumeShape is a base class. This field and its new value are inherited by SoVolumeRender, SoVolumeSkin, SoOrthoSlice and SoObliqueSlice.)
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).
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.
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_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.
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.
The support of VolumePro boards from TeraRecon has been dropped.
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.
- AIX Xlc: RTTI is not enabled by default, need to add -qrtti=all on compile line
- Solaris CC: RTTI is set by default
- HP-UX: RTTI is set by default
- IRIX CC: RTTI is set by default
- Linux gcc: RTTI is set by default
- Windows VC++ 7.x: RTTI can be set through /GR option (Properties/C++/Language/Enable Run-Time Type Info). This change is optional.
- Windows VC++ 8.x: RTTI is set by default
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.
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.
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.
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.comFrom Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.comNOTE: 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.
ScaleViz
- SoDepthComposer (for ScaleViz configuration file only)
- SoTileComposer (for ScaleViz configuration file only)
DirectViz
- SoDirectVizEnvironmentShader
- SoDirectVizGeneralShader
- SoDirectVizShader
Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.
Open Inventor
- SoMaterial::receiveShadow
- SoMaterial::reflectiveColor
- SoSeparator::directVizCaching
- SoSeparator::renderUnitId
- SoVRMLGroup::renderUnitId
- SoVRMLMaterial::receiveShadow
- SoVRMLMaterial::reflectiveColor
ScaleViz
- SoMasterConfig::port
- SoMasterConfig::networkSpeed
- SoMasterConfig::imageQuality
- SoMasterConfig::lossyMode
- SoMasterConfig::remotePathMapping
- SoScreen::upperRight
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.
Open Inventor
- SoFont::RenderStyle (new value TEXTURE_DELAYED)
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 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.
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.
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.
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.
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.comFrom Europe, Middle East, Africa, Asia, and Australasia:
3d_license_europe@mc.comNOTE: 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.
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.
Open Inventor
- SoColorMap
- SoIndexedMarkerSet
- SoIndexedPointSet
- SoIndexedTexture2
- SoNurbsBoundary
- SoNurbsGroup
- SoRenderToTextureProperty
- SoTextProperty
- SoVertexShaderParameter (and derived classes)
ScaleViz
- SoMasterConfig
VolumeViz
- SoDataCompositor
- SoDataRange
- SoGeometryPriority
- SoVolumeIsosurface
- SoVolumeRenderingQuality
- SoVolumeShader
Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.
Open Inventor
- SoNode::boundingBoxIgnoring
- SoNurbsProfile::boundary
- SoNurbsProperty::tessellationAngle
- SoNurbsProperty::tessellationDistance
- SoNurbsProperty::tessellationType
- SoTexture::internalFormat
- SoTexture::useAutoMipmap
- SoTexture2::renderToTextureProperty
- SoTextureCubeMap::renderToTextureProperty
- SoTextureCubeMap::HDRIExposure
- SoTextureCoordinate2::forceSending
- SoTextureCoordinate3::forceSending
- SoUniformShaderParameter::shaderType
MeshViz
- PoLinearValueLegend::lowerUpperBoxes
- PoMesh::creaseAngle
- PoNonLinearValueLegend3::lowerUpperBoxes
ScaleViz
(These classes were formerly part of MultiPipe.)
- SoBaseScreen::hostname
- SoFlatScreen::channelOrigin
- SoFlatScreen::channelSize
- SoFlatScreen::softEdgeOverlap
- SoFlatScreen::tileOrigin
- SoFlatScreen::tileSize
VolumeViz
- SoObliqueSlice::bumpScale
- SoObliqueSlice::composition
- SoObliqueSlice::enableBumpMapping
- SoOrthoSlice::bumpScale
- SoOrthoSlice::composition (added in OIV 5.0.3)
- SoOrthoSlice::enableBumpMapping
- SoTransferFunction::actualColorMap
- SoTransferFunction::transferFunctionId
- SoVolumeData::texturePrecision
- SoVolumeData::useExtendedData
- SoVolumeData::volumeDataId
- SoVolumeSkin::alphaUse
- SoVolumeSkin::bumpScale
- SoVolumeSkin::composition
- SoVolumeSkin::enableBumpMapping
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.
Open Inventor
- SoText2::Justification (new value INHERITED)
- SoText3::Justification (new value INHERITED)
- SoAsciiText::Justification (new value INHERITED)
- SoAnnoText3::Justification (new value INHERITED)
- SoTexture::FileType (new values DDS, HDRI)
- SoTransparencyType::TransparencyType (new value DELAYED_SORTED_LAYERS_BLEND)
VolumeViz
- SoObliqueSlice::Interpolation (new value TRILINEAR)
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).
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.
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.
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=0Programmatically, you can useSoDB::prioritizeChildrenCaching(FALSE);
- If the requested font is not available, when running a debug build, you will now see a warning message similar to the following:
Inventor error in SoFontServer::checkFontPath(): Couldn't find requested font (Courier-Bold : Regular), replacing with (Times: Regular)- Two methods in SoFont were renamed to reflect our current corporate identity:
enableMCSJapaneseSF() replaces enableTGSJapaneseSF(). isMCSJapaneseSFEnabled() replaces isTGSJapaneseSFEnabled()For compatibility, the older methods are still available. However, they are declared SoINTERNAL public, meaning that a) they do not appear in the reference manual, and b) you are highly encouraged to switch to using the new methods.
- [UNIX] OIV_PSFONT_PATH, an environment variable which was used for specifying a list of directories to search for PostScript files is now deprecated. The new environment variable to use is OIV_FONT_PATH.
- ".fon" format font files are no longer supported.
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);
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).
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.
- A ScaleViz license is now required instead of a MultiPipe license. For example,
License ScaleViz 6.0 1-Jan-0 0 abcd1234efgh "SDK-Sample" 1234- For compatibility, the header files SoBaseScreen.h, SoFlatScreen.h, and SoScreen.h have been kept in $OIVHOME/include/Inventor/MP/Xt. However, they simply include the ScaleViz header files of the same name which are in $OIVHOME/include/ScaleViz/nodes.
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.
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.
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.
- With Visual Studio 6.0 and Visual Studio 2003, InvQt600.DLL in the program directory was built with Qt 3.1.2. This is unchanged from Open Inventor 5.0.
- With Visual Studio 6.0, Qt 4.x is not supported.
- With Visual Studio 2005, InvQt600.DLL in the program directory was built with Qt 3.3.5.
- Qt 4.x: InvQt600Builder
The following libs, DLLs, and applications have not been ported to Qt 4.x: IvTune(D), DialogVizQt(D), and IvTuneViewer(D).
If InvQt600Builder.exe detects that you are trying to rebuild using Qt 4.x, it will display the following message:
The libs, DLLs, and PDBs for IvTune(D) and DialogVizQt(D) will not be rebuilt for Qt Version 4.x. Since the application IvTuneViewer(D) uses IvTune(D), it also will not be rebuilt. You may want to copy them to another directory and delete them from the lib and Program directories before continuing. Do you want to continue?- Qt 4.x: Building Open Inventor Applications with Qt 4.x
When building an Open Inventor application that uses Qt 4.x, you must set the compile directive QT3_SUPPORT.
To see what include and library paths need to be set, refer to one of the Qt 4.0 projects/makefiles supplied in:
src/Inventor/examples/Qt4- Qt 4.x: Qt 4.x Minor Issues
You may notice the following minor problems which are due to changes (or bugs) in Qt. They are not Open Inventor bugs.
- If you resize a viewer small enough in the vertical direction, the right thumbwheel will overwrite the viewer buttons.
- For very simple applications, such as our QtReadFile example, because of a bug in Qt, a debug assertion error occurs.
NOTE: This bug is reported as fixed in Qt 4.1.2.
You may notice some new macros in the header files. For example:
INVENTOR_API friend SbVec3i32 operator *(const SbVec3i32 &v, int d);orclass MESHVIZ_API PoMeshVizThese 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.
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.
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:
- The contact addresses for general inquiries, hotline, and password requests have changed. Note also that the geographic regions served by the US and European offices have changed. Asia is now being served by the European support team. See the Support topic for the current contact info.
- The command-line program used for obtaining your computer ID has been renamed from TGScomputerID to MCScomputerID.
- [Win32] The default installation directory has changed. It is now
C:\Program Files\Mercury\OIV5.0
Please read this entire section. Here is a list of the changes most likely to affect developers (details following):
- [Win32] SoQt libs are pre-built with Qt 3.1.2 only
- DataViz extension has been renamed MeshViz
- As usual you will need new license strings
- Additional DLLs (third party libs) must be redistributed
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.
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.comFrom Europe, Middle East, Africa, and Asia:
3d_license_europe@mc.comNOTE: 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.
- Red Hat Linux 7.1, 7.2 and 7.3 (32-bit)
- Red Hat Linux Advanced Workstation 2.1 (64-bit)
- MKS Toolkit
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.
- In previous releases, some of the demos programs and data files were packaged separately, which meant you might have to download multiple files (and could possibly miss something you needed). Now everything is included in a single file, guaranteeing that you have all files you need.
- [Linux] The Open Inventor SDK is now distributed as an RPM (Red Hat Package Manager file). This is a more powerful and convenient way of handling software distribution and installation on Linux systems.
See the MeshViz release notes for details.
Open Inventor
- SoExtrusion
- SoFullSceneAntialiasing
- SoTexture (parent of SoTexture2, SoTexture3, etc.)
- SoTextureCombiner
- SoTextureCoordinateNormalMap
- SoTextureCoordinateObject
- SoTextureCoordinateReflectionMap
- SoTextureCubeMap
- SoTextureMatrix
- SoTransparencyType
- SoVRML* (a large number of X3D nodes)
MeshViz
- PoIntervalCellFilter
- PoMesh3DVecCrossSection
Open Inventor files that contain any of these new nodes will not be readable by older versions of Open Inventor.
Open Inventor
- SoFont::renderStyle
- SoShapeHints::useVBO
- SoSeparator::fastEditing
- SoTexture::enableBorder* (see note)
- SoTexture::borderColor* (see note)
- SoTexture::maxAnisotropy* (see note)
- SoTexture::minFilter* (see note)
- SoTexture::maxFilter* (see note)
MeshViz
- PoMesh::valuesIndexForCellFilter
VolumeViz
- SoObliqueSlice::useRGBA
- SoOrthoSlice::useRGBA
- SoVolumeSkin::useRGBA
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.
Open Inventor
- SoTexture::Model (new values ADD, COMBINE)
- SoTexture::Wrap (new values CLAMP_TO_BORDER, CLAMP_TO_EDGE, MIRRORED_REPEAT)
VolumeViz
- SoVolumeRender::Composition (new value MIN_INTENSITY)
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).
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.
- Nodes whose action is not implemented are included here for completeness.
- NI indicates that the field is implemented for reading and writing but that there is no action implemented for it.
Appearance
fillProperties NI
lineProperties
AudioClip
pauseTime NI
resumeTime NI
elapsedTime (eventOut) NI
isPaused (eventOut) NIBackground (action not implemented)
bindTime (eventOut)Box
solidCollision (action partially implemented for this node)
collide NI (VRML97, see note)
enabled NI (VRML97, see note)
isActive (eventOut) NINOTE: 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
solidCylinder
solidCylinderSensor (not implemented)
description
isOver (eventOut)ElevationGrid
solidExtrusion
solidFog (not implemented)
bindTime (eventOut)
Inline
load NILOD
level (VRML97, see note)
children (X3D, see note)
bboxCenter
bboxSizeNOTE: 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) NINavigationInfo (action partially implemented for this node)
transitionType NI
bindTime (eventOut) NIPlaneSensor
description
isOver (eventOut) NIProximitySensor
centerOfRotation_changed (eventOut) NISwitch
choice (VRML97, see note)
children (X3D, see note)
bboxCenter
bboxSizeNOTE: 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
solidSphereSensor (not implemented)
description
isOver (eventOut)Text
solid NITimeSensor
pauseTime NI
resumeTime NI
elapsedTime (eventOut)
isPaused NI (eventOut)TouchSensor
description
isOver (eventOut) NIViewpoint
centerOfRotation NI
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 (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 is obsolete. Use instead SoOffscreenRenderer, which has incorporated the functionality of SoBigImageRenderer.
In previous versions of TerrainViz, normals were activated in the terrain model when the creaseAngle of the current SoShapeHints was different from 0. Now they are activated and deactivated using the new normals field of SoTVizRender, which can have a value of TRUE or FALSE. TRUE is the default. For compatibility with the older behavior, use environment variable TVIZ_COMPAT_20.
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).
The ivExtInfo utility program is no longer distributed because its functionality has been incorporated into the new and improved version of OGLInfo.
The following are miscellaneous minor changes (since OIV 4.0.6) that no one will likely notice:
- The classes SoRGBImageRW and SoSGIImageRW were replaced by a single new class: SoSGIRGBImageRW.
- The WriteCapability enums of SoRasterImageRW changed:
WRITE_SCANTILE => WRITE_SCANLINES
WRITE_ANYTILE => WRITE_FULL_IMAGE.
- Changes to SoFullSceneAntialiasing:
The filters field was renamed to filter.
The enum value TEXTS (of the Filter enum) was renamed to TEXT.
- The select method of SoExtSelection that uses an SbVec3f for the lasso coordinates argument has been deprecated. For new development, you should use the newly added select method that uses an SbVec2f for the lasso coordinates argument.
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 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:
- US:
3d_license@mc.com
- Europe:
3d_license_europe@mc.com
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).
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.
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
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)
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
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.
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.
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.
See the MultiPipe release notes for details.
- MultiPipe now uses the Open Inventor file format for its configuration file. The old format is no longer supported.
- The MultiPipe "inside" mode has been removed.
See the TerrainViz release notes for details.
- The default axis for elevation is now Z instead of Y.
- In SoTVizRender, the two fields triangleSizeAttenuation and distanceAttenuation are now obsolete because they are not used by the new engine.
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_directory3. Test the results by rebuilding your application.
List of renamed/moved header filesHere 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>
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().
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 CIvfDocumentThis 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); }