Announcing the Release of SMTK 22.02
We are pleased to announce the release of SMTK. 22.02. Its major improvements include the following:
Improvements to the SMTK’s Attribute Resource
The Ability to Control Category Inheritance in Attribute Definitions
Previously, a derived attribute definition would inherit all of the categories related to its base definition. Any categories imposed by the derived definition would be or’d with this set to form the definition’s final category constraints. The result was that the derived definition would be more permissive than its base definition. But what if you wanted the derived definition to be more restrictive? By adding the ability to prevent the derived definition from inheriting its base definition’s category constraints, this is now possible!
Extending itemAtPath() to Work with GroupItems
You can now refer to sub-groups in a GroupItem using item paths. For example, consider an Attribute composed of a GroupItem gitem which contains three subgroups each composed of a StringItem named sitem and a DoubleItem named ditem. To fetch the ditem from the second subgroup you can now pass the following string to the Attribute’s itemAtPath() method: “/gitem/1/ditem”.
User Interface Enhancements
New Widget for ReferenceItems
We have added a new qtReferenceTree item-widget that your attribute views can use as an alternative to the existing qtReferenceItem item-widget.
New Operations Toolbox Interface
The original operation panel was mainly used as a debugging tool by developers and was mainly utilitarian in nature. In 22.02, we have added a more user friendly interface to SMTK’s operations. The new widget provides a searchable list of operations. The list can be filtered by any of the following:
- Search text input from the user
- A whitelist of operations (passed to the view-widget’s model)
- How applicable the current SMTK selection is to the operation’s associations.
Operations appear as a grid of push-buttons with icons and the text of the operation’s label. If an operation can be run without editing any parameters (other than associations, which are configured using the SMTK selection), then clicking a push-button will run the operation immediately. Long-clicking a push-button will emit a signal that the parameter-editor panel below accepts to allow further user configuration before running.
You can activate the search bar for operations (i.e., switch the keyboard focus to the search bar) at any time by pressing Ctrl+Space
(or Cmd+Space
on macos). While the search bar has focus, pressing the Return
key will emit a signal to edit the parameters of the first (top, left-most) push button in the grid.
When an operation is selected in the toolbox, the user is presented with a UI in the Tool Parameters section for changing the operation parameters.
Improved 3D Widgets
There have been several improvements to SMTK’s 3D Widgets which include:
- pqSMTKPlaneItemWidget no longer requires you specify geometry to calculate its bounds. Instead it calculates its size based on the 3D View.
- A new pqSMTKFrameItemWidget has been added for accepting orthonormal, right-handed coordinate frames from users. It requires 4 double-valued items, each holding a 3-vector: an origin, an x-axis, a y-axis, and a z-axis.
- A new pqSMTKSliceItemWidget has been added for displaying crinkle-slices of data. This widget uses the new ParaView plane widget and adds ParaView filters to render crinkle- slices of a user-controlled subset of components. This widget uses the new qtReferenceTree.
The image below show some of the new widgets in action.
Supporting Resource and Component Properties in XML
Prior to SMTK 22.02, you could only specify Resource::Properties using the Attribute JSON representation. Now template designers can add Properties to both Attribute Resources and Attributes via the attribute XML Format.
Graph Resource Changes
Graph resources now store arcs using weak pointers for improved robustness and provide a template parameter to allow nodes to be indexed by type, name, etc.
View Related Changes
Improving Performance
We continue to improve UI performances with respect to SMTK’s Descriptive Phrase Mechanism. Previously, handling new persistent objects forced the Component Phrase Model to rebuild itself which can be very expensive for large models. The new approach identifies those Resource Components that would be part of the Phrase Model’s root top phrases and properly inserts them in sorted order resulting in a performance increase.
Badge Improvements
There is now a “lock” badge that indicates when an SMTK resource is locked by an operation. No visual distinction is made between read or write locking. You may use this badge in any view that displays resource phrases.
In addition, the membership badge has been extended to be selective; it is now possible to specify whether the badge should apply to objects, resources, or components; whether they must have geometry or not; and whether components match a query-filter.
Other Improvements
- We’ve added a new Python class, smtk.attribute_builder.AttributeBuilder, to support Python operation tracing.
- We’ve have also added support for building SMTK against ParaView 5.9/5.10 in addition to ParaView Master.
For more information, please see the release notes which can be found here.