New Features in Coin v4.0.0

Kongsberg Oil & Gas Technologies AS ended Coin as a commercial product and re-licensed it under the BSD 3-clause license as a service to the user community.

The build system has been migrated from GNU Autotools to CMake.

This is a brief summary of the new features in Coin v4.0.0:

- Support for UNICODE text (starting with Coin 4.0 strings are UTF-8 encoded).
- View volume and projectors now support reverse perspective camera settings
- New SoReversePerspectiveCamera node added
- New getRadius method added to SoRayPickAction
- New virtual method getPickedPointForStart added to SoDragger to allow dragging of (partially) covered objects by derived draggers
- New greater than and less than operators added to SbString
- Implemented SoTextureCoordinateObject for linear texture functions
- New SoAlphaTest node added
- Support for GLSL/ARB shaders has been added to SoShaderStateMatrixParameter
- Support for linePatternScaleFactor in SoDrawStyle
- Support for newer compilers
- Support for DISABLE policy in SoSelection node
- API changes in SbMatrix, SoPickAction, SoEvent, SoSFTime, SbPList to improve conformance to Open Inventor 2.1 API
- Created public API for converting geo coordinates
- Auto-linking to the Coin library when using Microsoft Visual C++ compilers
- Updated expat sources to version 2.2.6
- Removed local Boost includes. Added configure option –with-boost
- Support for BitBucket and AppVeyor as continuous integration service providers

Bug fixes:

- Engine output referencing
- SoTextureCoordinatePlane rendering bug
- Memory leak during SoDB cleanup
- Memory leak in SoVertexAttribute
- Wrong vertical offset used in SoOffscreenRenderer
- Driver bug when allocating render-to-texture capable pbuffers from SoOffscreenRenderer
- Incorrect normal binding for 3DS import
- SoInteractionKit
- SoRayPickAction incorrect matrix info in getViewVolume
- SbTesselator triangulation errors
- SoToVRML2Action handling of NurbsCurve and IndexedNurbsCurve
- SoToVRML2Action handling TransformSeparator as Separator not Group
- SoVRMLTransform transformation bug in getTranslationSpaceMatrix
- SoVRMLExtrusion rendering
- Numerous minor and major issues detected with static code analysis
- Numerous documentation issues
- Camera location is updated during interaction in SoDragger
- Camera update handling in seek and spin modes
- Bounding box center calculation of SoIndexedShape derived components
- Intersection bounding box calculation between bounding box and view volume
- Allow deletion of SoDraggers in callbacks
- Crash in SoText2 when using non-integer font sizes
- Out of bounds access to array in SoSceneTextureCubeMap
- Numerical issues in computation of intersection between sphere and line
- Numerical issue in SbDPMatrix::multLineMatrix()
- Markers are disappearing when clipping planes are present
- Set of invalid VRML identifier characters extended with '(', ')', and '|'
- Replacement for OpenGL extensions string method, obsoleted since OpenGL version 3.0
- Output of scenes containing SoGroup or derived nodes in SoWriteAction
- Force setting color for all indices on TriangleStrips in SoMaterialBundle