This release brings multiple changes in the SDK, various new features, and fixes of known and reported issues.
This release also includes the update of SAMSON SDK to C++17.
The version of OpenGL used in SAMSON has been increased to 4.1. Now you can include SBGRenderOpenGLFunctions.hpp which will include the used version of OpenGL and you can use SB_OPENGL_FUNCTIONS which automatically expands to the required one, e.g. to QOpenGLFunctions_4_1_Core.
Core library group
Main changes:
New classes:
Improvements in the following classes:
DataModel library group
New libraries:
- Assistant library - introduces base classes for assistants (e.g., AI assistants). See SBDAssistant.
- ColorScheme library - color schemes were moved from the Color library.
DataGraph library
SBDDataGraphNode
- New SBNode::hasNode virtual function to easily check whether a node has other nodes based on their node type or a node predicate. This function is overloaded in children classes were it is necessary.
- Add more convenience functions to check if a node is of a certain type (and corresponding node predicates):
- Improvements in SBDDataGraphNodeMaterial usage, including new functions:
- New function SBNode::getNumberOfCoarseGrainedAtoms due to the addition of coarse-grained atoms.
SBDDataGraphNodeColorScheme
A generalization of color schemes - now all color schemes can have a color palette. New functions:
SBDDataGraphNodeMaterial
SBDDataGraphNodeMaterial now has general material properties: metallic, roughness, transmission, emission, etc. Check out SBDDataGraphNodeMaterial to see the new functionality.
SBDDataGraphNodeSelector
SBDDataGraphNodeSelector can now return its corresponding Node Specification Language strings via SBNodeSelector::getNSLExpression, if such expressions can be formulated.
Document library
New libraries:
- SBDPalette - color palettes moved from the Color library.
New classes:
SBDDocument
You can now get from SBDDocument the selected nodes or their number by type or using a node predicate using these additional functions:
You can check if the document is saved:
SBDCamera
Add new camera properties:
Quantity library
Updates in constants:
- Updated the definition of constants (see SBDTypeQuantityConstantDefines and SBDTypeQuantityConstant header files).
- Updated values for physical constants in correspondence to 2018 CODATA internationally recommended values of the Fundamental Physical Constants.
- Now conversions are defined explicitly through the combinations of the defined constants and not through the precomputed values of their relations.
New convenience quantities, e.g. SBQuantity::power, SBQuantity::inversePower, SBQuantity::megawatt, etc.
Type library
Color conversion functions were moved to SBDTypeColor.
New classes:
Add more constructors, operators, and functions in various classes, e.g.:
SBDTypeSpatialTransform now includes scale (SBSpatialTransform::scale) which can be accessed via SBSpatialTransform::getE5, SBSpatialTransform::setE5.
New convenience types were defined:
- SBIAEnergy3
- SBLengthMass33, SBInverseLengthInverseMass33
- SBSquareLength3, SBAngularVelocity3, SBAngularAcceleration3, SBMass3, SBInverseMass3, SBLengthMass3, SBInverseLengthInverseMass3, SBMomentOfInertia3, SBInverseMomentOfInertia3
VisualPreset library
SBDVisualPreset can now define selections using a selection filter string instead of SBDDataGraphNodeSelector.
Facade library group
New functions (the list is not full):
Renamed SAMSON::getColorPaletteFromUser into SAMSON::getPaletteFromUser.
GUI library group
New libraries:
Better handling of docked windows (e.g., added new class SBGWindowDock, etc.).
Removed the RenderingPass enum from SBGEditor in favor of unification with the RenderingPass enum from SBDDataGraphNode - simply replace by SBNode::RenderingPass.
IO library group
Changes in attributed of the following functions (parameters are now provided via std::unordered_map<std::string, SBValue> instead of using SBList<std::string>):
New functions:
- SBImporter::canImportFromFile - a virtual function that can be overloaded in importers which returns whether the importer can import the specified file corresponding to its format.
Modeling library group
- [Breaking change] Removed SBStructuralParticle base class and SBPseudoAtom class, leaving only SBMStructuralModelNodeAtom. Removed SBPseudoBond class leaving only SBMStructuralModelNodeBond.
- SBMDynamicalModelEvent::StructuralParticleAddBegin, SBMDynamicalModelEvent::StructuralParticleAddEnd, SBMDynamicalModelEvent::StructuralParticleRemoveBegin, SBMDynamicalModelEvent::StructuralParticleRemoveEnd, event types were renamed into SBMDynamicalModelEvent::AtomAddBegin, SBMDynamicalModelEvent::AtomAddEnd, SBMDynamicalModelEvent::AtomRemoveBegin, SBMDynamicalModelEvent::AtomRemoveEnd, accordingly.
- SBStructuralEvent::AtomPositionChanged and SBStructuralEvent::AtomMassChanged instead of SBStructuralEvent::ParticlePositionChanged and SBStructuralEvent::ParticleMassChanged, accordingly.
- The short name SBDynamicalParticle for SBMDynamicalModelNodeParticle has been modified into SBParticle.
- Functions in SBMStructuralModelPath, SBMStructuralModelConformation, SBMDynamicalModelParticleSystem that had StructuralParticle or Particle in their name were renamed to have Atom in their name, for example, SBPath::getStructuralParticleIndexer is now SBPath::getAtomIndexer and returns SBPointerIndexer<SBAtom> instead of SBPointerIndexer<SBStructuralParticle>.
- Functions in SBMStructuralModelGrid, SBMStructuralModelPath, SBMStructuralModelConformation, SBSNeighborSearchParticleSystem, SBSNeighborSearchParticleSystemPBC, SBSNeighborSearchParticleSystemGrid, SBSNeighborSearchParticleSystemGridPBC that were operating with SBStructuralParticle are now operating with SBMStructuralModelNodeAtom.
- New type of SBMElement and SBMStructuralModelNodeAtom: coarse-grained:
- New functions SBElement::getCovalentRadius, SBMElementTable::getCovalentRadius, SBAtom::getCovalentRadius that return the covalent radius for a specific bond type.
- New functions in SBMStructuralModel:
- New functions in SBMStructuralModelNodeResidue:
- New functions in SBMStructuralModelNodeGroup:
- Changes in SBMStructuralModelNode:
- Changes in SBMStructuralModelNodeAtom:
- [Breaking change] Renamed SBAtom::Hybridization::None to SBAtom::Hybridization::NoHybridization
- The mobility flag has been moved from SBMStructuralModelNode to SBMStructuralModelNodeAtom and is now called the fixed flag and the previous name with the corresponding functions in SBMStructuralModelNodeAtom will be deprecated in one of the future releases. The following functions are marked as deprecated:
- New functions to get and set positions and coordinates. These functions give the possibility to obtain the current position, and set the position based on a vector of atom positions. New node predicates:
- SBAtom::GetX, SBAtom::GetY, SBAtom::GetZ
- SBAtom::GetPositions
- SBAtom::IsBeyond
- SBAtom::IsWithin
- New function SBAtom::getConnectedComponent to get the connected component up to the specified number of atoms.
- New convenience functions:
- New functions related to coarse-graining:
- New function SBAtom::getColor
- New events in SBMStructuralModelEvent:
- Visual models and meshes can now be defined using the arrays of the following new classes: SBMVisualModelCylinderArray, SBMVisualModelLineArray, SBMVisualModelSphereArray, SBMVisualModelTriangleArray, SBMVisualModelTubeArray. Added functions that return these arrays from visual models. This is, for example, used for path-tracing of visual models using Cycles.