This topic focuses on changes planned for SMTK. The current target is to have these changes in place by April 30, 2022.
Monthly Releases and New Versioning Scheme
Started in April 2021, there will be monthly releases of SMTK. The versioning scheme we will be using is YY.MM.P:
- YY - Year
- MM - Month
- P - Patch
The latest release of SMTK is 21.04.0.
Feature Development
SMTK Project Enhancements
SMTK Project provides the ability to group resources, operations, and custom UI enhancements to represent a user’s workflow. This will significantly reduce the amount of bookkeeping required by the end user and will result in a more productive user experience.
- Target Release of basic project support - SMTK/CMB 21.05
- Workflow Support
- Task Oriented View
- Basic Workflow Support
- Restructuring of CMB - Architecture so that Resource and 3D Views are framework components that can be controlled by Task Views and/or the Workflow itself.
Resource Enhancements
Graph Resource Enhancements
- Helpers for bidirectional arc editing to make node insertion/removal, dependency checking simpler.
- New exodus session that uses native model in place (no file copy)
Supporting Proxy Resources
- Provides the ability to use a local SMTK resource to “stand in” for a resource on a HPC machine or to a future resource that has yet to be created
Improving Solid Modeling/CAD Support within SMTK
The main focus of this effort will be on the OpenCASCADE Session that was prototyped in 2020.
- Creation and editing of simple shapes
- Lofting/sweeping/revolving (use case: trace curves from anatomical scan data in several planes, then loft/sweep/revolve to make a volume).
GUI Enhancements
ParaView Representation Changes
- Making use of ParaView’s upcoming CSS-based mapper:
- Per-block style (wireframe, surface, surf+edges).
- Markup for line/point style (tubed/sphered or plain), color, and width.
- Task-specific color-by mode (by associated attribute, by associated attribute count, by associated attributes of type X, by spatially-varying attribute cell/point data, by volume (two-sided rendering), by entity color).
- CSS classes based on links to/from rendered geometry (use cases: rendering attribute assignment, rendering items missing attributes, rendering different component types with different line/point styles).
- Side sets as cell/point-data arrays on primary geometry. This should improve model-size scalability.
- Well-tested instancing (handle composite data with per-block and/or per-cell scalars; handle selection of glyphs)
SMTK 3D Widget Enhancements
- Rework/simplify widgets? Andras Lasso (Slicer dev) claims to have abandoned VTK’s widget framework in favor of an approach that makes widgets much simpler. We need to investigate this and how it might work with PV’s client/server layer.
- Coordinate frame widget (translate, orient with respect to surface geometry, rotation with angle snapping).
- Crinkle-cut volume widgets (drag cut surface, draw selection on clip surface to select/deselect volume elements).
- Shape-select volumetric elements (use case: volumetric cell/node selection by box/sphere/etc. in aeva)
- Curve drawing/fitting (for lofting edges into a surface).
- Drawing on surfaces using a texture-atlas.
SMTK Qt View Enhancements
- New table-style view for attributes.
- Views that will control/influence 3D and Resource views content. This is required to support tasks in a Workflow.
Improved HPC Integration
- Formalize Jobs and Job Asset Tracking
- Integrate job info into ACE3P projects
- Integrate job results into ACE3P projects (post processing, local viz, remote viz, in situ viz)
- Extend ACE3P projects to support multiple-analysis pipelines
MRML Support
- Add slicer to superbuild
- Build ParaView and slicer with same VTK (probably slicer using ParaView’s VTK)
- MRML Import/Export Support
Helping and Expanding CMB/SMTK Developer and User Base
Updating Documentation
- Moving features described in release notes into reference documentation
Hands On Tutorials
- MinimalFEM example that provides an end to end walk through
- ACE3P examples targeted for the next ACE3P User Group Meeting
Software Process
- Support for M1 Macs
- Support for Qt6
- Improving Qt Testing Guidelines
Potential Development Not on Current Road Map
- Undo/redo via the bulletin-board/state-differentiation pattern.
- Improve UI testing to address:
- Intermittent failures caused by machine configuration.
- Better capture of intent when recording events.
- Identification of Qt widgets that is more robust to changes in layout/naming of parent widgets.
- Migration of aeva plugin functionality into SMTK core. A complication is that many of aeva’s features are tied to its internal model, which assumes that (1) model entities may be either “primary” or “reference,” and (2) global point/cell IDs exist on all geometry.
- Remote ParaView server support (and thus distributed-memory parallelism).
- Material library.
- Mesh generation.
- Extend existing netgen mesh generation from uniform, isotropic sizing to more general case.
- Extend expressions+evaluators to all resources, not just attribute.
- Extend SMTK queries to include a filter on the resource specifier.
- Job submission/status/analysis (UI and infrastructure). A generalized job submission and tracking system that supports (1) running client-local (desktop) executables, (2) running client-local (desktop) docker images, (3) queueing remote jobs on HPC machines, and (4) provisioning and queueing cloud-computing jobs. Support operations that start containers and communicate with them. Support offline jobs that run independent of the client applications.
- Make attribute items into resource components.
- Resource/Project Replicate operation – basically “Save As…”
- View-system changes:
- Custom item views.
- Per-view, session-specific visibility controls (hide/show all element blocks/side-sets).
- Replace the operation panel with multiple UI elements that applications may use independently: operation toolbox, toolbar buttons tied to operations, operation parameter-editor panel(s), menu-items.
- Conveniences to allow applications to attach behaviors to operations. Use cases:
- Hints provided by operations on how to modify the application’s selection, potentially overridden by user preference.
- Changes to visibility and camera settings after particular operations
- Changes to descriptive-phrase contents or child-expansion to bring relevant items into view.
- Template Editor – a GUI application for authoring and editing attribute templates
- Expansion of attribute template ItemBlock feature.
- Add support for arguments to tailor ItemBlock instances
- Add CategoryBlock feature